@CAT,P 1074-002-002.,///10000 @ASG,T TEMP.,///10000 @ELT,OI TEMP.1074-002-002,,,141131053441,000 )@@G@@**PF**@@@@= @@@@@@@@@@@[@]"@@@]FE@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@AA )@@G@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@W@@@@@@@@@@@@@@@@@@@AB )@@G@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@^@@@@@@@@@@@@@@@@@@@@@@@@@@ @@@@@@@@@@@@AC )@@G@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@AD )@@G@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@[@@@@@@AE )@@G@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@AF )@@G@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@AG )@@G@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@AH )@@G@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@AI )@@G@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@AJ )@@G@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@AK )@@G@@@@@@@]@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@AL )@@G@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@AM )@@G@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@E@@ AN )@@G@@TYPE-052 @@@@@@@K[@@@RID-43 @ @@@[@@@@@'@@@@W@CLR[SUTYPE-060 AO )@@G@@@@#@@@@K[@@@RID-115 @ @@@[@@@@^X@@@@W'CM[[SUTYPE-060 @@@@@@@K[@@@AP )@@G@@RID-116 @ @@@[@@@@@6@@@@-RCM#[SUTYPE-054 @@@@@@@K[@@@RID-16 AQ )@@G@@@ @@@[@@@@[=@@@@+HCM^[SUREAD-ME @@@@@@@K[@@@ @ @@@[@@@@@OAR )@@G@@@@@@<1C:%[SU@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@(A@@@@00:00:16.153 AS )@@G@@I/O: 00:00:23.914@D@]@@ CC/ER: 00:00:22.388 WAIT: 00:00:AT )@@G@@00.000+@@@[[@K@][[^@)ETPCDN^[PET C)'^@)^@)^@)^@)^@)^@)AS,AC4^@)^@)^[NE([AU )@@G@@ES)EL D([DDIDDIC8'^@)^@)A08A09AK9A*1A@,AC6+@@@@@@B@]@@ IMAGES READ: AV )@@G@@ 13 PAGES: 6@F@]@@ START: 09:17:08 JAN 24,1990 FIN: AW )@@G@@09:17:53 JAN 24,1990 _@@@@@_@@@@@_@@@@@_@@@@@_@@@@@_@@@@@_@@@@@_@@@@@AX )@@G@@_@@@@@_@@@@@_@@@@@_@@@@@_@@@@@_@@@@@_@@@@@_@@@@@_@@@@@_@@@@@_@@@@@_@@@@@AY )@@G@@_@@@@@_@@@@@_@@@@@_@@@@@_@@@@@_@@@@@_@@@@@_@@@@@_@@@@@_@@@@@_@@@@@_@@@@@AZ )@@G@@_@@@@@_@@@@@_@@@@@_@@@@@_@@@@@_@@@@@_@@@@@_@@@@@_@@@@@_@@@@@_@@@@@_@@@@@BA )@@G@@_@@@@@_@@@@@_@@@@@_@@@@@_@@@@@_@@@@@_@@@@@_@@@@@_@@@@@_@@@@@_@@@@@_@@@@@BB )@@G@@_@@@@@_@@@@@_@@@@@_@@@@@_@@@@@_@@@@@_@@@@@_@@@@@_@@@@@_@@@@@_@@@@@_@@@@@BC )@@G@@_@@@@@_@@@@@_@@@@@_@@@@@_@@@@@_@@@@@_@@@@@_@@@@@_@@@@@_@@@@@_@@@@@_@@@@@BD )@@G@@_@@@@@_@@@@@_@@@@@_@@@@@_@@@@@_@@@@@_@@@@@_@@@@@_@@@@@_@@@@@_@@@@@_@@@@@BE )@@G@@_@@@@@_@@@@@_@@@@@_@@@@@_@@@@@_@@@@@_@@@@@_@@@@@_@@@@@_@@@@@_@@@@@_@@@@@BF )@@G@@_@@@@@_@@@@@_@@@@@_@@@@@_@@@@@_@@@@@_@@@@@_@@@@@_@@@@@_@@@@@_@@@@@_@@@@@BG )@@G@@_@@@@@_@@@@@_@@@@@_@@@@@_@@@@@_@@@@@_@@@@@_@@@@@_@@@@@_@@@@@_@@@@@_@@@@@BH )@@G@@_@@@@@_@@@@@_@@@@@_@@@@@_@@@@@_@@@@@_@@@@@_@@@@@_@@@@@_@@@@@_@@@@@_@@@@@BI )@@G@@_@@@@@_@@@@@_@@@@@_@@@@@_@@@@@_@@@@@_@@@@@_@@@@@_@@@@@_@@@@@_@@@@@_@@@@@BJ )@@G@@_@@@@@_@@@@@_@@@@@_@@@@@_@@@@@_@@@@@_@@@@@_@@@@@_@@@@@_@@@@@_@@@@@_@@@@@BK )@@G@@_@@@@@_@@@@@_@@@@@_@@@@@_@@@@@_@@@@@_@@@@@_@@@@@_@@@@@_@@@@@_@@@@@_@@@@@BL )@@G@@_@@@@@_@@@@@_@@@@@_@@@@@_@@@@@_@@@@@_@@@@@_@@@@@_@@@@@_@@@@@_@@@@@_@@@@@BM )@@G@@_@@@@@_@@@@@_@@@@@_@@@@@_@@@@@_@@@@@_@@@@@_@@@@@_@@@@@_@@@@@_@@@@@_@@@@@BN )@@G@@_@@@@@_@@@@@_@@@@@_@@@@@_@@@@@_@@@@@_@@@@@_@@@@@_@@@@@_@@@@@_@@@@@_@@@@@BO )@@G@@_@@@@@_@@@@@_@@@@@_@@@@@_@@@@@_@@@@@_@@@@@_@@@@@_@@@@@_@@@@@_@@@@@_@@@@@BP )@@G@@_@@@@@_@@@@@_@@@@@_@@@@@_@@@@@_@@@@@_@@@@@_@@@@@_@@@@@_@@@@@_@@@@@_@@@@@BQ )@@G@@_@@@@@_@@@@@_@@@@@_@@@@@_@@@@@_@@@@@_@@@@@_@@@@@_@@@@@_@@@@@_@@@@@_@@@@@BR )@@G@@_@@@@@_@@@@@_@@@@@_@@@@@_@@@@@_@@@@@_@@@@@_@@@@@_@@@@@_@@@@@_@@@@@_@@@@@BS )@@G@@_@@@@@_@@@@@_@@@@@_@@@@@_@@@@@_@@@@@_@@@@@_@@@@@_@@@@@_@@@@@_@@@@@_@@@@@BT )@@G@@_@@@@@_@@@@@_@@@@@_@@@@@_@@@@@_@@@@@_@@@@@_@@@@@_@@@@@_@@@@@_@@@@@_@@@@@BU )@@G@@_@@@@@_@@@@@_@@@@@_@@@@@_@@@@@_@@@@@_@@@@@_@@@@@_@@@@@_@@@@@_@@@@@_@@@@@BV )@@G@@_@@@@@_@@@@@_@@@@@_@@@@@_@@@@@_@@@@@_@@@@@_@@@@@_@@@@@_@@@@@_@@@@@_@@@@@BW )@@G@@_@@@@@_@@@@@_@@@@@_@@@@@_@@@@@_@@@@@_@@@@@_@@@@@_@@@@@_@@@@@_@@@@@_@@@@@BX )@@G@@_@@@@@_@@@@@_@@@@@_@@@@@_@@@@@_@@@@@_@@@@@_@@@@@_@@@@@_@@@@@_@@@@@_@@@@@BY )@@G@@_@@@@@_@@@@@_@@@@@_@@@@@_@@@@@_@@@@@_@@@@@_@@@@@_@@@@@_@@@@@_@@@@@_@@@@@BZ )@@G@@_@@@@@_@@@@@_@@@@@_@@@@@_@@@@@_@@@@@_@@@@@_@@@@@_@@@@@_@@@@@_@@@@@_@@@@@CA )@@G@@_@@@@@_@@@@@_@@@@@_@@@@@_@@@@@_@@@@@_@@@@@_@@@@@_@@@@@_@@@@@_@@@@@_@@@@@CB )@@G@@_@@@@@_@@@@@_@@@@@_@@@@@_@@@@@_@@@@@_@@@@@_@@@@@_@@@@@_@@@@@_@@@@@_@@@@@CC )@@G@@_@@@@@_@@@@@_@@@@@_@@@@@_@@@@@_@@@@@_@@@@@_@@@@@_@@@@@_@@@@@_@@@@@_@@@@@CD )@@G@@^@)^@)^@)^@)^@)^@)^@)^@)^@)^@)^@)^@)ADQE-MC(B^[PA*6A07B@2AK6A*0B@3&@8B@1CE )@@G@@&S5AC5&@0A)8A@2CG-T%UAD[CLM^@)^[#C))^@)^@)^@)^@)^@)^@)^@)^@)^@)^@)^@)^@)CF )@@G@@^@)^@)^@)^@)^@)^@)^@)^@)^@)^@)^@)^@)ADQE-MC(B^[PA*2A@3A)8AS7B@0B@3&@8B@1CG )@@G@@&S5A)5&)0A)6AK0CG-T%VAD^D-A^@)FD]CC)^@)^@)^@)^@)^@)^@)^@)^@)^@)^@)^@)^@)CH )@@G@@^@)^@)^@)^@)^@)^@)^@)^@)^@)^@)^@)^@)ADQE-MC(B^[PA*0AC6B@9AS2AK0B@3&@8B@1CI )@@G@@&S5A*4&80A)7AK5CG-T%WAD^D-A^@)FD]CC)^@)^@)^@)^@)^@)^@)^@)^@)^@)^@)^@)^@)CJ )@@G@@^@)^@)^@)^@)^@)^@)^@)^@)^@)^@)^@)^@)ADQE-MC(B^[PA*2A)3AS3AK7A80B@3&@8B@1CK )@@G@@&S5A04&@0A)6AC3CG-T%XAD^D-A^@)FD]CC)^@)^@)^@)^@)^@)^@)^@)^@)^@)^@)^@)^@)CL )@@G@@^@)^@)^@)^@)^@)^@)^@)^@)^@)^@)^@)^@)ADQE-MC(B^[PA*2AS3AS3A82A00B@3&@8B@1CM )@@G@@&S5A82$C0A)6A@5CG-T%YAD^D-A^@)FD]CC)^@)^@)^@)^@)^@)^@)^@)^@)^@)^@)^@)^@)CN )@@G@@^@)^@)^@)^@)^@)^@)^@)^@)^@)^@)^@)^@)ADQE-MC(B^[PAK7AS2A@7A@3A@0B@3&@8B@1CO )@@G@@&S5B@2&S0A)7A)0CG-T%ZAD^D-A^@)FD]CC)^@)^@)^@)^@)^@)^@)^@)^@)^@)^@)^@)^@)CP )@@G@@^@)^@)^@)^@)^@)^@)^@)^@)^@)^@)^@)^@)ADQE-MC(B^[PAK9A@2A06A*5A*0B@3&@8B@1CQ )@@G@@&S5BC1$C0A)7A)0CG-T%)AD^D-A^@)FD]CC)^@)^@)^@)^@)^@)^@)^@)^@)^@)^@)^@)^@)CR )@@G@@^@)^@)^@)^@)^@)^@)^@)^@)^@)^@)^@)^@)ADQE-MC(B^[PA)4A@3B@9BC4A@0B@3&@8B@1CS )@@G@@&)0A@1&)0B@5AC3CG-T%-AT[CLM^@)^[#C))^@)^@)^@)^@)^@)^@)^@)^@)^@)^@)^@)^@)CT )@@G@@^@)^@)^@)^@)^@)^@)^@)^@)^@)^@)^@)^@)ADQE-MC(B^[PA)6BC8AK4BC9AK0B@3&@8B@1CU )@@G@@&)0AC2&*0A)6AC3CG-T%+AD^D-A^@)FD]CC)^@)^@)^@)^@)^@)^@)^@)^@)^@)^@)^@)^@)CV )@@G@@^@)^@)^@)^@)^@)^@)^@)^@)^@)^@)^@)^@)ADQE-MC(B^[PA*0AS1A06A@4AS0B@3&@8B@1CW )@@G@@&)0AK1$C0A*8A@5CG-T%AT[CLM^@)^[#C))^@)^@)^@)^@)^@)^@)^@)^@)^@)^@)^@)^@)DB )@@G@@^@)^@)^@)^@)^@)^@)^@)^@)^@)^@)^@)^@)ADQE-MC(B^[PA*2A@5A00AS2B@0B@3&@8B@1DC )@@G@@&)0AS4$C0A)7AS3CG-T%&AD^D-A^@)FD]CC)^@)^@)^@)^@)^@)^@)^@)^@)^@)^@)^@)^@)DD )@@G@@^@)^@)^@)^@)^@)^@)^@)^@)^@)^@)^@)^@)ADQE-MC(B^[PBC9A@0A@9A)4A00B@3&@8B@1DE )@@G@@&)0A*1&)0A)7AK8CG-T%$AD[CLM^@)^[#C))^@)^@)^@)^@)^@)^@)^@)^@)^@)^@)^@)^@)DF )@@G@@^@)^@)^@)^@)^@)^@)^@)^@)^@)^@)^@)^@)ADQE-MC(B^[PA*2AS1BC1A03A)0B@3&@8B@1DG )@@G@@&)0A00$@0A)6AS5CG-T%*AD^D-A^@)FD]CC)^@)^@)^@)^@)^@)^@)^@)^@)^@)^@)^@)^@)DH )@@G@@^@)^@)^@)^@)^@)^@)^@)^@)^@)^@)^@)^@)ADQE-MC(B^[PA*2A)2AC7A)3B@0B@3&@8B@1DI )@@G@@&)0A05&00A)6AK4CG-T%(AD[CLM^@)^[#C))^@)^@)^@)^@)^@)^@)^@)^@)^@)^@)^@)^@)DJ )@@G@@^@)^@)^@)^@)^@)^@)^@)^@)^@)^@)^@)^@)ADQE-MC(B^[PBC9A@0AC0AK2BC0B@3&@8B@1DK )@@G@@&)0A80$C0A)7AK4CG-T%%AD^D-A^@)FD]CC)^@)^@)^@)^@)^@)^@)^@)^@)^@)^@)^@)^@)DL )@@G@@^@)^@)^@)^@)^@)^@)^@)^@)^@)^@)^@)^@)ADQE-MC(B^[PA*2AK6A)6AS3AS0B@3&@8B@1DM )@@G@@&)0A82$C0A)6A@5CG-T%:AD[CLM^@)^[#C))^@)^@)^@)^@)^@)^@)^@)^@)^@)^@)^@)^@)DN )@@G@@^@)^@)^@)^@)^@)^@)^@)^@)^@)^@)^@)^@)ADQE-MC(B^[PA*2A*7A00AK3A@0B@3&@8B@1DO )@@G@@&)0B@3&@0B@5A@6CG-T%?AT[CLM^@)^[#C))^@)^@)^@)^@)^@)^@)^@)^@)^@)^@)^@)^@)DP )@@G@@^@)^@)^@)^@)^@)^@)^@)^@)^@)^@)^@)^@)ADQE-MC(B^[PA*2AC5AK8A*0B@0B@3&@8B@1DQ )@@G@@&)0BC3&)0B@5A@4CG-T%!AT[CLM^@)^[#C))^@)^@)^@)^@)^@)^@)^@)^@)^@)^@)^@)^@)DR )@@G@@^@)^@)^@)^@)^@)^@)^@)^@)^@)^@)^@)^@)ADQE-MC(B^[PA*2B@0A07B@0AS0B@3&@8B@1DS )@@G@@&)0BC5&@0A)6AS4CG-T%,AD^D-AA@8^[#CC)^@)^@)^@)^@)^@)^@)^@)^@)^@)^@)^@)^@)DT )@@G@@^@)^@)^@)^@)^@)^@)^@)^@)^@)^@)^@)^@)ADQE-MC(B^[PA*2AS1AS6B@4A@0B@3&@8B@1DU )@@G@@&)1A@4&)0A)7AS9CG-T%\AD[CLM^@)^[#C))^@)^@)^@)^@)^@)^@)^@)^@)^@)^@)^@)^@)DV )@@G@@^@)^@)^@)^@)^@)^@)^@)^@)^@)^@)^@)^@)ADQE-MC(B^[PAC3A05A01A86BC0B@3&@8B@1DW )@@G@@&)1AC0&00A)6A@5CG-T%0ADHCDN^@)^[#CT[DC)^@)^@9BC0A@0BC7A07^@)^@)^@)^@)^@)DX )@@G@@^@)^@)^@)^@)^@)^@)^@)^@)^@)^@)^@)^@)ADQE-MC(B^[PA)5B@1AS8AK7A*0B@3&@8B@1DY )@@G@@&)1AC0&80B@5AC0CG-T%1AL[CLM^@)^[#C))^@)^@)^@)^@)^@)^@)^@)^@)^@)^@)^@)^@)DZ )@@G@@^@)^@)^@)^@)^@)^@)^@)^@)^@)^@)^@)^@)ADQE-MC(B^[PA*2AK0A)5A89A)0B@3&@8B@1EA )@@G@@&)1AC2&*0A)6AS4CG-T%2AD^D-AA@3^[#CC)^@)^@)^@)^@)^@)^@)^@)^@)^@)^@)^@)^@)EB )@@G@@^@)^@)^@)^@)^@)^@)^@)^@)^@)^@)^@)^@)ADQE-MC(B^[PAK6A*2BC6AS1A80B@3&@8B@1EC )@@G@@&)1AK2&*0A)6AS8CG-T%3AD[CLM^@)^[#C))^@)^@)^@)^@)^@)^@)^@)^@)^@)^@)^@)^@)ED )@@G@@^@)^@)^@)^@)^@)^@)^@)^@)^@)^@)^@)^@)ADQE-MC(B^[PA*5A@4AS4A)5BC0B@3&@8B@1EE )@@G@@&)1AK5&K0A)7AK1CG-T%4AD[CLM^@)^[#C))^@)^@)^@)^@)^@)^@)^@)^@)^@)^@)^@)^@)EF )@@G@@^@)^@)^@)^@)^@)^@)^@)^@)^@)^@)^@)^@)ADQE-MC(B^[PA*1A87AK8A*0AS0B@3&@8B@1EG )@@G@@&)1AS3&C0A)6A@5CG-T%5AD[CLM^@)^[#C))^@)^@)^@)^@)^@)^@)^@)^@)^@)^@)^@)^@)EH )@@G@@^@)^@)^@)^@)^@)^@)^@)^@)^@)^@)^@)^@)ADQE-MC(B^[PAS9AC6AK1A*6A)0B@3&@8B@1EI )@@G@@&)1A)0&K0A)7AS2CG-T%6AD[CLM^@)^[#C))^@)^@)^@)^@)^@)^@)^@)^@)^@)^@)^@)^@)EJ )@@G@@^@)^@)^@)^@)^@)^@)^@)^@)^@)^@)^@)^@)ADQE-MC(B^[PAK1AS4A@9B@7BC0B@3&@8B@1EK )@@G@@&)1A)0&)0B@6AC0CG-T%7ADGC0)^@)^[#CT[^@)^@)^@)^@)^@)^@)^@)^@)^@)^@)^@)^@)EL )@@G@@^@)^@)^@)^@)^@)^@)^@)^@)^@)^@)^@)^@)ADQE-MC(B^[PA)7A08A@4A@2A)0B@3&@8B@1EM )@@G@@&)1A)2$@0A)7AK2CG-T%8AD[CLM^@)^[#C))^@)^@)^@)^@)^@)^@)^@)^@)^@)^@)^@)^@)EN )@@G@@^@)^@)^@)^@)^@)^@)^@)^@)^@)^@)^@)^@)ADQE-MC(B^[PA*2AC3AS4A*6A)0B@3&@8B@1EO )@@G@@&)1A*5&K0A)6AS2CG-T%9AD[CLM^@)^[#C))^@)^@)^@)^@)^@)^@)^@)^@)^@)^@)^@)^@)EP )@@G@@^@)^@)^@)^@)^@)^@)^@)^@)^@)^@)^@)^@)ADQE-MC(B^[PA*0AK8B@5A00A00B@3&@8B@1EQ )@@G@@&)1A81$C0B@6AC2CG-T%'AD^D-A^@)FD]CC)^@)^@)^@)^@)^@)^@)^@)^@)^@)^@)^@)^@)ER )@@G@@^@)^@)^@)^@)^@)^@)^@)^@)^@)^@)^@)^@)ADQE-MC(B^[PA*2A)9A@5BC9A80B@3&@8B@1ES )@@G@@&)1A83&*0A)7A@7CG-T%;AD[CLM^@)^[#C))^@)^@)^@)^@)^@)^@)^@)^@)^@)^@)^@)^@)ET )@@G@@^@)^@)^@)^@)^@)^@)^@)^@)^@)^@)^@)^@)ADQE-MC(B^[PA*2AC1A*9A07B@0B@3&@8B@1EU )@@G@@&)1A85$@0A*5AS1CG-T%/AL[CLM^@)^[#C))^@)^@)^@)^@)^@)^@)^@)^@)^@)^@)^@)^@)EV )@@G@@^@)^@)^@)^@)^@)^@)^@)^@)^@)^@)^@)^@)ADQE-MC(B^[PA*4AC6A00A)7A80B@3&@8B@1EW )@@G@@&)1B@1&00A)7AK6CG-T%.AD^D-A^@)FD]CC)^@)^@)^@)^@)^@)^@)^@)^@)^@)^@)^@)^@)EX )@@G@@^@)^@)^@)^@)^@)^@)^@)^@)^@)^@)^@)^@)ADQE-MC(B^[PA)7A)6B@7AC6B@0B@3&@8B@1EY )@@G@@&)1B@3&)0A*5AC8CG-T%"AL[CLM^@)^[#C))^@)^@)^@)^@)^@)^@)^@)^@)^@)^@)^@)^@)EZ )@@G@@^@)^@)^@)^@)^@)^@)^@)^@)^@)^@)^@)^@)ADQE-MC(B^[PA*2AS4BC0A@3BC0B@3&@8B@1FA )@@G@@&)2A@0$@0A)7AK4CG-T%_AD^D-A^@)FD]CC)^@)^@)^@)^@)^@)^@)^@)^@)^@)^@)^@)^@)FB )@@G@@^@)^@)^@)^@)^@)^@)^@)^@)^@)^@)^@)^@)ADQE-MC(B^[PA*2AK8A@1A@8A@0B@3&@8B@1FC )@@G@@&)2A@2&)0A)7AC8CG-T:@AD[CLM^@)^[#C))^@)^@)^@)^@)^@)^@)^@)^@)^@)^@)^@)^@)FD )@@G@@^@)^@)^@)^@)^@)^@)^@)^@)^@)^@)^@)^@)ADQE-MC(B^[PA*2AS2A*5A*7A@0B@3&@8B@1FE )@@G@@&)2AC0&K0A*5A@6CG-T:[AL[CLM^@)^[#C))^@)^@)^@)^@)^@)^@)^@)^@)^@)^@)^@)^@)FF )@@G@@^@)^@)^@)^@)^@)^@)^@)^@)^@)^@)^@)^@)ADQE-MC(B^[PA*2AC4A03AS4A80B@3&@8B@1FG )@@G@@&)2AC2&*0A)7A@1CG-T:]AD[CLM^@)^[#C))^@)^@)^@)^@)^@)^@)^@)^@)^@)^@)^@)^@)FH )@@G@@^@)^@)^@)^@)^@)^@)^@)^@)^@)^@)^@)^@)ADQE-MC(B^[PA*2AC3AC9A84AS0B@3&@8B@1FI )@@G@@&)2AC2$@0A)6A@3CG-T:#AD^D-A^@)FD]CC)^@)^@)^@)^@)^@)^@)^@)^@)^@)^@)^@)^@)FJ )@@G@@^@)^@)^@)^@)^@)^@)^@)^@)^@)^@)^@)^@)ALQE-MC(B^[PA*2AC7AK2A)7A80B@3&@8B@1FK )@@G@@&)2AC4&K0A*5A@4CG-T:^ALNELOA02^[#CC)^@)^@)^@)^@)^@)^@)^@)^@)^@)^@)^@)^@)FL )@@G@@^@)^@)^@)^@)^@)^@)^@)^@)^@)^@)^@)^@)ADQE-MC(B^[PA*2AK9A08AS3A00B@3&@8B@1FM )@@G@@&)2AC4$C0A*5AK9CG-T: AL[CLM^@)^[#C))^@)^@)^@)^@)^@)^@)^@)^@)^@)^@)^@)^@)FN )@@G@@^@)^@)^@)^@)^@)^@)^@)^@)^@)^@)^@)^@)ADQE-MC(B^[PA@8BC3B@1BC0A*0B@3&@8B@1FO )@@G@@&)2AK1&)0A)7AK2CG-T:AAD[CLM^@)^[#C))^@)^@)^@)^@)^@)^@)^@)^@)^@)^@)^@)^@)FP )@@G@@^@)^@)^@)^@)^@)^@)^@)^@)^@)^@)^@)^@)ADQE-MC(B^[PA*3A*7A@8B@7A*0B@3&@8B@1FQ )@@G@@&)2AK1&80A)6AS7CG-T:BAD^D-A^@)FD]CC)^@)^@)^@)^@)^@)^@)^@)^@)^@)^@)^@)^@)FR )@@G@@^@)^@)^@)^@)^@)^@)^@)^@)^@)^@)^@)^@)ADQE-MC(B^[PA*2AS7B@1AK7B@0B@3&@8B@1FS )@@G@@&)2AS0$@0A*5A@1CG-T:CAL[ SEPERATE ATTRIBUTES@E@@@ANOCOMA LABEL . FT )@@G@@ NO STORAGE CLASS KNOWN @E@@@A IF SD0ARE,ISNTOFU )@@G@@N THEN,NOTAREA . IS THIS AN AREA @E@@@A PRTATR AREA . FV )@@G@@ SAY THAT THIS IS AN AREA @[@@@A. @G@@@A. SHOULD SAY SIZEFW )@@G@@ IN HERE ***** @[@@@A. @E@@@A FX )@@G@@ GOTO REFFER . GO PRINT CROSS REFERENCES@A@@@ANOTAREA LABFY )@@G@@EL . NOT A LABEL HERE @C@@@A AND,U F,SD0PTR . GET TYPFZ )@@G@@E BITS@E@@@A IF A6,NE,SD0PTR,I THEN,NOTPTR . IS THIS POINTER? GA )@@G@@@E@@@A IF SDPTOF,ON,SDCLS1 THEN,NOTAR1 . -> THIS IS OFFSET@D@@@AGB )@@G@@ PRTATR POINT . SAY IT IS POINTER @E@@@A GOTGC )@@G@@O REFFER . GO DO REFERENCE LIST @F@@@ANOTAR1 LABEL . GD )@@G@@ HERE WE HAVE AN OFFSET VARIABLE@C@@@A PRTATR OGE )@@G@@FFSET . SAY OFFSET @H@@@A IF SD5OFA,OFF,SDCLS5 THEN,RGF )@@G@@EFFER . -> NO AREA DECLARED WITH OFFSET @F@@@A LOAD X8,SDOFGG )@@G@@PA . GET AREA DECLARED WITH OFFSET @C@@@A PRTSYM '(' . GH )@@G@@ OPEN PARENS @E@@@A PRTSD X8 . PUT OUTGI )@@G@@ NAME OF AREA @C@@@A PRTSYM ')' . CLOSE PARENS GJ )@@G@@@F@@@A GOTO REFFER . GO FINISH CROSS REFERENCES GK )@@G@@@A@@@ANOTPTR LABEL . NOT POINTER HERE @D@@@A IF A6,NE,SD0FLEGL )@@G@@,I THEN,NOTFIL . IS IT FILE? @D@@@A PRTATR FILE . SGM )@@G@@AY IT IS FILE... @D@@@A SEPERATE . SEPERATE ATTRGN )@@G@@IBUTES@F@@@A IF SDFLRC,OFF,SDCLS1 THEN,STFILE . IS THE FILE RECOGO )@@G@@RD? @D@@@A PRTATR RECORD . SAY IT IS RECORD @H@@@AGP )@@G@@ IF SDFLKY,OFF,SDCLS1 THEN,INOUT . IF NOT KEYED,SEE IF INPUT OR GQ )@@G@@OUTPUT@D@@@A SEPERATE . SEPERATE ATTRIBUTES@D@@@AGR )@@G@@ PRTATR KEYED . SAY IT IS KEYED @F@@@A GOTGS )@@G@@O REFFER . CONTINUE WITH CROSS REFERENCE @E@@@ASTFILE LABGT )@@G@@EL . STREAM FILES COME HERE @D@@@A PRTATR SGU )@@G@@TREAM . SAY IT IS STREAM . @E@@@AINOUT LABEL . GV )@@G@@ RECORD FILES MERGE HERE @E@@@A LOAD F,SDIOAT . GGW )@@G@@ET FOR E-Z REFERENCE @G@@@A IF SDIOIN,OFF THEN,STFOUT . IF NOGX )@@G@@T INPUT THEN MAYBE OUTPUT @D@@@A SEPERATE . SGY )@@G@@EPERATE ATTRIBUTES@D@@@A PRTATR INPUTF . SAY IT IS INPGZ )@@G@@UT @B@@@A GOTO REFFER . FINISH @G@@@ASTFOUT LABHA )@@G@@EL . SEE IF IT IS OUTPUT AND/OR PRINT @E@@@A HB )@@G@@ IF SDIOOT,OFF THEN,STFPNT . NOT OUTPUT,SEE IF PRINT@D@@@A SEPHC )@@G@@ERATE . SEPERATE ATTRIBUTES@D@@@A PRTATR OUTPUT HD )@@G@@. SAY IT IS OUTPUT @E@@@ASTFPNT LABEL . SHE )@@G@@EE IF FILE IS PRINTFILE @G@@@A IF SDIOPR,OFF THEN,REFFER . NOT PHF )@@G@@RINT-> GET CROSS REFERENCE @D@@@A SEPERATE . SHG )@@G@@EPERATE ATTRIBUTES@D@@@A PRTATR PRINTF . SAY FILE IS PHH )@@G@@RINT @C@@@A GOTO REFFER . GO FINISH UP @C@@@ANOTFILHI )@@G@@ LABEL . IT ISN'T FILE@D@@@A IF A6,NE,SD0LABHJ )@@G@@,I THEN,NOTLAB . IS IT LABEL ?@F@@@A IF SD4FLB,OFF,SDCLS4 THEN,NHK )@@G@@OTFOR . IS IT A FORMAT LABEL? @C@@@A PRTATR FORMAT . SHL )@@G@@AY 'FORMAT '@E@@@A GOTO LAB . MERGE WITH OTHER LAHM )@@G@@BEL @D@@@ANOTFOR LABEL . NOT A FORMAT LABEL @F@@@AHN )@@G@@ IF SD3LCN,OFF,SDCLS3 THEN,LAB . IS IT A LABEL VARIABLE? @D@@@AHO )@@G@@ PRTATR STMT . SAY 'STATEMENT ' @D@@@ALAB LABHP )@@G@@EL . NOW PRINT 'LABEL' @C@@@A PRTATR LABE . HQ )@@G@@ SAY 'LABEL' @E@@@A GOTO REFFER . GO DO RHR )@@G@@EFERENCE LIST @D@@@ANOTLAB LABEL . VAR ISN'T LABHS )@@G@@EL @E@@@A IF A6,NE,SD0STU,I THEN,SCALAR . IS IT STURCTURE? HT )@@G@@@D@@@A PRTATR STRUC . SAY 'STRUCTURE' @E@@@A HU )@@G@@ GOTO REFFER . GO DO REFERENCE LIST @C@@@ASCALAR LABHV )@@G@@EL . THRU ALL OF THE TWO BIT CHECKS @D@@@A IF A6,NE,SD0ENT,I THEHW )@@G@@N,NOTENT . IS IT ENTRY? @E@@@A IF SDPREN,ON,SDCLS1 THEN,ENTRY . HX )@@G@@IS IT A PROC? @D@@@A IF SDBLUS,OFF,SDCLS1 THEN,NOTUSE . BUILHY )@@G@@T IN? @D@@@A PRTATR PROC . SAY 'PROCEDURE' @D@@@AHZ )@@G@@ SEPERATE . SEPERATE ATTRIBUTES@G@@@A GOTIA )@@G@@O CLASS1 . GO PRINT OUT ATTRIBUTES OF RETURN @F@@@ANOTUSEIB )@@G@@ LABEL . THIS IS A BUILT IN FUNCTION @F@@@A IC )@@G@@ IF SD4PVA,ON,SDCLS4 THEN,PSEU . IS THIS A PSEUDO VAR? @C@@@A ID )@@G@@ PRTATR BUILT . SAY BUILTIN @G@@@A GOTO REFFER IE )@@G@@. IF BUILT IN THEN ATTR NOT KNOWN... @F@@@APSEU LABEL . IF )@@G@@ THIS IS A PSEUDO VARIABLE... @C@@@A PRTATR PIG )@@G@@SEUD . SAY PSEUDO @D@@@A GOTO REFFER . GIH )@@G@@O PRINT OUT REFS @D@@@AENTRY LABEL . THIS IS AN ENII )@@G@@TRY @D@@@A PRTATR ENTR . SAY IT IS ENTRY @D@@@AIJ )@@G@@ SEPERATE . SEPERATE ATTRIBUTES@E@@@A GOTIK )@@G@@O CLASS1 . GO CHECK CLASS 1 BITS @ @@@ANOTENT LABEL . NIL )@@G@@OT ENTRY @D@@@A IF A6,EQ,SD0STR,I THEN,CLASS1 . IS IT STRING?IM )@@G@@@D@@@A IF A6,NE,SD0ART,I THEN,REFFER . IS IT ARITH? @F@@@ACLASS1IN )@@G@@ LABEL . LOOK THRU CLASS ONE BITS HERE @G@@@A IO )@@G@@ LOAD F,SDCLS1 . GET CLASS1 BITS FOR E-Z REFERENCE @D@@@AIP )@@G@@ IF SDARST,ON THEN,STRING . IS IT STRING? @D@@@A IF IQ )@@G@@SDRLCX,ON THEN,COMP . CHECK REAL/COMPLEX @C@@@A PRTATR REAL . IR )@@G@@ SAY REAL @B@@@A GOTO FXFL . MERGE IS )@@G@@@D@@@ACOMP LABEL . VAR IS COMPLEX @C@@@A IT )@@G@@ PRTATR COMPL . SAY COMPLEX @C@@@AFXFL LABEL . IU )@@G@@ NOW PRINT ','@D@@@A SEPERATE . SEPERATIV )@@G@@E ATTRIBUTES@E@@@A IF SDFXFL,OFF THEN,FIXED . IS IT FIXED OR FLOIW )@@G@@AT? @C@@@A PRTATR FLOAT . SAY FLOAT @D@@@A IX )@@G@@ GOTO BASE . NOW CHECK BASE @C@@@AFIXED LABEL . IY )@@G@@ VAR IS FIXED @C@@@A PRTATR FIXE . SIZ )@@G@@AY FIXED @C@@@ABASE LABEL . CHECK BASE @D@@@AJA )@@G@@ SEPERATE . SEPERATE ATTRIBUTES@E@@@A IF JB )@@G@@SDDCBN,OFF THEN,DECIM . IS IT BINARY OR DECIMAL?@C@@@A PRTATR BJC )@@G@@IN . SAY BINARY @E@@@A GOTO PREC . GJD )@@G@@O PRINT OUT THE PREC @D@@@ADECIM LABEL . IT IS DJE )@@G@@ECIMAL HERE @C@@@A PRTATR DECI . SAY DECIMAL @#@@@AJF )@@G@@PREC LABEL . @F@@@A IF A13,GE,10,I THEN,SCAL . IS THERE ROOJG )@@G@@M IN THE LINE? @E@@@A LINK OUTLIN . DUMP THE CURRJH )@@G@@ENT LINE @C@@@A INIT 'ATTR' . SET POINTERS @H@@@AJI )@@G@@SCAL LABEL . HERE IF ROOM IN LINE FOR SCALE AND PRJJ )@@G@@E @^@@@A PRTSYM '(' . @E@@@A PRTNUM SDPREC . JK )@@G@@ PUT PRECISION INTO LINE @^@@@A PRTSYM ',' . @E@@@A JL )@@G@@ LOAD A4,SD2SP-FH2+FXH2 . GET SIGN EXTENDED SCALE@F@@@A SSAJM )@@G@@ A4,9 . GET SCALE IN CORRECT PLACE @C@@@A IF JN )@@G@@A4,GE,0,I THEN,NONNEG . IS SCALE <0?@D@@@A LOADN A4,A4 . JO )@@G@@ GET POSITIVE SCALE @E@@@A PRTSYM '-' . PUT OUTJP )@@G@@ A MINUS SIGN @D@@@ANONNEG LABEL . SCALE IN A4 IJQ )@@G@@S >0 @E@@@A PRTNUM A4 . INSERT SCALE IN LINE JR )@@G@@@D@@@A PRTSYM ')' . CLOSE SCALE,PRE @E@@@A JS )@@G@@ GOTO REFFER . GO DO REFERENCE LIST @A@@@ASTRING LABJT )@@G@@EL . VARIABLE IS STRING @D@@@A IF SDCHBT,ON THEN,BIT . IS IT BJU )@@G@@IT OR CHAR @C@@@A PRTATR CHAR . SAY CHAR @G@@@AJV )@@G@@ GOTO SIZE . GO PRINT EXPR FOR SIZE OF STRING JW )@@G@@@A@@@ABIT LABEL . HERE IF VAR IS BIT @B@@@A PRTATR BITS . JX )@@G@@ SAY BIT@F@@@ASIZE LABEL . HERE TO PRINTJY )@@G@@ SIZE OF STRING @D@@@A LOAD A3,SDDVA . GET D.V. ADDRJZ )@@G@@ESS @F@@@A LOAD A3,SDDVSM,A3 . GET MCODE PTR FOR MAX LENKA )@@G@@GTH @D@@@A LINK LMCP . SET UP FOR EXPR @C@@@AKB )@@G@@ PRTSYM '(' . OPEN PARENS @D@@@B LOAD RKC )@@G@@8,A2 . SAVE ALTC REGS @ @@@B LOAD R9,X10 . KD )@@G@@@B@@@B ALTC . '(' @C@@@B ALTC . KE )@@G@@ SEE IF '*' @E@@@B IF A3,EQ,ACSTAR,I THEKF )@@G@@N,SIZE1 . IT'S A '*' @D@@@B LOAD A2,R8 . RESTOREKG )@@G@@ ALTC REGS @ @@@B LOAD X10,R9 . @D@@@A LINK EKH )@@G@@XPR . PUT OUT EXPRESSION @^@@@B GOTO SIZE2 .@D@@@BKI )@@G@@SIZE1 LABEL . HER TO PUT OUT '*' @^@@@B PRTKJ )@@G@@SYM '*' . @E@@@BSIZE2 LABEL . MERGE HERE TO FINISKK )@@G@@H @C@@@A PRTSYM ')' . CLOSE PARENS @F@@@A KL )@@G@@ LOADXM A2,SAVA2 . RESET TO POINT TO BCD TABLE @B@@@A KM )@@G@@ LOADXM X10,SAVX10 . '' @D@@@A SEPERATE . KN )@@G@@ SEPERATE ATTRIBUTES@E@C@A IF SDFXVR,ON THEN,VAR . IS IT AKO )@@G@@ VARYING STRING? @F@@@C IF SDFXVR,ON,SDCLS1 THEN,VAR . IS IT KP )@@G@@A VARYING STRING? @D@@@A PRTATR NONVAR . SAY NON-VARYIKQ )@@G@@NG @D@@@A GOTO REFFER . GO DO CROSS REF @A@@@AKR )@@G@@VAR LABEL . STRING IS VARYING @C@@@A PRTATR VARY . KS )@@G@@ SAY VARYING @C@@@A/. NOW PRINT THE CROSS REFERENCE LIST KT )@@G@@@[@@@A. @[@@@A. @#@@@AREFFER LABEL . @F@@@A IF SDINTLKU )@@G@@,OFF,SDCLS3 THEN,STRTRE . IS IT INITALIZED? @D@@@A SEPERATE KV )@@G@@. SEPERATE ATTRIBUTES@D@@@A PRTATR INITIA . KW )@@G@@ SAY INITALIZED @E@@@A LOAD A3,SDINTM . POINT TKX )@@G@@O INITAL MCODE @E@@@A LINK LMCP . GO SET TO REAKY )@@G@@D THE EXPR @F@@@A LOAD A12,-1,I . SET PAREN/LISTST COKZ )@@G@@UNT TO ZERO @C@@@AINIT0 LABEL . HERE TO LOOK FOR ANOTHER LIST @A@@@ALA )@@G@@ ALTC . GET NEXT TOKEN @D@@@A IF A3,EQ,ACLPAR,I THELB )@@G@@N,INIT1 . IT IS A '(' @E@@@A IF A3,NE,ACLLST,I THEN,INIT2 . ->LC )@@G@@ NOT A LIST START @C@@@AINIT1 LABEL . HERE FOR '(' LD )@@G@@@D@@@A ADD A12,1,I . ADD TO PAREN COUNT @D@@@A LE )@@G@@ PRTSYM '(' . PRINT LIST START @D@@@A GOTO ILF )@@G@@NIT0 . GO READ NEXT TOKEN @D@@@AINIT2 LABEL . LG )@@G@@ HERE IF NOT '(' @D@@@A IF A3,EQ,ACRPAR,I THEN,INIT3 . ->LH )@@G@@ IT IS ')' @E@@@A IF A3,NE,ACRLST,I THEN,INIT4 . -> IT ISN'T ')LI )@@G@@' @C@@@AINIT3 LABEL . HERE IF ')' @E@@@A LJ )@@G@@ PRTSYM ')' . PUT OUT CLOSING PAREN @F@@@A LOOLK )@@G@@P A12,INIT0 . ONE FEWER PARENS TO WORRY ABOUT@G@@@A LOALL )@@G@@DXM X10,SAVX10 . GET SET TO LOOK AT BCD TABLE AGAIN @B@@@A LM )@@G@@ LOADXM A2,SAVA2 . '' @F@@@A GOTO STRTRE . LN )@@G@@ MERGE WITH NON-INITIALIZED SD'S@H@@@AINIT4 LABEL . LO )@@G@@ HERE IF NEITHER LEFT OR RIGHT PAREN/LIST @D@@@A IF A3,NE,LP )@@G@@ACCOMA,I THEN,INIT5 . -> NOT COMMA @E@@@A PRTSYM ',' . LQ )@@G@@ SEPERATE ITEMS IN LIST @E@@@A GOTO INIT0 . LLR )@@G@@OOK FOR MORE TOKENS @G@@@AINIT5 LABEL . HERE EILS )@@G@@THER STAR,NIL,START EXPR OR? @D@@@A IF A3,NE,ACSTAR,I THEN,INITLT )@@G@@6 . -> NOT STAR @F@@@A PRTSYM '*' . PRINT THE STALU )@@G@@R OF THE LIST @E@@@A GOTO INIT0 . LOOK ON IN THLV )@@G@@E MCODE @F@@@AINIT6 LABEL . HERE IT IS START EXLW )@@G@@PR OR ? @D@@@A AND,U A3,0777000 . DUMP THE EXTRA BITSLX )@@G@@@F@@@A IF A4,NE,ACSTEX,I THEN,INIT0 . -> THROW IT AWAY FOR NOW LY )@@G@@@E@@@A LINK EXPR . UNDO THE EXPRESSION THERE@F@@@ALZ )@@G@@ GOTO INIT0 . LOOK ON THRU THE INIT CODE @C@@@AMA )@@G@@STRTRE LABEL . START REFERENCE LISTING HERE @D@@@A LINK OMB )@@G@@UTLIN . DUMP OUT THE LINE @E@@@A INIT 'ATTR' . MC )@@G@@ SET TO PLACE IN LINE @D@@@A LOADA X6,SDXREF-FXH2 . PMD )@@G@@OINT TO WORKSPACE @ @@@A USING WORD,X6 . @D@@@A LOAME )@@G@@D A1,W1H2 . GET XREF CHAIN @C@@@A MOVE W1H2,0,MF )@@G@@I . CLEAR TO ZERO@E@@@A IF A1,EQ,0,I THEN,NOREF . ARE THEMG )@@G@@RE ANY REFERENCES?@#@@@AREVERS LABEL . @E@@@A LOAD A3,W1H2MH )@@G@@,A1 . GET NEXT PART OF CHAIN @D@@@A STORE X6,W1H2,A1 . MI )@@G@@ REVERSE THE CHAIN @F@@@A LOAD X6,A1 . REMEMBEMJ )@@G@@R THE CURRENT POSITION @E@@@A LOAD A1,A3 . MOVE ONMK )@@G@@ TO THE NEXT LINK @D@@@A IF A1,NE,0,I THEN,REVERS . CONTINUE IF ML )@@G@@MORE @[@@@A. @C@@@A. X6 NOW POINTS TO THE FIRST REFERENCE MM )@@G@@@[@@@A. @A@@@AMORREF LABEL . HERE FOR MORE REFS @D@@@A PRTMN )@@G@@NUM W1H1 . PRINT THE REFERENCE@E@@@A LOAD X6,W1H2MO )@@G@@ . SET TO MOVE BACK UP CHAIN@C@@@A IF W1H2,ZERO THEN,ENDMP )@@G@@REF . OUT OF REFS?@D@@@A SEPERATE . SEPERATE ATTRMQ )@@G@@IBUTES@D@@@A GOTO MORREF . GO ON TO NEXT REF @E@@@AMR )@@G@@NOREF LABEL . NO EXPLICIT REFERENCES @E@@@A MS )@@G@@ SUB X1,1,I . MAKE MESSAGE EASY TO FIND@F@@@A LOAMT )@@G@@D R1,MSGSIZ,I . GET THE SIZE OF THE MESSAGE @D@@@A LOAMU )@@G@@DA A1,MSG . POINT TO MESSAGE @B@@@A LOADXI A1,1,I MV )@@G@@. SET INC@E@@@A BT X1,0,*A1 . MOVE MESSAGE MW )@@G@@INTO BUFFER @E@@@A LOADXM X3,4,I . SAY LAST WORD IS FUMX )@@G@@LL @E@@@AENDREF LABEL . END OF REFERENCE LIST MY )@@G@@@E@@@A LINK OUTLIN . DUMP OUT CURRENT LINE @G@@@AMZ )@@G@@ GOTO CHAIN . GO ON TO NEXT VAR WITH SAME NAME NA )@@G@@@#@@@A/. LMCP - @H@@@A. SET UP THE POINTERS FOR ANB )@@G@@LTC ROUTINE,REMEMBERING TO SAVE @A@@@A. REGS AS NECESNC )@@G@@SARY @[@@@A. @F@@@ALMCP LLOC . HERE TO TAKE ND )@@G@@MCODEPTR IN A3 @D@@@A STORE X10,SAVX10 . SAVE CHAR POINE )@@G@@NTER @D@@@A STORE A2,SAVA2 . SAVE WORD POINTER @E@@@ANF )@@G@@ LOAD X10,ALTCDA . SET UP FOR START OF SCAN @F@@@A NG )@@G@@ SLBD A2,36-1 . GET MODIFIER FORM META CODE @E@@@A NH )@@G@@ LOADXI A2,1,I . SET TO WALK THRU WORDS @D@@@A TP NI )@@G@@ A3 . IF POSITIVE THEN H1@D@@@A ADD X10,1,INJ )@@G@@ . IF NEG THEN H2 @E@@@A LOAD A3,0,I . CNK )@@G@@LEAR OUT UPPER PORTION @B@@@A LJMP . RETURN NL )@@G@@@F@@@A/. EXPR . UNDO THE POLISH STRING POINTED TO BY X10,A2.. NM )@@G@@@G@@@A. FIRST BUILD THE TREE NEEDED, THEN SCAN THE TREE INN )@@G@@N @B@@@A. 'POST ORDER' (SEE KNUTH) @F@@@A. EXPNO )@@G@@R BUILDS THE TREE, THEN CALLS PRINTE TO SCAN THE TREE @B@@@A. ANDNP )@@G@@ PRINT OUT THE EXPRESSION... @E@@@A. PRINTE WILL RECURSE TO EXPRNQ )@@G@@ TO HANDLE ARRAY BOUNDS!@[@@@A. @G@@@AEXPR LOCAL . NR )@@G@@ COME WITH X10,A2 SET UP CORRECTLY @F@@@ANEXT LABEL . NS )@@G@@ HERE TO LOOK AT NEXT TOKEN @D@@@A ALTC . NT )@@G@@ GET THE NEXT TOKEN @G@@@ANEXT0 LABEL . HNU )@@G@@ERE IF NEXT TOKEN ALREADY IN A3 @D@@@A IF A3,LT,ACOPER,I THENV )@@G@@N,SDFOUN . -> FOUND SD @H@@@A IF A3,EQ,ACRBRK,I THEN,FRCPRT1 . NW )@@G@@-> END OF SUBSCRIPT SUBEXPRESSION @H@@@A IF A3,EQ,ACCOMA,I THENX )@@G@@N,FRCPRT2 . -> END OF SUBSCRIPT SUBEXPRESSION @F@@@A IF A3,EQ,NY )@@G@@ACENEX,I THEN,FRCPRT3 . -> END OF EXPRESSION @D@@@A AND,U ANZ )@@G@@3,0777000 . SEE IF OPERATOR @H@@@A IF A4,NE,ACOPER,OA )@@G@@I THEN,NEXT . -> NOT OPERATOR , IGNORE FOR NOW @D@@@A AND,U AOB )@@G@@3,0777 . GET OPERATOR NUMBER@D@@@A LOAD A1,A4 . OC )@@G@@ GET INTO INDEX REG @G@@@A LX,U X8,OPTAB,A1 . GET OPEOD )@@G@@RATOR TABLE ENTRY ADDRES***** @D@@@A USING NODE,X7 . POE )@@G@@OINT TO FREE NODE @F@@@A STORE X8,DATA,X7 . INSERT ADDRESOF )@@G@@S INTO STACK NODE @E@@@A STORE X9,RLINK . SET POINTER TOG )@@G@@O RIGHT ARG @G@@@A LOAD A3,FLINK,X9 . GET POINTER TO NEXTOH )@@G@@ NODE ON STACK @F@@@A STORE X7,FLINK,X9 . SET FATHER POOI )@@G@@INTER IN STACK @C@@@A LOAD X9,A3 . POP STACK OJ )@@G@@@G@@@A MOVE LLINK,0,I . SET LEFT LINK TO ZERO INCASE UNOK )@@G@@IARY @D@@@A LOAD A4,OPUNRY,X8 . GET UNARY FLAG @D@@@AOL )@@G@@ IF A4,NE,0,I THEN,ADDTOSTAK . -> IT IS UNIARY@E@@@A STOOM )@@G@@RE X9,LLINK . POINT TO LEFT OPERAND @E@@@A LOAD AON )@@G@@3,FLINK,X9 . SAVE NEXT NODE ON STACK @F@@@A STORE X7,FLINOO )@@G@@K,X9 . SET FATHER OF LEFT HAND SIDE @E@@@A LOAD X9,A3 .OP )@@G@@ POINT TO NEXT STACK ELT @F@@@AADDTOSTAK LABEL . OQ )@@G@@ HERE TO ADD NEW NODE TO STACK @F@@@A LOAD A3,FLINK,X7 .OR )@@G@@ GET POINTER TO NEXT 'FREE' NODE@F@@@A STORE X9,FLINK,X7 .OS )@@G@@ SET POINTER THRU STACK ELEMENTS@E@@@A LOAD X9,X7 . OT )@@G@@ POINT TO NEW STACK TOP @G@@@A LOAD X7,A3 . POU )@@G@@OINT TO WHAT'S LEFT OF FREE LIST @D@@@A GOTO NEXT . OV )@@G@@ SCAN NEXT TOKEN @[@@@A. @[@@@A. @[@@@A. @D@@@ASDFOUNOW )@@G@@ LABEL . HERE WITH SD IN A3 @E@@@A MOVE LOX )@@G@@LINK-FH1,0,I . CLEAR SUBTREE POINTERS @E@@@A STORE A3,DATAOY )@@G@@ . SET SD POINTER INTO NODE @E@@@A LOAD A3,FLINK,X7 .OZ )@@G@@ POINT TO NEXT FREE NODE @D@@@A STORE X9,FLINK . PPA )@@G@@USH ONTO STACK @D@@@A LOAD X9,X7 . FINISH PUSHINPB )@@G@@G @D@@@A LOAD X7,A3 . POINT TO FREE LIST @D@@@APC )@@G@@ ALTC . GET NEXT TOKEN @F@@@A IF PD )@@G@@A3,NE,ACLBRK,I THEN,NEXT0 . IS THIS AN ARRAY REFERENCE@[@@@A. @E@@@APE )@@G@@. HERE BECAUSE OF FUNCTION CALL OR ARRAY REFERECNE @[@@@A. PF )@@G@@@D@B@A STORE X10,LLINK . SAVE MCODE POSITION@D@@@B PG )@@G@@ STORE X10,LLINK,X9 . SAVE MCODE POSITION@B@B@A STORE APH )@@G@@2,RLINK . '' @B@@@B STORE A2,RLINK,X9 . '' PI )@@G@@@D@@@A LOAD A4,0,I . SET PAREN COUNT @F@@@ASKIPTOPJ )@@G@@P LABEL . HERE LOOKING FOR NEXT TOKEN @B@@@A PK )@@G@@ ALTC . GET IT @D@@@A IF A3,NE,ACLBRK,I THEPL )@@G@@N,SKIPT1 . -> NOT ( @E@@@A ADD A4,1,I . INCREASPM )@@G@@E NESTING LEVEL @E@@@A GOTO SKIPTOP . MOVE THRU NEXPN )@@G@@T TOKENS @E@@@ASKIPT1 LABEL . HERE TO CHECK FOR 'PO )@@G@@)' @F@@@A IF A3,NE,ACRBRK,I THEN,SKIPTOP . DON'T COUNT NONPARPP )@@G@@ENS @E@@@A LOOP A4,SKIPTOP . -> STILL NESTED TOO DEEP PQ )@@G@@@E@@@A GOTO NEXT . AT END OF SUBSCRIPTS @[@@@APR )@@G@@. @F@@@A. FRCPRT ROUTINES - CALL THE PRINTE ROUTINE TO PRINT PS )@@G@@OUT @F@@@A. THE TOP TREE AND THEN TAKE THE APPROIATE ACPT )@@G@@TION @[@@@A. @A@@@AFRCPRT1 LABEL . ')' ENCOUNTERED @E@@@A PU )@@G@@ LINK PRINTE . PRINT OUT LAST SUBSRCRIPT@E@@@A PRTPV )@@G@@SYM ')' . CLOSE SUBSCRIPT LIST @H@@@A JMP . (PW )@@G@@GOTO ?) . RETURN TO PRINT ROUTINE FOR OUTER LEVEL @D@@@AFRCPRTPX )@@G@@2 LABEL . ',' ENCOUNTERED @E@@@A LINK PPY )@@G@@RINTE . PRINT THIS SUBSCRIPT @E@@@A PRTSYM ',' . PZ )@@G@@ SEPERATE FROM NEXT ONE @E@@@A GOTO NEXT . QA )@@G@@ LOOK FOR NEXT SUBSCRIPT @D@@@AFRCPRT3 LABEL . EQB )@@G@@ND EXPR FOUND @E@@@A LINK PRINTE . PRINT OUT TREQC )@@G@@E FOR EXPR @D@@@A JMP . RETURN TO CROSS REFERENCE LISTER QD )@@G@@@I@@@A/. PRINTE . TRANSVERSE TREE, VISITING NODESQE )@@G@@ TO PRINT THEM @[@@@A. @[@@@A. @A@@@A. X9 -> TREE FOR QF )@@G@@PRINTING @^@@@A. X7 -> FREE LIST@B@@@A. X10,A2 ALTC REGQG )@@G@@S (SAVE IF USED) @[@@@A. @F@@@APRINTE LOCAL . EQH )@@G@@NTRY POINT TO PRINT TOP TREE @H@@@A LOAD X6,X9 . XQI )@@G@@6 WILL POINT TO CURRENT POSITION IN TREE @E@@@A LOAD X9,FLINQJ )@@G@@K,X6 . POP TOP TREE FROM STACK @ @@@A USING NODE,X6 . QK )@@G@@@D@@@A MOVE FLINK,0,I . MARK AS TOP NODE @F@@@A QL )@@G@@ LOAD A5,0,I . SAY STARTING AT LOWEST PRIORITY@E@@@AAPPROCQM )@@G@@ LABEL . APPROACH NODE FROM ABOVE @G@@@A LOAQN )@@G@@D X8,DATA . GET POINTER TO SD OR OPERATOR TABLE @ @@@A QO )@@G@@ USING SDSECT,X8 . @G@@@A IF SDBCSD,OFF,SDCLS4 THEN,APPROO QP )@@G@@. -> THIS NODE IS AN OPERATOR @E@@@A PRTSD . HQQ )@@G@@ERE WE HAVE AN SD IN X8 @F@@@A IF LLINK,ZERO THEN,APPRO1 . IS THQR )@@G@@IS AN ARRAY REFERENCE? @[@@@A. @C@@@A. SAVE CURRENT POSITIONQS )@@G@@ IN META CODE @A@@@A. SAVE CURRENT TREE POSITION @[@@@A. QT )@@G@@@D@@@A STORE X10,LLINK,X7 . SAVE ALTC POINTER @B@@@A QU )@@G@@ STORE A2,RLINK,X7 . '' @E@@@A LOAD A3,FLINK,X7 .QV )@@G@@ SAVE POINTER TO FREE LIST@D@@@A STORE X9,FLINK,X7 . SQW )@@G@@TACK THIS NODE @E@@@A LOAD X9,X7 . FINISH ACT OFQX )@@G@@ STACKING @E@@@A LOAD X7,A3 . POINT BACK AT FREE QY )@@G@@LIST @D@@@A STORE X6,DATA,X9 . SAVE TREE POSITION @E@@@AQZ )@@G@@ LOADXM X10,LLINK,X6 . GET POINTER TO SUBSCRIPTS@B@@@A RA )@@G@@ LOADXM A2,RLINK,X6 . '' @D@@@A PRTSYM '(' . RB )@@G@@ OPEN EXPRESSION @^@@@A LINK EXPR . @E@@@A LOARC )@@G@@D X6,DATA,X9 . GET BACK POSITION IN TREE@G@@@A LOADXM XRD )@@G@@10,LLINK,X9 . GET BACK TO CORRECT POSITION IN MCODE@B@@@A LOARE )@@G@@DXM A2,RLINK,X9 . '' @E@@@A LOAD A3,FLINK,X9 . GRF )@@G@@ET POINTER TO STACK TOP @E@@@A STORE X7,FLINK,X9 . PUT BACRG )@@G@@K ON FREE LIST @E@@@A LOAD X7,X9 . POINT TO NEWLRH )@@G@@Y FREED NODE@D@@@A LOAD X9,A3 . GET TOP OF STACK RI )@@G@@@G@@@AAPPRO1 LABEL . HERE WHEN READY TO MOVE UP FROMRJ )@@G@@ SD @E@@@A LOAD A5,9,I . GET SIMULATED PRECEDENCE RK )@@G@@@F@@@AGOUP LABEL . HERE TO MOVE UP IN THE TREE RL )@@G@@@E@@@A LOAD A3,FLINK . GET POINTER TO FATHER @E@@@ARM )@@G@@ STORE X7,FLINK . PUT NODE ONTO FREE LIST @D@@@A RN )@@G@@ LOAD X7,X6 . POINT TO FREE LIST @E@@@A LOAD XRO )@@G@@6,A3 . MOVE UP IN TREE TO FATHER@E@@@A IF A3,EQ,0RP )@@G@@,I THEN,JMP . DONE WITH THIS TREE? @F@@@A LOAD X8,DATA . RQ )@@G@@ GET POINTER TO SD FOR FATHER @E@@@A IF LLINK,ZERO THEN,PURR )@@G@@TPAR . -> UP FROM UNIARY OP @F@@@A LOAD A4,OPPREC,X8 . GRS )@@G@@ET PRECEDENCE AT NEW LEVEL @E@@@A IF A5,GE,A4 THEN,GOUP1 . CORT )@@G@@MING UP FROM LOWER? @G@@@APUTPAR LABEL . HERE IFRU )@@G@@ UNIARY OR IF UP FROM LOWER @D@@@A PRTSYM ')' . ERV )@@G@@ND SUBEXPRESSION @G@@@AGOUP1 LABEL . HERE TO TRY TRW )@@G@@O GO DOWN RIGHT SIDE @F@@@A LOAD A5,OPPREC,X8 . GET PRERX )@@G@@CEDENCE OF THIS OPERATOR@E@@@A IF RLINK,ZERO THEN,GOUP . -> JUSTRY )@@G@@ UP FROM LEFT SIDE@[@@@A. @B@@@A. HERE IF JUST COMING UP FROMRZ )@@G@@ RIGHT@[@@@A. @C@@@AGOUP2 LABEL . ENTRY FOR UNIARY OPERATORS SA )@@G@@@E@@@A PRTOPR . PRINT OUT THE OPERATOR @F@@@ASB )@@G@@ LOAD A3,RLINK . SET TO MOVE DOWN TO LOWER LEVEL@E@@@ASC )@@G@@ MOVE RLINK,0,I . SAY GOING DOWN RIGHT SIDE@D@@@A SD )@@G@@ LOAD X6,A3 . POINT TO NEW NODE @E@@@A GOTO ASE )@@G@@PPROC . TRY TO GO DOWN SOME MORE @[@@@A. @D@@@A. HERSF )@@G@@E TO APPROACH AN OPERATOR FROM THE TOP @[@@@A. @#@@@AAPPROO LABSG )@@G@@EL . @D@@@A LOAD A4,OPPREC,X8 . GET NEXT PRECEDENCE@F@@@ASH )@@G@@ IF A5,LE,A4 THEN,GODOWN . -> GOING DOWN TO HIGHER PREC @F@@@ASI )@@G@@ PRTSYM '(' . HERE GOING DOWN TO LOWER PREC @F@@@ASJ )@@G@@GODOWN LABEL . READY TO TRY LEFT HAND SIDE @E@@@ASK )@@G@@ LOAD A5,OPPREC,X8 . GET CURRENT PRECEDENCE @E@@@A SL )@@G@@ IF LLINK,NZERO THEN,NOTUNI . -> NOT UNIARY OPERATOR@[@@@A. @B@@@ASM )@@G@@. HERE WE HAVE AN UNIARY OPERATOR @[@@@A. @E@@@A PRTSN )@@G@@SYM '(' . STICK OUT LEADING PAREN @G@@@A GOTO GSO )@@G@@OUP2 . NOW PRINT OPERATOR AND GO DOWN LEFT @F@@@ANOTUNI LABSP )@@G@@EL . NOT UNIARY OP, GO DOWN TO LEFT @C@@@A LOASQ )@@G@@D X6,LLINK . MOVE DOWN @D@@@A GOTO APPROC . SR )@@G@@ SEE ABOUT SUBTREE @D@@@A END . THAT'S SS )@@G@@ALL FOLKS ___LIST @H@@@A JMP . (*[S@@@*SDFF*@C@@@W. COST )@@G@@PYRIGHT 1975 BY UNIVERSITY OF MARYLAND @[@@@W. @D@@@W. QUESTIONSU )@@G@@S CONCERNING THIS SHOULD BE DIRECTED TO: @[@@@W. @ @@@W. MARSV )@@G@@VIN V. ZELKOWITZ @B@@@W. DEPARTMENT OF COMPUTER SCIENCE @A@@@WSW )@@G@@. UNIVERSITY OF MARYLAND @B@@@W. COLLEGE PARK, MARYLANSX )@@G@@D 20742 @[@@@W. @G@@@W. PERMISSION TO USE THESE LISTINGS SY )@@G@@AND THE COMPUTER PROGRAMS THEY@E@@@W. REPRESENT IS GRANTED UNDER THE FSZ )@@G@@OLLOWING CONDITIONS: @[@@@W. @G@@@W. 1. UNLIMITED USE MAY TA )@@G@@BE MADE OF THE PROGRAMS REPRESENTED BY @G@@@W. THESE LISTINGS PROVITB )@@G@@DED THAT THE NAME PLUM OR UNIVERSITY OF MARYLAND@E@@@W. PL/1 COMPILER TC )@@G@@REMAINS ASSOCIATED WITH THESE PROGRAMS. @[@@@W. @F@@@W. 2. TD )@@G@@MODIFICATIONS MAY BE MADE TO THE LISTINGS PROVIDED: @[@@@W. @G@@@WTE )@@G@@. (A) ANY RESULTING PROGRAM, OR REPORT, PAPER OR DOCUMENTATION TF )@@G@@@G@@@W. DESCRIBING SUCH PROGRAM WILL CLEARLY INDICATE THAT THE PRTG )@@G@@OGRAM @E@@@W. IS A DIALECT OF PLUM OR IS DERIVED FROM PLUM, AND TH )@@G@@@[@@@W. @G@@@W. (B) ALL SUCH MODIFICATIONS, OTHER THAN TRIVIATI )@@G@@L CORRECTIONS @F@@@W. OF ERRORS IN THE SOURCE PROGRAMS, SHALLTJ )@@G@@ BE REPORTED AND @G@@@W. A BRIEF DESCRIPTION OF THE FEATURE ADDETK )@@G@@D SHALL BE SUBMITTED @C@@@W. TO THE UNIVERSITY OF MARYLAND, ANTL )@@G@@D @[@@@W. @F@@@W. (C) NO PROGRAMS DERIVED FROM THESE LISTTM )@@G@@INGS SHALL BE SOLD@G@@@W. WITHOUT WRITTEN APPROVAL FROM THE UNIVETN )@@G@@RSITY OF MARYLAND, AND @[@@@W. @F@@@W. (D) COPIES OF THESE PTO )@@G@@ROGRAMS MAY BE TRANSMITTED TO OTHER @G@@@W. LOCATIONS PROVIDED THTP )@@G@@AT SUCH TRANSMITTALS CLEARLY INDICATE @G@@@W. WHETHER THE PROTQ )@@G@@GRAMS ARE EXACT COPIES OF THE UNIVERSITY OF @E@@@W. MARYLAND TR )@@G@@PLUM COMPILER OR ARE MODIFICATIONS TO IT. @[@@@W. @G@@@W. 3. TS )@@G@@THESE CONDITIONS ONLY APPLY TO THE PLUM COMPILER ITSELF, @F@@@W. ANTT )@@G@@D ARE NOT MEANT TO APPLY TO ANY PROGRAM WRITTEN USING PLUM. @E@@@W. THTU )@@G@@E PURPOSE OF THESE CONDITIONS IS TO ALLOW ANY USER TO @F@@@W. EXPERIMETV )@@G@@NT WITH THE COMPILER AS LONG AS THE RESULTING PRODUCT @G@@@W. IS NOT STW )@@G@@OLD AND AS LONG AS IT IS KNOWN THAT THE PRODUCT DEVELOPED @#@@@W. FRTX )@@G@@OM PLUM. @[@@@W. @[@@@W. @[@@@W. @[@@@W. @[@@@W. TY )@@G@@@[@@@W/. @#@@@V/ AXR$ . @#@@@V DCLRG . @#@@@V TZ )@@G@@ UNLIST . @#@@@V@ADD,P PLTVDS . @#@@@V@ADD,P PLCGST . @#@@@V@ADD,PUA )@@G@@ PLDSAW . @#@@@V LIST . @#@@@V PLWORD .@#@@@V UB )@@G@@ PLCGD . @#@@@V PLSD . @#@@@V PLAC . @#@@@W UC )@@G@@ PLAR . @#@@@V PLIG . @#@@@VCGBF CSECT 3. @[@@@V. UD )@@G@@@D@@@VFGPANO* . PAGE NUMBER BIF @D@@@VFGLINOUE )@@G@@* . LINE NUMBER BIF @[@@@V. @[@@@V. UF )@@G@@@ @@@VFILL(1) SAC GGTNOP,CBFILE@ @@@VFILL(1) SAC CBBNOP,0 UG )@@G@@@[@@@V. @[@@@V. @E@@@VFGPNPV* . PAGE NUH )@@G@@UMBER PSEUDO VAR @[@@@V. @[@@@V. @A@@@VFILL(1) SAC GGTNOP,UI )@@G@@CBPAGE . @ @@@VFILL(1) SAC CBBNOP,0 @[@@@V. @[@@@V. UJ )@@G@@@C@W@VFGENDT* . ENDFILE BIF @[@W@V. @[@W@VUK )@@G@@. @ @W@VFILL(1) SAC CBSMLM,FGENFX@ @W@VFILL(1) SAC 0,UL )@@G@@FGENFY@[@W@V. @^@W@V. VALUE MODE @[@W@V. @[@W@VFGENFXUM )@@G@@@[@W@V. @[@W@V. @ @W@VFILL(1) SAC GGTNOP,CSENDV@ @W@VFILL(1UN )@@G@@) SAC CBDATX,0 @[@W@V. @^@W@V. MAX LEN MODE @[@W@VUO )@@G@@. @[@W@VFGENFY@[@W@V. @[@W@V. @ @W@VFILL(1) SAC GGTNOP,UP )@@G@@CSENDM@ @W@VFILL(1) SAC CBBTIM,0 @[@W@V. @[@@@V. @C@@@VUQ )@@G@@FGINDX* . INDEX BIF @C@@@VFGVERY* LABEL . UR )@@G@@ VERIFY BIF @[@@@V. @[@@@V. @ @@@VFILL(1) SACUS )@@G@@ GGTIDX,CBBORL@ @@@VFILL(1) SAC CBBNOP,0 @[@@@V. @[@@@VUT )@@G@@. @C@@@VFGLNTH* . LENGTH BIF @[@@@V. UU )@@G@@@[@@@V. @A@@@VFILL(1) SAC GGTSME,CBBORL . @ @@@VFILL(1) SACUV )@@G@@ CBBNOP,0 . @[@@@V. @[@@@V. @C@@@VFGTIME* . UW )@@G@@ TIME BIF @C@@@VFGDATE* . DATE BIUX )@@G@@F @[@@@V. @[@@@V. @C@@@VFILL(1) SAC CBSMLM,FGTIMX . VUY )@@G@@ALUE MODE @D@@@VFILL(1) SAC 0,FGTIMY . MAX LENGTH MODE UZ )@@G@@@[@@@V. @A@@@V. TIME - DATE IN VALUE MODE @[@@@V. @[@@@VVA )@@G@@FGTIMX@[@@@V. @[@@@V. @ @@@VFILL(1) SAC GGTNOP,CBDATE @ @@@VVB )@@G@@FILL(1) SAC CBDATX,0 . @[@@@V. @B@@@V. TIME - DATE IN VC )@@G@@MAX LENGTH MODE @[@@@V. @[@@@VFGTIMY@[@@@V. @[@@@V. @A@@@VVD )@@G@@FILL(1) SAC GGTNOP,CSDATM . @ @@@VFILL(1) SAC CBBTIM,0 . VE )@@G@@@[@@@V. @[@@@V. @D@@@VFGCLPV* . CLOCK PVF )@@G@@SEUDO VAR @[@@@V. @[@@@V. @ @@@VFILL(1) SAC GGTNOP,CBCLPV VG )@@G@@@^@@@VFILL(1) SAC CBBNOP,0 @[@@@V. @[@@@V. @C@@@WFGONCD* . VH )@@G@@ ONCODE BIF @[@@@W. @[@@@W. @ @@@WFILL(1VI )@@G@@) SAC GGTNOP,CBONCD@ @@@WFILL(1) SAC CBBNOP,0 @[@@@W. VJ )@@G@@@[@@@W. @C@@@WFGONST* . ONSTMT BIF @[@@@WVK )@@G@@. @[@@@W. @ @@@WFILL(1) SAC GGTNOP,CBONST@ @@@WFILL(1) SACVL )@@G@@ CBBNOP,0 @[@@@X. @[@@@X. @C@@@XFGONCB* . VM )@@G@@ ONCHAR BIF @[@@@X. @[@@@X. @A@@@XFILL(1) SAC CVN )@@G@@BSMLM,FGONCX . @ @@@XFILL(1) SAC 0,FGONCY . @[@@@X. @[@@@XVO )@@G@@. @ @@@XFGONCX . VALUE MODE @[@@@X. @[@@@X. @A@@@XVP )@@G@@FILL(1) SAC GGTNOP,CBONCB . @ @@@XFILL(1) SAC CBBNOP,0 . VQ )@@G@@@[@@@X. @[@@@X. @ @@@XFGONCY . MAX LENGTH @[@@@X. VR )@@G@@@[@@@X. @A@@@XFILL(1) SAC GGTNOP,CBONCM . @ @@@XFILL(1) SACVS )@@G@@ CBBTIM,0 . @[@@@X. @[@@@X. @C@@@XFGONSB* . VT )@@G@@ ONSOURCE BIF @[@@@X. @[@@@X. @A@@@XFILL(1) SAC CVU )@@G@@BSMLM,FGONSX . @ @@@XFILL(1) SAC 0,FGONSY . @[@@@X. @[@@@XVV )@@G@@. @ @@@XFGONSX . VALUE MODE @[@@@X. @[@@@X. @A@@@XVW )@@G@@FILL(1) SAC GGTNOP,CBONSB . @ @@@XFILL(1) SAC CBBNOP,0 . VX )@@G@@@[@@@X. @[@@@X. @ @@@XFGONSY . MAX LENGTH @[@@@X. VY )@@G@@@[@@@X. @A@@@XFILL(1) SAC GGTNOP,CBONSM . @ @@@XFILL(1) SACVZ )@@G@@ CBBTIM,0 . @[@@@X. @[@@@X. @C@@@XFGONLC* . WA )@@G@@ ONLOC BIF @[@@@X. @[@@@X. @A@Y@XFILL(1) SAC CWB )@@G@@BMSLM,FGONLX . @A@@@YFILL(1) SAC CBSMLM,FGONLX . @ @@@XFILL(1WC )@@G@@) SAC 0,FGONLY . @[@@@X. @[@@@X. @ @@@XFGONLX . VWD )@@G@@ALUE MODE @[@@@X. @[@@@X. @A@@@XFILL(1) SAC GGTNOP,CBONLCWE )@@G@@ . @ @@@XFILL(1) SAC CBBNOP,0 . @[@@@X. @[@@@X. @ @@@XWF )@@G@@FGONLY . MAX LENGTH @[@@@X. @[@@@X. @A@@@XFILL(1) SACWG )@@G@@ GGTNOP,CBONLM . @ @@@XFILL(1) SAC CBBTIM,0 . @[@@@X. WH )@@G@@@[@@@X. @C@@@XFGONFL* . ONFILE BIF @[@@@XWI )@@G@@. @[@@@X. @A@@@XFILL(1) SAC CBSMLM,FGONFX . @ @@@XFILL(1WJ )@@G@@) SAC 0,FGONFY . @[@@@X. @[@@@X. @ @@@XFGONFX . VWK )@@G@@ALUE MODE @[@@@X. @[@@@X. @A@@@XFILL(1) SAC GGTNOP,CBONFLWL )@@G@@ . @ @@@XFILL(1) SAC CBBNOP,0 . @[@@@X. @[@@@X. @ @@@XWM )@@G@@FGONFY . MAX LENGTH @[@@@X. @[@@@X. @A@@@XFILL(1) SACWN )@@G@@ GGTNOP,CBONFM . @ @@@XFILL(1) SAC CBBTIM,0 . @[@@@X. WO )@@G@@@[@@@X. @C@@@XFGONFD* . ONFIELD BIF @[@@@XWP )@@G@@. @[@@@X. @A@@@XFILL(1) SAC CBSMLM,FGONDX . @ @@@XFILL(1WQ )@@G@@) SAC 0,FGONLY . @[@@@X. @[@@@X. @ @@@XFGONDX . VWR )@@G@@ALUE MODE @[@@@X. @[@@@X. @A@@@XFILL(1) SAC GGTNOP,CBONFDWS )@@G@@ . @ @Y@XFILL(1)SAC CBBNOP,0 . @ @@@YFILL(1) SAC CBBNOP,WT )@@G@@0 . @[@@@W. @[@@@W. @C@@@VFGCLCK* . CWU )@@G@@LOCK BIF @[@@@V. @[@@@V. @ @@@VFILL(1) SAC GGTNOP,CBCLBF WV )@@G@@@^@@@VFILL(1) SAC CBBNOP,0 @[@@@V. @[@@@V. @C@@@VFGAFTR* . WW )@@G@@ AFTER BIF @C@@@VFGBFOR* . WX )@@G@@ BEFORE BIF @[@@@V. @[@@@V. @A@@@VFILL(1) SAC CBSMLM,WY )@@G@@CBAFTR . @A@W@VFILL(1) SAC 0,CMAFTR . @A@@@WFILL(1) SACWZ )@@G@@ 0,CMREVS . @[@@@V. @B@@@V. VALUE MODE FOR BEFOREXA )@@G@@ AND AFTER @[@@@V. @[@@@VCBAFTR@[@@@V. @[@@@V. @A@@@VFILL(1XB )@@G@@) SAC GGTIDX,CBDATE . @ @@@VFILL(1) SAC CBDATX,0 . @[@W@VXC )@@G@@. @B@W@V. MAX LEN MODE FOR BEFORE AND AFTER@[@W@V. @[@W@VXD )@@G@@CMAFTR@[@W@V. @[@W@V. @A@W@VFILL(1) SAC GGTNOP,CMAFT1 . XE )@@G@@@ @W@VFILL(1) SAC CBBNOP,0 . @[@@@V. @[@@@V. @C@@@VFGHIGHXF )@@G@@* . HIGH BIF @B@@@VFGLOWT* . XG )@@G@@ LOW BIF@[@@@V. @[@@@V. @A@@@VFILL(1) SAC CBSMLM,XH )@@G@@CBLOWX . @A@@@VFILL(1) SAC 0,CBLOWY . @[@@@V. @A@@@VXI )@@G@@. VALUE MODE FOR HIGH AND LOW@[@@@V. @[@@@VCBLOWX@[@@@V. XJ )@@G@@@[@@@V. @A@@@VFILL(1) SAC GGTLOW,CBDATE . @ @@@VFILL(1) SACXK )@@G@@ CBDATX,0 . @[@@@V. @B@@@V. MAX LEN MODE FOR HIGH AND LXL )@@G@@OW @[@@@V. @[@@@VCBLOWY@[@@@V. @[@@@V. @A@@@VFILL(1) SACXM )@@G@@ GGTNOP,CBLOWM . @ @@@VFILL(1) SAC CBBNOP,0 . @[@@@V. XN )@@G@@@[@@@V. @C@@@VFGCLAT* . COLLATE BIF @[@@@VXO )@@G@@. @[@@@V. @A@@@VFILL(1) SAC CBSMLM,CSCLAT . @A@@@VFILL(1XP )@@G@@) SAC 0,CMCLAT . @[@@@V. @^@@@V. VALUE MODE XQ )@@G@@@[@@@V. @[@@@VCSCLAT@[@@@V. @[@@@V. @A@@@VFILL(1) SAC GXR )@@G@@GTNOP,CSBCLA . @ @@@VFILL(1) SAC CBNOPXX,0 . @[@@@V. @^@@@VXS )@@G@@. MAX LEN MODE @[@@@V. @[@@@VCMCLAT@[@@@V. @[@@@V. XT )@@G@@@A@@@VFILL(1) SAC GGTNOP,CBCLAT . @ @@@VFILL(1) SAC CBBTIM,XU )@@G@@0 . @[@@@V. @[@@@V. @C@@@VFGEVRY* . EXV )@@G@@VERY BIF @C@@@VFGSOME* . SOME BIF @[@@@VXW )@@G@@. @[@@@V. @A@@@VFILL(1) SAC CBSMLM,CBSOME . @ @@@VFILL(1XX )@@G@@) SAC 0,CMSOME . @[@@@V. @^@@@V. VALUE MODE @[@@@VXY )@@G@@. @[@@@VCBSOME@[@@@V. @[@@@V. @A@@@VFILL(1) SAC GGSTME,XZ )@@G@@CBBBOL . @ @@@VFILL(1) SAC CBDATX,0 . @[@@@V. @^@@@V. YA )@@G@@ MAX LEN MODE @[@@@V. @[@@@VCMSOME@[@@@V. @[@@@V. @A@@@VYB )@@G@@FILL(1) SAC GGTNOP,CMSSOM . @ @@@VFILL(1) SAC CBBTIM,0 . YC )@@G@@@[@@@V. @[@@@V. @C@@@VFGTRNS* . TRANSLAYD )@@G@@TE BIF@C@@@VFGDCAT* . DECAT BIF @[@@@V. YE )@@G@@@[@@@V. @A@@@VFILL(1) SAC CBSMLM,CTRNSX . @A@W@VFILL(1) SACYF )@@G@@ 0,CTRNSY . @A@@@WFILL(1) SAC 0,CMREVS . @[@@@VYG )@@G@@. @^@@@V. VALUE MODE @[@@@V. @[@@@VCTRNSX@[@@@V. YH )@@G@@@[@@@V. @A@@@VFILL(1) SAC CBTRNS,CBDATE . @A@@@VFILL(1) SACYI )@@G@@ CBDATX,0 . @[@W@V. @^@W@V. MAX LEN MODE @[@W@VYJ )@@G@@. @[@W@VCTRNSY@[@W@V. @[@W@V. @A@W@VFILL(1) SAC CTTRNS,YK )@@G@@CMAFT1 . @A@W@VFILL(1) SAC CBBNOP,0 . @[@@@V. @[@@@VYL )@@G@@. @C@@@VFGRVSE* . REVERSE BIF @[@@@V. YM )@@G@@@[@@@V. @A@@@VFILL(1) SAC CBSMLM,CBRVSE . @A@@@VFILL(1) SACYN )@@G@@ 0,CMREVS . @[@@@V. @A@@@V. VALUE MODE FOR REVERSYO )@@G@@E @[@@@V. @[@@@VCBRVSE@[@@@V. @[@@@V. @A@@@VFILL(1) SACYP )@@G@@ GGTSME,CBDATE . @ @@@VFILL(1) SAC CBDATX,0 . @[@@@V. YQ )@@G@@@^@@@V. MAX LEN MODE @[@@@V. @[@W@VCMREVS@F@@@WCMREVS . YR )@@G@@ MOVE S1 ONTO BIF ARG,RETURN @[@@@V. @[@@@VYS )@@G@@. @A@@@VFILL(1) SAC GGTNOP,CBREVM . @A@@@VFILL(1) SAC CYT )@@G@@BBNOP,0 . @[@@@V. @[@@@V. @C@@@VFGCOPY* . YU )@@G@@ COPY BIF @[@@@V. @[@@@V. @A@@@VFILL(1) SAC CYV )@@G@@BSMLM,CVCOPY . @A@@@VFILL(1) SAC 0,CMCOPY . @[@@@V. YW )@@G@@@^@@@V. VALUE MODE @[@@@V. @[@@@VCVCOPY@[@@@V. @[@@@VYX )@@G@@. @A@@@VFILL(1) SAC CBCOPY,CBDATE . @A@@@VFILL(1) SAC CYY )@@G@@BDATX,0 . @[@@@V. @^@@@V. MAX LEN MODE @[@@@V. YZ )@@G@@@[@@@VCMCOPY@[@@@V. @[@@@V. @A@@@VFILL(1) SAC GGTNOP,CSCOPYZA )@@G@@ . @A@@@VFILL(1) SAC CBBNOP,0 . @[@@@V. @[@@@V. ZB )@@G@@@C@@@VFGBOOL* . BOOL BIF @[@@@V. @[@@@VZC )@@G@@. @ @@@VFILL(1) SAC CBSMLM,CBBOOL@ @@@VFILL(1) SAC 0,ZD )@@G@@CMBOOL@[@@@V. @^@@@V. VALUE MODE @[@@@V. @[@@@VCBBOOLZE )@@G@@@[@@@V. @[@@@V. @ @@@VFILL(1) SAC CB3STR,CBBBOL@ @@@VFILL(1ZF )@@G@@) SAC CBDATX,0 @[@@@V. @^@@@V. MAX LEN MODE @[@@@VZG )@@G@@. @[@@@VCMBOOL@[@@@V. @[@@@V. @ @@@VFILL(1) SAC GGTNOP,ZH )@@G@@CMBOLX@ @@@VFILL(1) SAC CBBNOP,0 @[@@@V. @[@@@V. @C@@@VZI )@@G@@FGSBST* . SUBSTR BIF @[@@@V. @[@@@V. ZJ )@@G@@@A@@@VFILL(1) SAC CBSMLM,CSSBTR . @A@W@VFILL(1) SAC 0,ZK )@@G@@CMSBTR . @A@@@WFILL(1) SAC 0,CMREVS . @[@@@V. @ @@@VZL )@@G@@. VALUE MODE SUBSTR @[@@@V. @[@@@VCSSBTR@[@@@V. @[@@@VZM )@@G@@. @A@@@VFILL(1) SAC GGTNOP,CSTSTR . @ @@@VFILL(1) SAC CZN )@@G@@BBNOP,0 . @[@W@V. @^@W@V. MAX LEN MODE @[@W@V. @[@W@VZO )@@G@@CMSBTR@[@W@V. @[@W@V. @A@W@VFILL(1) SAC GGTNOP,CMSSTR . ZP )@@G@@@ @W@VFILL(1) SAC CBBNOP,0 . @[@@@V. @[@@@V. @D@@@VFGSBPVZQ )@@G@@* . SUBSTR PSEUDO VAR @[@@@V. @[@@@V. ZR )@@G@@@A@@@VFILL(1) SAC GGTNOP,CSBTRP . @ @@@VFILL(1) SAC CBBNOP,ZS )@@G@@0 . @[@@@V. @[@@@V. @[@@@V. @^@@@V. CSF$ SUBROUTINEZT )@@G@@@]@@@VFGCSF$* @[@@@V. @[@@@V. @ @@@VFILL(1) SAC CBSMLM,CBZU )@@G@@CSF$ .@ @@@VFILL(1) SAC 0,CMCSF$ . @[@@@V. @ @@@V. VALZV )@@G@@UE MODE FOR CSF$ @[@@@V. @]@@@VCBCSF$ . @[@@@V. @[@@@V. ZW )@@G@@@A@@@VFILL(1) SAC GGTCSF,CBBBOL . @ @@@VFILL(1) SAC CBDATX,ZX )@@G@@0 . @[@@@V. @A@@@V. MAX LENGTH MODE FOR CSF$ @[@@@VCMCSF$ZY )@@G@@@[@@@V. @[@@@V. @ @@@VFILL(1) SAC GGTNOP,CSCSF$ .@ @@@VFILL(1ZZ )@@G@@) SAC CBBTIM,0 . @[@@@V. @[@@@V. @C@@@VFGTRIM* . AA )@@G@@ TRIM BIF @[@@@V. @[@@@V. @A@@@VFILL(1) SACAB )@@G@@ CBSMLM,CBTRIM . @A@@@VFILL(1) SAC 0,CMREVS . @[@@@VAC )@@G@@. @^@@@V. VALUE MODE @[@@@V. @]@@@VCBTRIM . @[@@@VAD )@@G@@. @[@@@V. @A@@@VFILL(1) SAC GGTSME,CBTRMX . @ @@@VFILL(1AE )@@G@@) SAC CBDATX,0 . @[@@@V. @[@@@V. @C@@@VFGUNSP* . AF )@@G@@ UNSPEC BIF @[@@@V. @[@@@V. @A@@@VFILL(1) SACAG )@@G@@ CBSMLM,CBUNSP . @A@@@VFILL(1) SAC 0,CMUNSP . @[@@@VAH )@@G@@. @B@@@V. VALUE MODE FOR UNSPEC @[@@@V. @]@@@VAI )@@G@@CBUNSP . @[@@@V. @[@@@V. @G@@@VFILL(1) SAC GGTNOP,CBUNSXAJ )@@G@@ . EVERYTHING GETS DONE AT STAGEING @ @@@VFILL(1) SAC CBBNOP,AK )@@G@@0 . @[@@@V. @A@@@V. MAXLENGTH MODE FOR UNSPEC @[@@@V. AL )@@G@@@]@@@VCMUNSP . @[@@@V. @[@@@V. @F@@@VFILL(1) SAC GGTNOP,AM )@@G@@CMUNSX . IT IS ALL DONE AT STAGEING @ @@@VFILL(1) SAC CBBNOP,AN )@@G@@0 . @[@@@W. @[@@@W. @C@@@WFGUNPV* . UAO )@@G@@NSPEC PV @[@@@W. @[@@@W. @F@@@WFILL(1) SAC GGTNOP,CSUNPVAP )@@G@@ . IT IS ALL DONE AT STAGEING @ @@@WFILL(1) SAC CBBNOP,0 . AQ )@@G@@@ @@@V USING SGDSCT,X7 . @C@@@V/ . FILE RELATED AR )@@G@@BUILTIN FUNCTIONS @[@@@V. @ @@@V. PAGENO(FILE) @ @@@VAS )@@G@@. LINENO(FILE) @[@@@V. @E@@@VCBFILE LABEL . STAGGIAT )@@G@@NG FOR FILE BIFS RETURNING INTEGER @^@@@V GNTR 2 . @D@@@VAU )@@G@@ LOAD X2,SGDRSD . LOAD UP SD OF FILE@G@@@V STOAV )@@G@@RE X2,AGX0OF . LOAD FILE SD TO WHERE IGEN CAN GET @E@@@V AW )@@G@@ XGPOP . POP OFF FILE STACK ENTRY@E@@@V MOVAX )@@G@@E SGDAID,DCBCLN . SET FIXED BIN RESULT @#@@@V GENM . AY )@@G@@@E@@@V GINST OPLA,AGRA3,AGXR0,U . LOAD FILE SD INTO A3 @ @@@VAZ )@@G@@ GSUB 'BILTN' . @ @@@V GGETGR AGRL1,1 . @F@@@VBA )@@G@@ GINST OPSA,AGRA3,AGRL1 'NO' . SAVE RESULT FROM BIF @#@@@VBB )@@G@@CBNOPXX GLBL . @#@@@V GFIN . @B@@@V GOTO CBBRL4 BC )@@G@@. EXIT @[@@@V. @A@W@V. ENDFILE(FILE) BIF BD )@@G@@@[@W@V. @E@W@VCSENDV LABEL . STAGING FOR ENDFILE BIF IN VALUE MODBE )@@G@@E @^@W@V GNTR 2 . @C@W@V NONPL1 XGFENF,DCBENF,BF )@@G@@CBFILF . ENDFILE@#@W@VCBFILF LABEL . @F@W@V SET 04,ON,DGOPTBG )@@G@@4 . SET ENDFILE FUNCTION PRESENT...@C@W@V LOAD X2,SGDRBH )@@G@@SD . GET FILE SD @B@W@V XGPOP . POP OFF FILE STACK ENTRYBI )@@G@@@D@W@V MOVE SGDAID,CBTSTR,2 . SET STRING TEMP @E@W@V BJ )@@G@@ STORE X2,AGX0OF . STORE FILE SD FOR IGEN @#@W@V GENBK )@@G@@ . @E@W@V GINST OPLA,AGRA3,AGXR0,U . LOAD FILE SD INTO A3 BL )@@G@@@G@W@V GOTO GGTRE0 . EXIT, FINISH WITH ICODE FROM XBM )@@G@@GEN @[@W@V. @[@W@V. @[@W@V. @E@W@VCSENDM LABEL . MAX LEBN )@@G@@N MODE FOR ENDFILE BIF IS CONSTANT 1@F@W@V XGPOP . BO )@@G@@ POP OFF FILE SD NOT NEEDED @D@W@V LOAD A7,1,I . BP )@@G@@ SET THE CONSTANT 1@G@W@V GOTO CBSLLA . MERGE BQ )@@G@@WITH OTHER CONSTANT MAX LENS @[@@@V. @B@@@V. PAGENUMBR )@@G@@BER PSEUDO VAR @[@@@V. @G@@@VCBPAGE LLOC . SBS )@@G@@TAGEING FOR PAGENUMBER PSEUDO VAR @^@@@V GNTR 2 . @D@@@VBT )@@G@@ MOVE SGDRSD+DCGSLT,SGDRSD . SAVE FILE SD @F@@@V XGPBU )@@G@@OP . POP OFF STACK ELT FOR FILE @D@@@V MOVBV )@@G@@E SGDID,15,I . SET TO PAGENO PV @B@@@V GOTO CBBR4L BW )@@G@@. RETURN @E@@@V/. INITIALIZATION OF FUNCTIONS THAT WORK OBX )@@G@@N STRUCTURES@G@@@VINEVRY* LLOC . GENERATE INITIALIZABY )@@G@@TION FOR EVERY BIF@C@@@V LOAD A3,'1',I . ASSUME TRUE BZ )@@G@@@E@@@V GOTO INITAI . MERGE WITH INIT FOR SOME @F@@@VCA )@@G@@INSOME* LLOC . GENREATE CODE TO START SOME @C@@@VCB )@@G@@ LOAD A3,'0',I . ASSUME FALSE @#@@@VINITAI LABEL . CC )@@G@@@^@@@V GNTR 2 . @D@@@V STORE A3,AGX0OF . SCD )@@G@@AVE ASSUMED VALUE @C@@@V MOVE SGDAID,CBSBIT,2 . SET STACK CE )@@G@@@D@@@V GTMP 3 . GET ROOM FOR RESULT@E@@@V CF )@@G@@ STORE A8,SGDRDS . SET DISPLACEMENT TO TEMP @F@@@V ADDCG )@@G@@ A8,2,I . POINT TO WHERE STRING GOES @D@@@V STOCH )@@G@@RE A8,AGR10D . SET ADDRESS,X10 @D@@@V GENM . CI )@@G@@ BUILT DV RIGHT HERE@[@@@V. @F@@@V. NOTE: TCJ )@@G@@HIS COULD EASILY BE DONE IN A SUBROUTINE @[@@@V. @^@@@V GLICK )@@G@@T 1 . @D@@@V DL A3,BFINIT . GET FLAGS AND SIZE CL )@@G@@@D@@@V GDBLE OPDS,AGRA3,AGRL1 'NO' . SET INTO DV @G@@@V CM )@@G@@ GINST OPLA,AGRA3,AGXR10,U 'NO' . POINT TO WHERE STRING GOES @E@@@VCN )@@G@@ GINST OPLA,AGRA1,AGXR0,U 'NO' . GET START CHAR @^@@@V CO )@@G@@ GLIT 1 . @D@@@V SA,S1 A1,0,A3 . INITIALIZE STCP )@@G@@RING @F@@@V GINST OPSA,AGRA3,AGRL1,H2 'NO' . POINT DV TO STRICQ )@@G@@NG @C@@@VCBBNOP GLBL . NOP CODE GEN @#@@@V CR )@@G@@ GFIN . @G@@@VINFUDG LABEL . MERGE HERE TO POINTCS )@@G@@ TO ACTION TABLE @[@@@V. @A@@@V. CHECK IF MAX LENGTH MODE? CT )@@G@@@[@@@V. @D@@@V LOAD A3,SGDACT+DCGSLT . GET CURRENT OFFSETCU )@@G@@@D@@@V LA,H2 A8,XGTBL2,A3 . GET NEW OFFSET @D@@@V CV )@@G@@ STORE A8,SGDACT+DCGSLT . SET NEW OFFSET @D@@@V GRTN 2CW )@@G@@ . RETURN TO XGEN @[@@@V. @D@@@V. ACX )@@G@@ND NOW THE MATH INITALIZED FUNCTIONS@[@@@V. @#@@@VINSUMT* LLOC . CY )@@G@@@C@@@V LOADA X5,SDA0 . POINT TO ZERO@C@@@V LOACZ )@@G@@D A3,SUMIN . GET ATTR @D@@@V GOTO INPRO1 . DA )@@G@@ MERGE WITH PROD @#@@@VINPROD* LLOC . @D@@@V LOADA XDB )@@G@@5,SDA1 . START WITH A ONE @C@@@V LOAD A3,PRODIN . DC )@@G@@ GET ATTR @^@@@VINPRO1 GNTR 2 . @C@@@V STORE ADD )@@G@@3,SGDAID . SET ATTR @B@@@V STORE X5,SGDRSD . SDE )@@G@@ET SD @ @@@V USING SDSECT,X5 . @E@@@V MOVE SGDRDS,DF )@@G@@SDLCOF . GET ADDRESS OF CONSTANT @D@@@V MOVE SGDRBS,AGXR0+DG )@@G@@FH1 . SET BASE REG = X0 @G@@@V GOTO INFUDG . MERGE WDH )@@G@@ITH STRING INIT FUNCTIONS @C@@@V/ . STRING FUNCTIONS RETURNING DI )@@G@@INTEGER @[@@@V. @A@@@V. INDEX(STRING1,STRING2) @A@@@VDJ )@@G@@. VERIFY(STRING1,STRING2) @^@@@V. LENGTH(STRING) @[@@@VDK )@@G@@. @D@@@VGGTIDX LABEL . TARGETING FOR TW0(2) STRING ARGUMENTS@#@@@VDL )@@G@@ GNTR 2@#@@@V GENM . @E@@@V GINST OPLA,AGDM )@@G@@RA2,AGRL2,U . GET DV OF 1ST STRING @E@@@V GINST OPLA,AGRA3,AGDN )@@G@@RL1,U . GET DV OF 2ND STRING @^@@@V GFIN . @D@@@V DO )@@G@@ XGPOP 'SIZE',2*DCGSLT . POP OFF BOTH ARGS @B@@@V GRTN 2DP )@@G@@ . EXIT @ @@@V/ . STRING FUNCTIONS @[@@@V. DQ )@@G@@@#@@@V. TIME @#@@@V. DATE @[@@@V. @ @@@V. DR )@@G@@ TIME AND DATE STAGING@[@@@V. @#@@@VCBDATE LABEL . @#@@@V DS )@@G@@ GNTR 2 .@B@@@VCBDAT1 LABEL . ENTRY POINT FOR TRIM BIF @E@@@V DT )@@G@@ MOVE SGDAID,CBTSTR,2 . SET TEMP STRING RESULT @F@@@V GOTDU )@@G@@O GGTRE0 . RETURN TO XGEN WITH CLEAR CODE @[@@@V. @^@@@VDV )@@G@@. TRIM STAGEING @[@@@V. @#@@@VCBTRMX LABEL . @^@@@V DW )@@G@@ GNTR 2 . @F@@@V NONPL1 XGTRIM,DCBTRM,CBDAT1 . SAY TRIMDX )@@G@@ IS NONSTANDARD @ @@@V GOTO CBDAT1 . @[@@@V. @^@@@VDY )@@G@@. CSF$ STAGING @[@@@V. @#@@@VCSCSF$ LABEL . @D@@@V DZ )@@G@@ LOAD A7,36,I . SET LENGTH OF REPLY@H@@@V GOTO CBSEA )@@G@@LLA . ->SET LENGTH OF REPLY FOR MAX LENGTH MODE @[@@@V. EB )@@G@@@ @@@V. STAGEING FOR BOOL @[@@@V. @#@@@VCBBBOL LABEL . EC )@@G@@@^@@@V GNTR 2 . @E@@@V MOVE SGDAID,CBTBIT,2 . SED )@@G@@ET RESULT TO BE BIT @F@@@V GOTO GGTRE0 . RETURN EE )@@G@@TO XGEN WITH CLEAR CODE @[@@@V. @B@@@V. TIME AND DATE - MAX LEF )@@G@@ENGTH MODE @[@@@V. @#@@@VCSDATM LABEL . @E@@@V LOAD A7,EG )@@G@@6,I . SET LENGTH OF RESULT TO 6@[@@@V. @F@@@VCBSLLA* LABEH )@@G@@EL . SET L,U REG,SIZE OF RESULT @#@@@V GNTEI )@@G@@R 2 .@D@@@V MOVE SGDIBS,AGXR0+FH1 . SET X0 BASE @F@@@VEJ )@@G@@ STORE A7,SGDIDS . SET OFFSET (SIZE OF RESULT) @D@@@VEK )@@G@@CBBR4L LABEL . MERGE HERE TO EXIT @D@@@V MOVEL )@@G@@E DCGSV2+9,0,I . SET RETURN VALUE @D@@@V GRTN 2 . EM )@@G@@ RETURN TO ICDE @[@@@V. @ @@@V. CLOCK PSEUDO VAEN )@@G@@RIABLE@[@@@V. @#@@@VCBCLPV LLOC . @#@@@V GNTR 2 .@B@@@VEO )@@G@@ NONPL1 XGFCLK,DCBCLK,CBCL01 . @#@@@VCBCL01 LABEL . @D@@@VEP )@@G@@ MOVE SGDID,14,I . SET PSEUDOVAR TYPE @C@@@V GOTEQ )@@G@@O CBBR4L . ->RETURN @[@@@V. @[@@@V. @#@@@VCBCLBFER )@@G@@ LLOC . @#@@@V GNTR 2 .@B@@@V NONPL1 XGFCLK,DCBCLK,ES )@@G@@CBCL02 . @^@@@V GOTO CBCL02 . @[@@@V. @H@@@VCBBORL LABET )@@G@@EL . STAGING FOR BIF RETURNING FIXED BINARY @#@@@VEU )@@G@@ GNTR 2 .@#@@@VCBCL02 LABEL . @C@@@V MOVE SGDAID,DCEV )@@G@@BCLN . SET STACK @#@@@V GENM @^@@@V GSUB 'BIEW )@@G@@LTN' @F@@@V GGETGR AGRL1,1 . GET A REGISTER FOR THE REEX )@@G@@SULT @B@@@V GINST OPSA,AGRA3,AGRL1 'NO' . @#@@@V GFIEY )@@G@@N . @C@@@V GOTO CBBRL4 . -> RETURN @[@W@V. EZ )@@G@@@F@W@V. AFTER(STRING1,STRING2) AND BEFORE(STRING1,STRING2) BIFS FA )@@G@@@[@W@V. @C@W@VCMAFT1 LABEL . MAX LEN MODE FROM STRING1 @^@W@VFB )@@G@@ GNTR 2 . @C@W@V MOVE AGRL1+2*DCGSLT,AGRL1+DCGSFC )@@G@@LT . @D@W@V XGPOP 'SIZE',2*DCGSLT . POP OFF BOTH ARGS @E@W@VFD )@@G@@ SET SGDHLF,ON,SGDID . SET DV HALF FLAG ON @F@W@V FE )@@G@@ GOTO GGTRE0 . RETURN TO XGEN WITH CLEAR CODE @[@@@V. FF )@@G@@@A@@@V. HIGH(N) AND LOW(N) BIFS @[@@@V. @B@@@VGGTLOW LABFG )@@G@@EL . 1 ARG TO BIN FIXED(35,0) @^@@@V GNTR 2 . @F@@@V FH )@@G@@ CGCONV DCBCSM R,X7 . CONVERT FO FIXED BIN(17,0) @#@@@V FI )@@G@@ GEN . @D@@@V GINST OPLA,AGRA3,AGRL1 . LOAD INTO REG FJ )@@G@@@#@@@V XGPOP . @B@@@V GRTN 2 . EXIT FK )@@G@@@[@@@V. @B@@@V. MAX LEN MODE FOR HIGH AND LOW @[@@@V. FL )@@G@@@#@@@VCBLOWM LABEL . @^@@@V GNTR 2 . @F@@@V CGCFM )@@G@@ONV DCBCSM R,X7 . CONVERT FO FIXED BIN(17,0) @F@W@V MOVFN )@@G@@E AGRL1+DCGSLT,AGRL1 . SET AW OF MAX LEN TO ARG @#@@@W GENFO )@@G@@M . @E@@@W GIFR CBLOWN,AGRL1 . SEE IF LENGTH IS IN A REGFP )@@G@@@E@@@W GLOAD AGRL1,1 . LOAD IT INTO A REGISTER @E@@@WFQ )@@G@@CBLOWN GLBL . LENGTH NOW IN REGISTER @C@@@W FR )@@G@@ GGETT AGRL2,2 . GET A FAKE DV@F@@@W GINST OPSA,AGFS )@@G@@RL1,AGRL2,H1 . MAKE FAKE STORE INTO DV @E@@@W GAPPN MAXLEN FT )@@G@@. GO FIX TO LOOK LIKE A DV @#@@@W GFIN . @A@@@V FU )@@G@@ XGPOP . POP OFF ARGUMENT @F@@@V GOTO GGTRE0 . RFV )@@G@@ETURN TO XGEN WITH CLEAR CODE @[@@@V. @^@@@V. COLLATE BIF FW )@@G@@@[@@@V. @D@@@VCSBCLA LABEL . STAGING FOR COLLATE IN VALUE MODE FX )@@G@@@^@@@V GNTR 2 . @F@@@V MOVE SGDAID,CBTCLT,2 . SFY )@@G@@ET TO THE COLLATE SEQUENCE @F@@@V GOTO GGTRE0 . RFZ )@@G@@ETURN TO XGEN WITH CLEAR CODE @[@@@V. @E@@@VCBCLAT LABEL . MAX LEGA )@@G@@N MODE STAGGING FOR COLLATE BIF @D@W@V LOAD A7,64,I . GB )@@G@@ SET THE LENGTH @D@@@W LOAD A7,256,I . SET THEGC )@@G@@ LENGTH @H@@@V GOTO CBSLLA . MERGE WITH KNOWN MAGD )@@G@@X LENGTH MODE ROUTINE @[@@@V. @ @@@V. TARGETING FOR CSF BIFGE )@@G@@@[@@@V. @#@@@VGGTCSF LLOC . @^@@@V GNTR 2 . @E@@@VGF )@@G@@ NONPL1 XGFCSF,DCCSF$,GGTSC1 . SAY NON-STANDARD PL1@G@@@V GG )@@G@@ GOTO GGTSC1 . MERGE WITH SINGLE STRING TARGETING @[@@@VGH )@@G@@. @E@@@V. SOME AND EVERY NEED TWO ARGS,ONLY ONE GETS POPPED GI )@@G@@@[@@@V. @#@@@VGGSTME LLOC . @^@@@V GNTR 2 . @#@@@VGJ )@@G@@ GEN . @G@@@V GINST OPLA,AGRA2,AGRL2,U 'NO' . POINTGK )@@G@@ TO PLACE FOR RESULT @C@@@V GOTO GGTSC1 . MERGE TGL )@@G@@HERE @[@@@V. @A@@@V. REVERSE AND LENGTH BIFS @[@@@V. GM )@@G@@@#@@@VGGTSME LABEL . @^@@@V GNTR 2 . @F@@@VGGTSC1 LABGN )@@G@@EL . HERE TO DO SINGLE STRING WORK @#@@@V GENGO )@@G@@ . @D@@@V GINST OPLA,AGRA3,AGRL1,U . GET ADDR(DV) @A@@@VGP )@@G@@ XGPOP . POP OFF ARGUMENT @^@@@V GRTN 2 . @[@@@VGQ )@@G@@. @E@@@VCMSSOM LABEL . MAX LEN MODE OF STRINGS RETURNING LEN=1 GR )@@G@@@C@@@V LOAD A7,1,I . SET THE KNOWN LENGTH .@H@@@V GOTGS )@@G@@O CBSLLA . MERGE WITH CONSTANT MAX LENGTH ROUTINE. @[@W@VGT )@@G@@. @[@@@W/. @D@@@V. TRANSLATE(STRING1,STRING2[,STRING3]) BGU )@@G@@IF @C@@@V. DECAT(STRING1,STRING2,STRING3) BIF @[@W@V. GV )@@G@@@E@W@VCTTRNS LABEL . TARGETING FOR TRANSLATE IN MAX LEN MODE @^@W@VGW )@@G@@ GNTR 2 . @D@W@V LOAD A7,DXGNAR . GET NUGX )@@G@@MBER OF ARGS@E@W@V IF A7,EQ,2*DCGSLT,I THEN,CTTRN1 . ONLY 2 ARGGY )@@G@@S @A@W@V XGPOP . POP OFF THIRD ARG @B@W@VCTTRN1 LABEL . GZ )@@G@@MERGE FROM 3 AND 2 ARGS @^@W@V GRTN 2 . @[@W@V. @[@@@VHA )@@G@@. @[@W@V. @D@@@VCBTRNS LABEL . VALUE MODE TARGETING FOR TRANSHB )@@G@@LATE @^@@@V GNTR 2 . @D@@@V LOAD A7,DXGNAR . HC )@@G@@ GET NUMBER OF ARGS@D@@@V IF A7,NE,3*DCGSLT,I THEN,CBTRN1 .HD )@@G@@ ON 2 ARGS @#@@@V GEN . @E@@@V GINST OPLA,AGRA3,AGHE )@@G@@RL1,U . GET ADDR(3RD DV) @#@@@V XGPOP . @B@@@V GOTHF )@@G@@O CBTRN2 . MERGE @D@@@VCBTRN1 LABEL . NO THIRD ARG, USE HG )@@G@@THE COLLATE SEQ @E@W@V LOADA A7,BFCLAT . GET ADDR OF HH )@@G@@COLLATE @#@@@W GEN . @D@W@V STORE A7,AGX0OF . HI )@@G@@ STORE FOR IGEN @#@@@W GLIT 1 . @#@W@V GEN . HJ )@@G@@@E@W@V GINST OPLA,AGRA3,AGXR0,U . GET ADDR(COLLATE) @F@@@WHK )@@G@@ LOADA A3,BFCLAT . LOAD ADDRESS OF COLLATE SEQ @B@@@VHL )@@G@@CBTRN2 LABEL . MERGE FROM 2 AND 3 ARGS @#@@@V GENM . @D@@@VHM )@@G@@ GINST OPLA,AGRA2,AGRL1,U . DV OF 2ND ARG @G@@@V GINHN )@@G@@ST OPLA,AGRA1,AGRL2,U . DV OF INPUTED(1ST ARG) STRING @#@@@V HO )@@G@@ GFIN . @A@@@V XGPOP 'SIZE',2*DCGSLT . @^@@@V GRTHP )@@G@@N 2 . @[@@@V. @^@@@V. REVERSE(STRING)@[@@@V. @D@@@VHQ )@@G@@CBREVM LABEL . STAGGING FOR REVERSE IN MAX LEN @^@@@V GNTHR )@@G@@R 2 . @H@@@WCMUNS2 LABEL . ENTRY TO RETURN THEHS )@@G@@ STRING AS THE MAXLEN @D@W@V MOVE AGRL1+DCGSLT,AGRL1 . SETHT )@@G@@ AW OF ARG @E@W@V SET SGDHLF,ON,SGDID+DCGSLT . SET DV FLAGHU )@@G@@ ON @#@@@W GEN . @G@@@W GMOVE +2,1 . MHV )@@G@@OVE THE ARG DOWN ONTO THE RESULT @#@@@W XGPOP . @F@@@V HW )@@G@@ GOTO GGTRE0 . RETURN TO XGEN WITH CLEAR CODE @[@@@V. HX )@@G@@@A@@@V. COPY(STRING,COUNT) BIF @[@@@V. @D@@@VCBCOPY LABHY )@@G@@EL . TARGETING FOR COPY BIF IN VALUE @^@@@V GNTR 2 . HZ )@@G@@@F@W@V CGCONV DCBCSM R,X7 . CONVERT FO FIXED BIN(17,0) IA )@@G@@@F@@@W CGCONV DCBCSM R,X7 . CONVERT TO FIXED BIN(17,0) IB )@@G@@@#@@@V GENM . @E@@@V GINST OPLA,AGRA3,AGRL2,U . GETIC )@@G@@ DV OF STRING @D@@@V GINST OPLA,AGRA1,AGRL1 . GET THE COUID )@@G@@NT @#@@@V GFIN . @D@@@V XGPOP 'SIZE',2*DCGSLT . IE )@@G@@POP OFF BOTH ARGS @^@@@V GRTN 2 . @[@@@V. @[@@@V. IF )@@G@@@[@@@V. @F@@@VCSCOPY LABEL . STAGGING AND CODE GEN FOR MAX LEN MOIG )@@G@@DE COPY @^@@@V GNTR 2 . @F@@@V CGCONV DCBCSM IH )@@G@@ R,X7 . CONVERT FO FIXED BIN(17,0) @D@W@V MOVE AGX0OF,II )@@G@@0,I . CLEAR FUDGE FIELD @F@@@W MOVE SGDAID+2*DCGSLT,SGDIJ )@@G@@AID+DCGSLT . SET RETURN VALUE @#@@@V GENM . @D@@@W GIFIK )@@G@@R CSCOP1,AGRL1 . IS LENGTH IN A REG?@D@@@W GLOAD AGRL1,1IL )@@G@@ . LOAD IT INTO A REG @E@@@WCSCOP1 GLBL . LIM )@@G@@ENGTH NOW IN REGISTER @ @W@V GGETGR AGXTMP,1 . @C@W@V IN )@@G@@ GINST OPLA,AGXTMP,AGRL1 . GET COUNT @E@W@V GINST OPLA,AGIO )@@G@@RA3,AGRL2,U . GET DV ADDR OF STRING@E@W@V GINST OPMSI,AGXTMP,IP )@@G@@AGXR0,H1 . LEN(STRING)*COUNT @E@@@W GINST OPMSI,AGRL1,AGRL2,HIQ )@@G@@1 . COUNT*LENGTH(STRING)@D@W@V GAPPN GARBGE . FIX UPIR )@@G@@ U FIELD @D@@@W GAPPN MAXLEN . FIX UP U FIELD IS )@@G@@@E@W@V GSET AGRL2+DCGSLT,AGXTMP . SET RESULT AW IN BIF@C@@@WIT )@@G@@ GGETT AGRL2+DCGSLT,2 . GET FAKE DV @F@@@W GINST OIU )@@G@@PSA,AGRL1,AGRL2+DCGSLT,H1 . SET LENGTH INTO FAKE@E@@@W GAPPN MIV )@@G@@AXLEN . GET ADDRESS SET CORRECTLY@#@@@V GFIN . @D@@@VIW )@@G@@ XGPOP 'SIZE',2*DCGSLT . POP OFF BOTH ARGS @F@@@V GOTIX )@@G@@O GGTRE0 . RETURN TO XGEN WITH CLEAR CODE @[@@@V. @E@W@VIY )@@G@@GARBGE LLOC . APPENDAGE TO FIX U FIELD IN COPY ICODE @E@W@V IZ )@@G@@ LOAD A7,GARBG1 . GET THE RIGHT U BITS @ @W@V LOAJA )@@G@@D A3,X10 . @D@W@V SUB A3,1,I . A3-> LAST INJB )@@G@@ST @E@W@V OR A7,0,A3 . ADD IN THE NEW BITS JC )@@G@@@E@W@V STORE A8,0,A3 . PLACE BACK INTO INST @#@W@VJD )@@G@@ LJMP . @[@W@V. @C@@@V. BOOL(STRING1,STRING2,STRINGJE )@@G@@3) BIF @[@@@V. @D@@@VCB3STR LABEL . TARGETING FOR 3 ARGUMENTJF )@@G@@ STRINGS @^@@@V GNTR 2 . @#@@@V GENM . @F@@@VJG )@@G@@ GINST OPLA,AGRA3,AGRL2+DCGSLT,U . ADDR(DV OF 1ST ARG) @E@@@VJH )@@G@@ GINST OPLA,AGRA2,AGRL2,U . ADDR(DV OF 2ND ARG) @E@@@V JI )@@G@@ GINST OPLA,AGRA1,AGRL1,U . ADDR(DV OF 3RD ARG) @#@@@V GFIJJ )@@G@@N . @D@@@V XGPOP 'SIZE',3*DCGSLT . POP OFF 3 ARGS @^@@@VJK )@@G@@ GRTN 2 . @[@@@V. @[@@@V. @[@@@V. @C@@@VCMBOLXJL )@@G@@ LABEL . STAGGING FOR BOOL MAX LENGTH @[@@@V. @E@@@V. MAJM )@@G@@X LEN OF BOOL IS MAX LEN OF LARGEST INPUT STRING@[@@@V. @^@@@V JN )@@G@@ GNTR 2 . @C@W@V XGPOP . THIRD ARGUMENT NOT NEEDED JO )@@G@@@#@@@V GENM . @H@@@WGGMMAX* GLBL . ENTRY PJP )@@G@@OINT FOR CODE TO FIND MAX LEN OF TWO@F@@@W GINST OPLA,AGRA1,AGJQ )@@G@@RL1,H1 . GET LENGTH OF FIRST ARG @D@@@W GAPPN MAXLEN . JR )@@G@@ FIX ADD RESSING @E@@@W GINST OPLA,AGRA2,AGRL2,H1 . GETJS )@@G@@ LENGTH OF SECOND @B@@@W GAPPN MAXLEN . FIX UP @D@@@WJT )@@G@@ GINST OPTG,AGRA1,AGRA2 'NO' . SEE IF A2>A1 @F@@@W GINJU )@@G@@ST OPLA,AGRA2,AGRA1 'NO' . NOW A2 HAS LONGER LENGTH @D@@@W GGEJV )@@G@@TT AGRL2,2 . GET A TWO WORD TEMP@E@@@W GINST OPSA,AGJW )@@G@@RA2,AGRL2,H1 'NO' . SET INTO FAKE DV@D@@@W GAPPN MAXLEN . JX )@@G@@ FIX TO LOOK LIKE DV@D@W@V GGETGR AGXTMP 'X' . GET ANJY )@@G@@ X REGISTER @D@W@V GINST OPLA,AGRA1,AGRL1,U . GET ADDR(DV2) JZ )@@G@@@D@W@V GINST OPLA,AGRA3,AGRL2,U . GET ADDR(DV1) @D@W@V KA )@@G@@ GINST OPLX,AGXTMP,AGRA3 . STORE PRT-> DV1 @^@W@V GLIT 2KB )@@G@@ . @D@W@V LA,H1 A2,1,A1 . GET SIZE OF DV 2 @E@W@VKC )@@G@@ TG,H1 A2,1,A3 . IS LEN(STR1)>LEN(STR2)? @E@W@V KD )@@G@@ GINST OPLX,AGXTMP,AGRA1 . NO STORE PRT -> DV2 @F@W@V GSEKE )@@G@@T AGRL2+DCGSLT,AGXTMP . FIX AW IN BOOL STACK ENTRY@#@W@V GFIKF )@@G@@N . @G@@@W GFIN 'POP' . END OF CODE FOR '&' & '!'KG )@@G@@ OPERATORS @G@@@W GEN . FOR BOOL, NEED TO PKH )@@G@@OP OFF EXTRA DEALY@F@@@W GSET AGRL2,AGRL1 . MOVE ADDRESSIKI )@@G@@NG DOWN IN STACK @D@W@V XGPOP 'SIZE',2*DCGSLT . POP OF ARGUMKJ )@@G@@ENTS @D@@@W XGPOP . POP OFF ARGUMENT @D@W@VKK )@@G@@ MOVE SGDAID,CBTSTR,1 . SET STRING RESULT @D@@@W MOVKL )@@G@@E SGDAID,CBTSTR . SET STRING RESULT @C@W@V SET SGDHLF,KM )@@G@@ON,SGDID . SET DV ON @E@W@V GOTO CMSTR2 . EXIT FKN )@@G@@ROM THIS MESS @E@@@W GOTO GGTRE0 . EXIT FROM THKO )@@G@@IS MESS @^@@@W/. ONCODE BIF @[@@@W. @#@@@WCBONCD LLOKP )@@G@@C . @^@@@W GNTR 2 . @E@@@W MOVE SGDAID,SUMIN KQ )@@G@@. SAY CONST,FIXED BIN(35,0)@E@@@W LINK ONUNOK . SKR )@@G@@EE IF IN AN ON UNIT @B@@@W GOTO CBONNP . NOPE KS )@@G@@@E@@@W LOADA A6,SGDRAB . GET ADDR TO REAL AUW A @^@@@WKT )@@G@@ SLB A6,18 .@G@Z@W ADD A6,ARSTSZ+23,I . FIXED AKU )@@G@@R SIZE + OFFSET OF ARMCRO @H@@@Z ADD A6,ARSTSZ+10+23,I .KV )@@G@@ FIXED AR +D.V.'S + OFFSET OF ARMCRO @G@@@W ADD A6,SDBKKW )@@G@@DP,X5 . ADD IN ROOM TAKEN BY STATIC LINKS @G@@@W STORE AKX )@@G@@6,AGRL1 . STORE OOFFSET OF ONUNIT MACRO INFO @E@@@W MOVKY )@@G@@E SGDRAB,AGRX10,I . X10 FOR CURRENT A.R. @E@@@W STORE AKZ )@@G@@3,SGDRAD . OFFSET IN STATIC LINKS @#@@@W GENM . @ @@@WLA )@@G@@ GGETGR AGXTMP . @F@@@W GINST OPLA,AGXTMP,AGRL1,QLB )@@G@@1 . ]LLA REG,ARCDER,XREG @E@@@W GSET AGRL1,AGXTMP . SLC )@@G@@AY VALUE OF BIF IN REG @#@@@W GFIN . @^@@@W GRTN 2LD )@@G@@ . @C@@@WCBONNP LABEL . HERE TO RETURN VALUE OF ZERO @A@@@W LE )@@G@@ MOVE SGDRBS,AGRX0,I . @C@@@W MOVE SGDRDS,KKD0,I . SLF )@@G@@ET ZERO @^@@@W GRTN 2 . @^@@@W/. ONSTMT BIF LG )@@G@@@#@@@WCBONST LLOC . @^@@@W GNTR 2 . @B@Y@X NONLH )@@G@@PL1 XGONST,DCONST,CBONSX . @B@@@Y NONPL1 XGONST,ONSTMG,CBONSLI )@@G@@X . @#@@@XCBONSX LABEL . @E@@@W MOVE SGDAID,SUMIN . SLJ )@@G@@AY CONST,FIXED BIN(35,0)@D@@@W LINK ONUNOK . SEE IF LK )@@G@@IN ON UNIT @B@@@W GOTO CBONNP . NOPE @E@@@W LL )@@G@@ LOADA A6,SGDRAB . GET PTR TO REAL AUX A.W. @^@@@W SLBLM )@@G@@ A6,18 .@E@@@W ADD A6,ARSTMT-FH2,I . OFFSET IN A.R. OF ALN )@@G@@RSTMT @C@@@W STORE A6,AGRL1 . FILL IN A.W. @E@@@W LO )@@G@@ MOVE SGDRAB,AGRX10,I . X10 FOR CURRENT A.R. @F@@@W STOLP )@@G@@RE A3,SGDRAD . OFFSET OF STATIC LINK TO USE @#@@@W GENLQ )@@G@@M . @ @@@W GGETGR AGXTMP . @E@@@W GINST OPLA,AGLR )@@G@@XTMP,AGRL1,H2 . LA REG,ARSTMT,XREG @E@@@W GSET AGRL1,AGXTMP LS )@@G@@. SET A.W. TO POOINT TO REG@#@@@W GFIN . @^@@@W GRTLT )@@G@@N 2 . @F@@@X/. ROUTINES FOR ONFILE,ONLOC,ONFIELD,ONSOURCE ANLU )@@G@@D ONCHAR @D@@@XCBONLC LLOC . ENTRY FOR ONLOC LV )@@G@@@H@@@X LOAD A8,0,I . GET OFFSET OF DV IN DV AREA IN LW )@@G@@AUX BLOCK @ @@@X GOTO CBONS1 . @D@@@XCBONFL LLOC . LX )@@G@@ ENTRY FOR ONFILE @ @@@X LOAD A8,2,I . LY )@@G@@@ @@@X GOTO CBONS1 . @D@@@XCBONCB LLOC . LZ )@@G@@ ENTRY FOR ONCHAR @ @@@X LOAD A8,4,I . @ @@@X MA )@@G@@ GOTO CBONS1 . @D@@@XCBONSB LLOC . ENTRY FMB )@@G@@OR ONSOURCE @ @@@X LOAD A8,6,I . @ @@@X GOTO CMC )@@G@@BONS1 . @D@@@XCBONFD LLOC . ENTRY FOR ONFIELD MD )@@G@@@ @@@X LOAD A8,8,I . @G@@@XCBONS1 LABEL . ME )@@G@@ MERGE HERE FOR COMMON PROCESSING @^@@@X GNTR 2 . MF )@@G@@@D@@@X MOVE SGDAID,CBONFS,2 . SET ATTRIBUTES @F@@@X MG )@@G@@ LINK ONUNOK . SEE IF WE'RE IN AN ON UNIT @C@@@X MH )@@G@@ GOTO CBONNO . NO WE'RE NOT @ @@@X LOADA A6,SGDRMI )@@G@@AB . @^@@@X SLB A6,18 .@E@@@X ADD A6,ARSTSZ,I .MJ )@@G@@ GET TO END OF FIXED AR @E@@@X ADD A6,SDBKDP,X5 . GMK )@@G@@ET PAST STATIC LINKS @F@@@X ADD A6,A8 . ADD OFFML )@@G@@SET FOR CORRECT D.V. @C@@@X STORE A6,AGRL1 . STORE IMM )@@G@@N A.W.@E@@@X MOVE SGDRAB,AGRX10,I . X10 FOR CURRENT A.R. MN )@@G@@@G@@@X STORE A3,SGDRAD . OFFSET OF AUX BLOCK IN STATIC LMO )@@G@@INKS @^@@@X GRTN 2. @G@@@XCBONNO LABEL . HERE TO RETUMP )@@G@@RN ' ' FOR ONCHAR AND '' FOR THE OTHERS @D@@@X IF A8,EQ,4MQ )@@G@@,I THEN,CBONN1 . ONCHAR? @C@@@X GTMP 2 . GMR )@@G@@ET TEMP D.V.@E@@@X STORE A8,SGDRDS . SET DISPLACEMENT TOMS )@@G@@ D.V. @#@@@X GENM . @^@@@X GLIT 1 . @ @Y@X MT )@@G@@ DL A3,KKD0 . @ @@@Y LOADD A3,KKD0 . @C@@@X MU )@@G@@ GDBLE OPDS,AGRA3,AGRL1 . CLEAR D.V. @#@@@X GFIN . @^@@@XMV )@@G@@ GRTN 2 . @C@@@XCBONN1 LABEL . HERE TO RETURN ' ' FOR ONMW )@@G@@CHAR @D@@@X LOAD A3,' ',I . GET BLANK CHAR @C@@@XMX )@@G@@ STORE A3,AGX0OF . SAVE VALUE @E@@@X GTMP 3MY )@@G@@ . GET TEMP FOR D.V.+CHAR @D@@@X STORE A8,SGDRMZ )@@G@@DS . SET DISPL. TO D.V. @E@@@X ADD A8,2,I . PNA )@@G@@OINT TO WHERE CHAR GOES @D@@@X STORE A8,AGR10D . SET ADDNB )@@G@@RESS,X10 @#@@@X GENM . @^@@@X GLIT 1 . @D@@@XNC )@@G@@ DL A3,BFINIT . SET FLAGS+SIZES @B@@@X GDBND )@@G@@LE OPDS,AGRA3,AGRL1 'NO' . @G@@@X GINST OPLA,AGRA3,AGXR10,UNE )@@G@@ 'NO' . POINT TO WHERE STRING GOES @D@@@X GINST OPLA,AGRA1,AGNF )@@G@@XR0,U 'NO' . GET ' ' @^@@@X GLIT 1 . @E@@@X SA,NG )@@G@@S1 A1,0,A3 . MOVE ' ' INTO STRING @F@@@X GINST ONH )@@G@@PSA,AGRA3,AGRL1,H2 'NO' . POINT D.V. TO STRING @#@@@X GFIN . NI )@@G@@@^@@@X GRTN 2 . @C@@@X/. MAX LENGTH ROUTINES FOR ON NJ )@@G@@UNIT BIFS @^@@@XCBONCM LABEL . ONCHAR @C@@@X LOAD A7,1,I NK )@@G@@. MAX LENGTH=1 @ @@@X GOTO CBSLLA . @C@@@XCBONSMNL )@@G@@ LABEL . ONSOURCE @F@@@X LOAD A7,80,INM )@@G@@ . ASSUME MAX LENGTH=CARD IMAGE @ @@@X GOTO CBSLLA NN )@@G@@. @B@@@XCBONLM LABEL . ONLOC @G@@@X LOANO )@@G@@D A7,64,I . MAX LENGTH FOR A VARIABLE NAME=64 @ @@@X NP )@@G@@ GOTO CBSLLA . @B@@@XCBONFM LABEL . ONFILE NQ )@@G@@@D@@@X LOAD A7,12,I . FILENAME=12 CHARS @ @@@X NR )@@G@@ GOTO CBSLLA . @G@@@W/. ROUTINE TO FIND ON UNIT BLOCK(IF NS )@@G@@ANY) CONTAINING ON UNIT BIF @#@@@WONUNOK LABEL . @ @@@W USINT )@@G@@NG SDSECT,X5 . @E@@@W LOAD X5,X9 . GEE CURRENT BNU )@@G@@LOCK SD @C@@@WONUNLP LABEL . LOOP HERE BACK THROUGH BLOCKS @F@@@WNV )@@G@@ IF SD3OBK,ON,SDCLS3 THEN,ONHVBK . ON UNIT BLOCK? @D@@@WNW )@@G@@ LOAD X5,SDBKLK . GO OUT ONE LEVEL @D@@@W IF NX )@@G@@ X5,NZERO THEN,ONUNLP ELSE,LJMP . @F@@@WONHVBK LABEL . NY )@@G@@ HERE IF FOUND AN ON UNIT BLOCK @F@@@W LOAD A3,SDBKNZ )@@G@@DP . GET DEPTH OF ON UNIT BLOCK @F@@@W SUB A3,1,I OA )@@G@@. DEPTH OF AUX ON UNIT BLOCK @G@@@W ADD A3,AQSTOB )@@G@@LK,I . GET ADDR OF STATIC LINK FOO AUX BLOCK@B@@@W LJMP 1OC )@@G@@ . RETURN @[@W@V. @C@@@V/ . SUBSTR(STRINGOD )@@G@@1,INDEX,LENGTH)OR @B@@@V. SUBSTR(SRTING1,INDEX) @^@@@VOE )@@G@@. BIF @[@@@V. @C@@@VCSTSTR LABEL . STAGGING FOR OF )@@G@@VALUE MODE SUBSTR @^@@@V GNTR 2 . @C@@@V LOAD AOG )@@G@@8,0,I . CLEAR FLAGS @F@@@V LOAD A7,DXGNAR . GOH )@@G@@ET NUMBER OF ARGUMENT*DCGSLT @E@@@V IF A7,EQ,2*DCGSLT,I TOI )@@G@@HEN,CBSTR1 . 2 ARGUMENTS@G@@@V CGCONV DCBCSM R,X7 . CONVERTOJ )@@G@@ 3RD ARG TO FIXED BIN(17,0) @D@@@V LOAD A8,1,I . OK )@@G@@SET 3 ARG FLAG ON @E@@@V XGPOP . POP OFF THIRDOL )@@G@@ ARG FOR NOW@B@@@VCBSTR1 LABEL . MERGE WITH 2 ARG SUBSTR @F@@@V OM )@@G@@ CGCONV DCBCSM R,X7 . CONVERT FO FIXED BIN(17,0) @E@@@V ON )@@G@@ IF A8,EQ,0,I THEN,CBSTR2 . THIRD ARG. PRESENT? @E@@@V SUBOO )@@G@@ X7,DCGSLT,I . GET ARG THREE BACK AGAIN @#@@@V GEN . OP )@@G@@@F@@@V GINST OPLA,AGRA1,AGRL1 . LOAD UP KNOWN LENGTH TO MOVE OQ )@@G@@@A@@@V XGPOP . POP OFF 3RD ARG @C@@@VCBSTR2 LABEL . OR )@@G@@ MERGE HERE @F@@@V MOVE SGDAID+2*DCGSLT,CBTSTR,2 OS )@@G@@. SET STRING RESULT @#@@@V GENM . @D@@@V GINST OOT )@@G@@PLA,AGRA3,AGRL2,U . GET ADDR(DV) @C@@@V GINST OPLA,AGRA2,AGOU )@@G@@RL1 . GET INDEX @ @@@V GSUB 'BILTN' . @D@@@V GLIOV )@@G@@TRG A8 . FIX 2/3 ARG FLAG @F@@@V GFIN . OW )@@G@@ POP OFF INDEX STACK ELEMENT @E@@@V XGPOP 'SIZE',OX )@@G@@2*DCGSLT . POP OFF INDEX AND STRING @F@@@V GOTO GGTRE0 . OY )@@G@@ RETURN TO XGEN WITH CLEAR CODE @[@W@V. @[@W@V. @D@W@VCMSSTROZ )@@G@@ LABEL . MAX LEN MODE STAGGING FOR SUBSTR BIF@^@W@V GNTR 2PA )@@G@@ . @E@W@V LOAD A7,DXGNAR . GET #OF ARGS*DCGSLT . PB )@@G@@@E@W@V IF A7,EQ,2*DCGSLT,I THEN,CMSTR1 . 2 ARG SUBSTR@[@W@VPC )@@G@@. @A@W@V. LENGTH IS GIVEN BY 3RD ARG @[@W@V. @F@W@V PD )@@G@@ CGCONV DCBCSM R,X7 . CONVERT FO FIXED BIN(17,0) @F@W@V PE )@@G@@ MOVE AGRL1+3*DCGSLT,AGRL1 . SET AW TO AW FROM LENGTH @D@W@V PF )@@G@@ XGPOP 'SIZE',3*DCGSLT . POP OFF ALL ARGS @B@W@V GOTO CMSTPG )@@G@@R2 . MERGE FOR EXIT @A@W@VCMSTR1 LABEL . 2 ARG SUBSTR FOUND @A@W@VPH )@@G@@. LENGTH IS THAT OF 1ST ARG @[@W@V. @G@W@V MOVE API )@@G@@GRL1+2*DCGSLT,AGRL1+DCGSLT . SET AW TO THAT OF 1ST ARG@D@W@V XGPPJ )@@G@@OP 'SIZE',2*DCGSLT . POP OFF 2 ARGS @E@W@V SET SGDHLF,PK )@@G@@ON,SGDID . SET HALF FLAG ON (DV ON )@E@W@VCMSTR2 LABEL . MERGE FOR EXIPL )@@G@@T FROM 2 AND 3 ARG SUBSTR @F@W@V GOTO GGTRE0 . RPM )@@G@@ETURN TO XGEN WITH CLEAR CODE @[@@@V/ . @F@@@V. PSEUDO-PN )@@G@@VARIABLE SUBSTR(STRING1,INDEX,[LENGTH]) @[@@@V. @C@@@VCSBTRP LABPO )@@G@@EL . STAGGING FOR PSEUDO-SUBSTR @^@@@V GNTR 2 . @E@@@VPP )@@G@@ LOAD A7,DXGNAR . GET # OF ARGS * DCGSLT @D@@@V PQ )@@G@@ LOAD F,1,I . ASSUME TWO ARGS @D@@@V LOADA XPR )@@G@@2,DCBCSM . POINT TO FIX BIN @E@@@V IF A7,EQ,2*DCGSLT,I TPS )@@G@@HEN,CSBTR1 . IS IT TWO ARGS? @E@@@V LOAD F,0,I . TPT )@@G@@HIS IS THREE ARG SUBSTR @E@@@V CGCONV R,X2 R,X7 . MAKE INPU )@@G@@TO FIXED BIN(17,0)@G@@@V GENM . PUT LENGTH ADPV )@@G@@DRESS WDS INTO SUBSTR @F@@@V GMOVE +4,3 . MOVE COPW )@@G@@PY OF STRING ONTO SUBSTR@D@@@V GIFR CBPSEU,AGRL1 . IS IT IPX )@@G@@N A REG? @D@@@V GLOAD AGRL1,1 . GET IT INTO A REG PY )@@G@@@#@@@VCBPSEU GLBL . @G@@@V GSET AGRL1+3*DCGSLT+3,AGRL1 . PZ )@@G@@SET ADDR WD INTO AUX IM PLACE @#@@@V GFIN . @D@@@V XGPQA )@@G@@OP . POP OFF LENGTH @ @@@V GOTO CSBTR2 QB )@@G@@. @D@@@VCSBTR1 LABEL . ONLY TWO ARGS HERE @#@@@VQC )@@G@@ GEN . @F@@@V GMOVE +3,2 . MOVE COPY OF QD )@@G@@STRING ONTO SUBSTR@F@@@VCSBTR2 LABEL . MERGE TWO ANDQE )@@G@@ THREE SUBSTR @E@@@V CGCONV R,X2 R,X7 . CONVERT STARTQF )@@G@@ TO FIXED @F@@@V GENM . PUT START ADDR WDS QG )@@G@@INTO SUBSTR @D@@@V GIFR CBPSE1,AGRL1 . IS IT IN A REG? QH )@@G@@@D@@@V GLOAD AGRL1,1 . PUT IT INTO ONE @E@@@VCBPSE1QI )@@G@@ GLBL . START IS NOW IN A REG @F@@@V GSEQJ )@@G@@T AGIM1+2*DCGSLT,AGRL1 . PUT ADDRESS WD INTO SUBSTR@#@@@V GFIQK )@@G@@N . @E@@@V XGPOP 'SIZE',2*DCGSLT . POP START AND STRING QL )@@G@@@E@@@V STORE F,SGDISD . SAVE FLAG FOR # OF ARGS @D@@@VQM )@@G@@ SET 12,ON,SGDID . SAY PSEUDO VAR @F@@@V GOTQN )@@G@@O GGTRE0 . RETURN TO XGEN WITH CLEAR CODE @^@@@V/. UNSQO )@@G@@PEC BIF @[@@@V. @#@@@VCBUNSX LABEL . @G@W@V GNTR 2QP )@@G@@ . ENTRY POINT FOR VALUEMODE UNSPEC @G@@@W GNTQQ )@@G@@R 2 . ENTRY POINT FOR VALUE MODE UNSPEC @D@@@V QR )@@G@@ IF SD0ART,ON,SGDID THEN,CBUNS1 . ARITHMETIC? @#@@@V GENM . QS )@@G@@@E@@@V GINST OPLA,AGRA3,AGRL1,U . GET ADDRESS OF ARG @#@@@VQT )@@G@@ GLIT 1 . @E@@@V LMJ X11,BFUNSP . CALL CHAR UNSQU )@@G@@PEC ROUTINE @#@@@V GFIN . @F@W@V GOTO CBUNS3 . QV )@@G@@ MERGE WITH ARITH PROCESSING @F@@@W GOTO CBUNS4 . QW )@@G@@ MERGE WITH ARITH PROCESSING @#@@@VCBUNS1 LABEL . @E@@@V QX )@@G@@ CGCONV SGDAID SGDAID . TAKE CARE OF CONSTANTS @C@@@W GASQY )@@G@@GN 'TEMP' R,X3 'COND','IFREG' . @E@@@W LINK CNTBIT . QZ )@@G@@ FIGURE OUT SIZE IN A7 @D@W@V IF SDDCBN,OFF,SGDCLS THEN,CRA )@@G@@BUNS2 . DECIMAL? @D@W@V IF SDFXFL,ON,SGDCLS THEN,CBUNS2 . FLOATRB )@@G@@? @E@W@V GENM . HERE IT'S FIXED BINARY . RC )@@G@@@C@W@V GINST OPLA,AGRA3,AGRL1 . GET ARG @#@W@V GLIRD )@@G@@T 1 . @D@W@V LMJ X11,BFUNSI . IT IS AN INTEGER @#@W@VRE )@@G@@ GFIN . @C@W@V GOTO CBUNS3 . -> MERGE RF )@@G@@@E@W@VCBUNS2 LABEL . DOUBLE PRESCISION HERE @#@W@VRG )@@G@@ GENM . @C@W@V GDBLE OPDL,AGRA3,AGRL1 . GET ARG RH )@@G@@@#@W@V GLIT 1 . @E@W@V LMJ X11,BFUNSD . CALL RORI )@@G@@UTINE FOR DOUBLE @#@W@V GFIN . @#@W@VCBUNS3 LABEL . @E@@@WRJ )@@G@@ OR A7,GARBG3 . GET LA,U A4,SIZE INST @#@@@W RK )@@G@@ GENM . @^@@@W GLITRG A8 . @D@@@W GINST OPLA,AGRL )@@G@@RA3,AGRL1,U . POINT TO ARG @^@@@W GLIT 1 . @C@@@W RM )@@G@@ LMJ X11,BFUNSI . CALL UNSPEC @#@@@W GFIN . @E@@@WRN )@@G@@CBUNS4 LABEL . MERGE HERE WITH STRINGS @C@@@V RO )@@G@@ XGPOP . REMOVE ARG @D@W@V MOVE SGDAID,RP )@@G@@CBTSTR,2 . SET TEMP RESULT @D@@@W MOVE SGDAID,CBTBIT,2 . SRQ )@@G@@ET TEMP RESULT @D@@@VGGTRE0* LABEL . COME HERE TO RETURN ZERO FOR GERR )@@G@@N CODE@A@@@V MOVE DCGSV2+9,0,I . @^@@@V GRTN 2RS )@@G@@ . @[@@@W. @D@@@W. FIGURE OUT LENGTH OF NUMERIC NUMBER IN RT )@@G@@A7 @[@@@W. @E@@@WCNTBIT LLOC . GET LENGTH OFRU )@@G@@ NUMBER @D@@@W LOAD A7,72,I . ASSUME FLOAT OR DECRV )@@G@@@D@@@W IF SDDCBN,OFF,SGDCLS THEN,CBUNS2 . DECIMAL? @D@@@W RW )@@G@@ IF SDFXFL,ON,SGDCLS THEN,CBUNS2 . FLOAT? @E@@@W LOAD ARX )@@G@@7,36,I . GET SIZE OF FIXED BIN @E@@@WCBUNS2 LABEL . RY )@@G@@ SIZE IN A7 IF REAL HERE @D@@@W IF SDRLCX,OFF,SGDCLS RZ )@@G@@THEN,LJMP . IS IT REAL? @E@@@W ADD A7,A7 . DOUBLE SA )@@G@@SIZE IF COMPLEX @#@@@W LJMP @[@@@V. @ @@@V. MAXSB )@@G@@ LENGTH FOR UNSPEC@[@@@V. @#@@@VCMUNSX LABEL . @^@@@W GNTSC )@@G@@R 2 . @E@@@W MOVE SGDAID+DCGSLT,CBTBIT . SET RETURN TO SD )@@G@@BE BIT@F@@@W IF SD0ART,OFF,SGDAID THEN,CMUNS1 . IS IT STRINSE )@@G@@G? @F@@@W LINK CNTBIT . GET LENTGH OF NUMBER INTOSF )@@G@@ A7 @C@@@W XGPOP . DROP ARG @F@@@W SG )@@G@@ GOTO CBSLLA . MAX LENGTH WITH A CONSTANT @D@@@WCMUNS1SH )@@G@@ LABEL . STRING DATA HERE @E@@@W IF SSI )@@G@@DCHBT,ON,SGDCLS THEN,CMUNS2 . IS ARG BIT? @G@@@W GENM . SJ )@@G@@ STRINGS RETURN NINE TMES THEIR LENGTH@D@@@W GINST OSK )@@G@@PLA,AGRA2,AGRL1,H1 . GET LENGTH @C@@@W GAPPN MAXLEN . SL )@@G@@ FIX FOR DV @E@@@W GGETT AGRL2,2 . GET SPACE FORSM )@@G@@ A FAKE DV @^@@@W GLIT 1 . @D@@@W MSI,U A2,9 . SN )@@G@@ GET RETURN LENGTH @E@@@W GINST OPSA,AGRA2,AGRL2,H1SO )@@G@@ 'NO' . PUT INTO FAKE DV@C@@@W GAPPN MAXLEN . FIX FORSP )@@G@@ DV @#@@@W GFIN . @C@@@W XGPOP . DSQ )@@G@@ROP ARG @D@@@W GOTO GGTRE0 . RETURN CLEAR CODE SR )@@G@@@^@W@V GNTR 2 . @F@W@V GOTO GGTRE0 . HSS )@@G@@AVEN'T FIGURED IT OUT YET @A@@@W/. CODE FOR UNSPEC PV ST )@@G@@@[@@@W. @[@@@W. @#@@@WCSUNPV LABEL . @^@@@W GNTR 2SU )@@G@@ . @#@@@W GEN . @D@@@W GMOVE +2,1 . MSV )@@G@@OVE THE STACK DOWN@F@@@W XGPOP . AND THEN REMOSW )@@G@@VE THE EXTRA ELT @E@@@W IF SD0ART,ON,SGDID THEN,CBUNP1 . IS IT SX )@@G@@A STRING? @B@@@W LOADA A7,BFUNPV . YES @E@@@W SY )@@G@@ MOVE SGDID,010,I . SET UNSPEC FOR STRING @D@@@W GOTSZ )@@G@@O CBUNP4 . MERGE WITH NUMBERS @A@@@WCBUNP1 LABEL . ARITHMETA )@@G@@TIC HERE @E@@@W LINK CNTBIT . GET COUNT OF SIZE ITB )@@G@@NTO A7@D@@@W STORE A7,SGDCLS . SET SIZE FOR LATER @E@@@WTC )@@G@@ MOVE SGDID,030,I . SAY UNSPEC FOR NUMBERS @E@@@W TD )@@G@@ LOADA A7,BFUNPI . POINT TO NUMBERS ROUTINE @D@@@WCBUNP4 LABTE )@@G@@EL . ALL MERGE HERE @E@@@W STORE A7,SGDITF )@@G@@DS . SAVE ADDRESS TO GO TO @C@@@W MOVE SGDIBS,GARBG2TG )@@G@@+FH1 . SET LMJ... @E@@@W GOTO GGTRE0 . RETURN WITH CTH )@@G@@LEAR CODE @[@@@V/. @A@@@V. ICODE FOR TIME AND DATE @[@@@VTI )@@G@@. @#@@@V GMODE 'M'@#@@@VCBDATX GLBL . @^@@@V GSUTJ )@@G@@B 'BILTN' @#@@@V GFIN @[@@@V. @[@@@V. @[@@@V. TK )@@G@@@E@@@VCBBTIM GLBL . MAX LENGTH MODE ICODE FOR TIME AND DATE @ @W@VTL )@@G@@ GGETGR AGRL1,1 . @A@W@V GINST OPLA,AGRL1,AGIM1,XU TM )@@G@@@A@@@W GINST OPLA,AGRA3,AGIM1,U . @C@@@W GGETT AGRL1,2TN )@@G@@ . GET FAKE DV @D@@@W GINST OPSA,AGRA3,AGRL1,H1 . PUTTO )@@G@@ INTO DV @C@@@W GAPPN MAXLEN . FUDGE FOR DV @#@@@VTP )@@G@@ GFIN . @[@@@W. @D@@@W. CODE FOR CATENATE TO RETURNTQ )@@G@@ SUM OF LENGTHS @[@@@W. @#@@@WGGMSUM* GLBL . @D@@@W GINTR )@@G@@ST OPLA,AGRA1,AGRL1,H1 . GET LENGTH @C@@@W GAPPN MAXLEN TS )@@G@@. FIX TO BE DV @F@@@W GINST OPAA,AGRA1,AGRL2,H1 . ADDTT )@@G@@ LENGTH OF SECOND STRIN @C@@@W GAPPN MAXLEN . FIX TO TU )@@G@@BE DV @C@@@W GGETT AGRL2,2 . GET A FAKE DV@F@@@W TV )@@G@@ GINST OPSA,AGRA1,AGRL2,H1 . PUT LENGTH INTO FAKE DV @D@@@W TW )@@G@@ GAPPN MAXLEN . FIX TO BE A DV @^@@@W GFIN 'TX )@@G@@POP' .@[@@@W. @B@@@W. CODE TO FIX ADDRESSING FOR DV @[@@@WTY )@@G@@. @#@@@WMAXLEN LLOC . @D@@@W GMARK A3 . GTZ )@@G@@ET POINTER TO CODE@E@@@W SUB A3,1 . POINT TO LASTUA )@@G@@ INSTRUCTION@D@@@W LOAD A7,W1H2,A3 . GET OFFSET FIELD UB )@@G@@@E@@@W ADD A7,1,I . POINT TO SECOND WORD @F@@@WUC )@@G@@ STORE A7,W1H2,A3 . SET POINTER TO LENGTH FIELD @#@@@WUD )@@G@@ LJMP . @ @@@V/. CONSTANTS NEEDED @[@@@V. @[@@@VUE )@@G@@. @F@@@V. ADDRESS IN CGOS TO TAKE CARE OF VALUE/MAX MUF )@@G@@ODE @[@@@V. @^@@@VCBSMLM EQU XGCMCC . @[@@@V. @F@@@V. UG )@@G@@ THESE TWO WORD PACKETS ARE TO SET STACK ELTS @E@@@V. UH )@@G@@ TO HAVE THE PROPER ADDRESSES @[@@@V. @#@@@VUI )@@G@@CBTSTR SFW 0 .@ @@@V +SD0STR,SDARST,0,0 @A@@@V +AGUJ )@@G@@RX0-(IN 63,0,1,0),0 @E@@@VCBTBIT SFW 0 . RESULTUK )@@G@@ IS BIT STRING @B@@@V +SD0STR,SDARST++SDCHBT,0,0 . @A@@@VUL )@@G@@ +AGRX0-(IN 63,0,1,0),0 @^@@@VCBTCLT SFW 0 . @B@@@VUM )@@G@@ +SD0STR,SDARST++SDVRCN,0,64 . @B@@@V +AGRX0-(IN 63,0UN )@@G@@,1,0),BFCLAT . @^@@@XCBONFS SFW 0 . @C@@@X +SGDEXP++UO )@@G@@SD0STR,SDARST++SDVRCN,0,0 . @A@@@X +AGRX10-(IN 63,0,1,0),0 . UP )@@G@@@F@@@VCBSBIT SFW 0 . STACK TOP FOR SOME AND EVERY UQ )@@G@@@B@@@V +SD0STR,SDARST++SDCHBT,0,0 . @D@@@V +AGRX10-(UR )@@G@@IN 63,0,1,0),0 . SAY OFF OF X10 @[@@@V. @B@@@V. ATTRIBUTEUS )@@G@@S FOR STACK ENTRIES @[@@@V. @D@@@VSUMIN SFW 0 . UT )@@G@@ ATTR FOR SUM BIF @E@@@V +SDVRCN++SD0ART,SDDCBN,0,35 . FIXUU )@@G@@ED BIN CONSTANT @D@@@VPRODIN SFW 0 . ATTR FOR PRODUV )@@G@@ BIF @E@@@V +SDVRCN++SD0ART,SDFXFL,0,18 . SET TO FLOAT DEC? UW )@@G@@@^@@@VDCBCSM SFW 0 . @B@@@V +SGDEXP++SD0ART,SDDCBN,0,17UX )@@G@@ . @A@@@VDCBCLN SFW 0 . STACK ELT FOR 35,0 @D@@@V +SGDEXP++UY )@@G@@SD0ART,SDDCBN,0,35 . WHY SGDEXP? @[@@@V. @ @@@V. WORDS FORUZ )@@G@@ NONPL1 MSGS@[@@@V. @E@W@VGARBG1 SF +015000001 . PROPERVA )@@G@@ U FIELD FUDGE @F@@@WGARBG2 LMJ X11,0 . INSTRUCTION FVB )@@G@@OR UNSPEC PV. @F@@@WGARBG3* LA,U A4,0 . INST FOR FUDGVC )@@G@@E IN UNSPEC BIF @D@@@VDCCSF$ INSERT 3,'CSF' . CSF FUNCTION VD )@@G@@USED @A@@@VDCBENF INSERT 7,'END','FILE' . @A@W@VDCBCLK INSERT 1VE )@@G@@0,'CLO','CK ' . @A@@@WDCBCLK INSERT 5,'CLO','CK ' . @A@@@VDCBTRMVF )@@G@@ INSERT 4,'TRI','M ' . @A@Y@XDCONST INSERT 6,'ONS','TMT ' . VG )@@G@@@A@@@YONSTMG INSERT 6,'ONS','TMT ' . @C@@@VERXGRN EQU 52 . VH )@@G@@ NON STANDARD PL1 USED@#@@@V CEND . @#@@@V END . VI )@@G@@___ GGETT AGRL2,2 . GET SPACE FOR A FAKE DV @^@@@W VJ )@@G@@*[S@@@*SDFF*@C@@@L. COPYRIGHT 1975 BY UNIVERSITY OF MARYLAND @[@@@LVK )@@G@@. @D@@@L. QUESTIONS CONCERNING THIS SHOULD BE DIRECTED TO: @[@@@LVL )@@G@@. @ @@@L. MARVIN V. ZELKOWITZ @B@@@L. DEPARTMENT OF CVM )@@G@@OMPUTER SCIENCE @A@@@L. UNIVERSITY OF MARYLAND @B@@@L. VN )@@G@@ COLLEGE PARK, MARYLAND 20742 @[@@@L. @G@@@L. PERMISSIOVO )@@G@@N TO USE THESE LISTINGS AND THE COMPUTER PROGRAMS THEY@E@@@L. REPRESENVP )@@G@@T IS GRANTED UNDER THE FOLLOWING CONDITIONS: @[@@@L. @G@@@L. VQ )@@G@@ 1. UNLIMITED USE MAY BE MADE OF THE PROGRAMS REPRESENTED BY @G@@@LVR )@@G@@. THESE LISTINGS PROVIDED THAT THE NAME PLUM OR UNIVERSITY OF MARYLANDVS )@@G@@@E@@@L. PL/1 COMPILER REMAINS ASSOCIATED WITH THESE PROGRAMS. @[@@@LVT )@@G@@. @F@@@L. 2. MODIFICATIONS MAY BE MADE TO THE LISTINGS PROVIDVU )@@G@@ED: @[@@@L. @G@@@L. (A) ANY RESULTING PROGRAM, OR REPORT, PVV )@@G@@APER OR DOCUMENTATION @G@@@L. DESCRIBING SUCH PROGRAM WILL CLEAVW )@@G@@RLY INDICATE THAT THE PROGRAM @E@@@L. IS A DIALECT OF PLUM OR IS VX )@@G@@DERIVED FROM PLUM, AND @[@@@L. @G@@@L. (B) ALL SUCH MODIFICAVY )@@G@@TIONS, OTHER THAN TRIVIAL CORRECTIONS @F@@@L. OF ERRORS IN THVZ )@@G@@E SOURCE PROGRAMS, SHALL BE REPORTED AND @G@@@L. A BRIEF DESCRIPWA )@@G@@TION OF THE FEATURE ADDED SHALL BE SUBMITTED @C@@@L. TO THE UNWB )@@G@@IVERSITY OF MARYLAND, AND @[@@@L. @F@@@L. (C) NO PROGRAMSWC )@@G@@ DERIVED FROM THESE LISTINGS SHALL BE SOLD@G@@@L. WITHOUT WRITTENWD )@@G@@ APPROVAL FROM THE UNIVERSITY OF MARYLAND, AND @[@@@L. @F@@@L. WE )@@G@@ (D) COPIES OF THESE PROGRAMS MAY BE TRANSMITTED TO OTHER @G@@@L. WF )@@G@@ LOCATIONS PROVIDED THAT SUCH TRANSMITTALS CLEARLY INDICATE @G@@@LWG )@@G@@. WHETHER THE PROGRAMS ARE EXACT COPIES OF THE UNIVERSITY OF WH )@@G@@@E@@@L. MARYLAND PLUM COMPILER OR ARE MODIFICATIONS TO IT. @[@@@LWI )@@G@@. @G@@@L. 3. THESE CONDITIONS ONLY APPLY TO THE PLUM COMPILERWJ )@@G@@ ITSELF, @F@@@L. AND ARE NOT MEANT TO APPLY TO ANY PROGRAM WRITTEN WK )@@G@@USING PLUM. @E@@@L. THE PURPOSE OF THESE CONDITIONS IS TO ALLOW ANY USWL )@@G@@ER TO @F@@@L. EXPERIMENT WITH THE COMPILER AS LONG AS THE RESULTING PRWM )@@G@@ODUCT @G@@@L. IS NOT SOLD AND AS LONG AS IT IS KNOWN THAT THE PRODUCT WN )@@G@@DEVELOPED @#@@@L. FROM PLUM. @[@@@L. @[@@@L. @[@@@L. WO )@@G@@@[@@@L. @[@@@L. @[@@@L/. @#@@@L/ AXR$ . @#@@@L WP )@@G@@ DCLRG . @#@@@L@ADD,P PLTVDS @#@@@L@ADD,P PLCGST @#@@@L@ADD,PWQ )@@G@@ PLDSAW @#@@@L LIST . @#@@@L PLWORD . @#@@@L WR )@@G@@ PLAC . @#@@@L PLCGD . @#@@@L PLSD . @#@@@L WS )@@G@@ PLIG . @#@@@L CEND . @^@@@L/XGCG CSECT 3 . @ @@@MWT )@@G@@SUBSCR EQU DCONSU . @D@@@MXGBSDU* LABEL . UNARY RESOLVE, RESOWU )@@G@@LVES TOP OF STACK @B@@@M . ASSUMES X7 PTS TO TOP @ @@@MWV )@@G@@ USING SGDSCT,X7 . @E@@@M IF SGDRES,OFF,SGDID THEN,LJWW )@@G@@MP . VARIABLE NOT BSD @#@@@M LOCAL . @E@@@M SET SWX )@@G@@GDRES,OFF,SGDID . TURN RESOLUTION BIT OFF @H@@@M IF SGDPTR,OFF,SWY )@@G@@GDID THEN,XGBSD2 . -> IF NO EXPLICIT PTR PRESENT @F@@@M SETWZ )@@G@@ SGDPTR,OFF,SGDID . TURN PTR PRESENT BIT OFF @E@@@M GENXA )@@G@@ . PTR IS SECOND STACK ENTRY@D@@@M GINST OXB )@@G@@PLA,AGRA3,AGRL2,U . LA,U A3,PTRADDR@F@@@M MOVE SGDAID+DCGSLTXC )@@G@@,SGDAID,DCGSLT . COLLAPSE STACK @#@@@M XGPOP . @ @@@M XD )@@G@@ GOTO XGBSD3 . @D@@@MXGBSD2 LABEL . GET IMPXE )@@G@@LIED PTR @ @@@M LINK XGBSDP . @H@@@MXGBSD3 LABEL . XF )@@G@@ GEN OTHER REQUIRED INSTRS, AND SET UP AWS @ @@@M XG )@@G@@ LINK XGBSAW . @#@@@M JMP . @[@@@M . @[@@@M . XH )@@G@@@[@@@M . @I@@@MXGBSDP LOCAL . GET IMPLIED PTR ANDXI )@@G@@ USE TEMP AWS TO GEN INSTR @D@@@M LOAD X6,SGDRSD . LXJ )@@G@@OAD SD OF OPERAND @F@@@M LINK XGBSGS . GET ROOT SD IFXK )@@G@@ STRUC MEMBER @ @@@M USING SDSECT,X6 @E@@@M LOAXL )@@G@@D X6,SDBPTR . GET SD OF IMPLIED PTR @G@@@M IF SDMEMSXM )@@G@@,ON,SDCLS2 THEN,XGBSP1 . IF MEM OF STRUCT NEED 2 AWS @F@@@M MOVXN )@@G@@E AGXTMP,SDA1BS-FH1 . MOVE AW FROM SD TO TEMP AW @ @@@M GOTXO )@@G@@O XGBSP2 . @C@@@MXGBSP1 LABEL . SET UP 2 AWSXP )@@G@@@E@@@M LOADA A3,AGTMP2 . SET ONE TO PT TO THE OTHER @^@@@MXQ )@@G@@ SLB A3,18 .@ @@@M STORE A3,AGXTMP . @C@@@M XR )@@G@@ MOVE AGTMP2,SDA1BS-FH1 . AW FROM SD @#@@@MXGBSP2 LABEL . @#@@@MXS )@@G@@ GEN . @B@@@M GINST OPLA,AGRA3,AGXTMP,U . @#@@@MXT )@@G@@ JMP . @[@@@M/. @G@@@MXGBSAW LOCAL . AXU )@@G@@SSUMES X7-> ITEM BEING RESOLVED @ @@@M LOAD X6,SGDRSD . XV )@@G@@@F@@@M LINK XGBSGS . GET SD OF VAR OR SD OF STRUCTURE NAME XW )@@G@@@#@@@M GENM . @D@@@M GINST OPLA,AGRA2,AGXR0,U . LA,XX )@@G@@U A2,SDADDR @D@@@M GSUB PTRVER . LMJ X11,PTRVER XY )@@G@@@G@@@M GGETGR AGARL1 'X' . GET XREG FOR RUNTIME ADDR RETURXZ )@@G@@NED @E@@@M GINST OPLX,AGARL1,AGRA3 . LOAD ADDR OF BSD ITEM YA )@@G@@@#@@@M GFIN . @ @@@M LOAD X6,SGDRSD . @ @@@M YB )@@G@@ USING SDSECT,X6 . @B@@@M IF SDMEMS,ON,SDCLS2 THEN,XGBSW3 .YC )@@G@@@A@@@MXGBSW1 LABEL . ENTRY FROM BELOW @H@@@M MOVE SGDRDS,YD )@@G@@SDPROF . 0 IF SCALER, DISPL IF STRING IN STRUCT @#@@@MXGBSW2 LABYE )@@G@@EL . @ @@@M LOADA A7,AGARL1 . @F@@@M STORE A7,SGDRYF )@@G@@BS . SET THIS AW TO PT TO AUXIL AW @F@@@M IF SDRLCX,OFF,SYG )@@G@@DCLS1 THEN,JMP . IF REAL THEN FINISHED @D@@@M LOAD A3,SDRTYH )@@G@@C . GET SIZE OF ITEM @D@@@M SRB A3,1 . HYI )@@G@@ALVE FOR IMAG SIZE@^@@@M SLB A7,18 .@D@@@M ADD AYJ )@@G@@7,A3 . SET UP IMAG AW @ @@@M STORE A7,AGIM1 . YK )@@G@@@#@@@M JMP . @E@@@MXGBSW3 LABEL . SCALER YL )@@G@@MEM OF STRUCT @F@@@M IF SDARST,ON,SDCLS1 THEN,XGBSW1 . STRINYM )@@G@@G IN STRUC HAS DV @C@@@M GEN . NEED 3RD AW YN )@@G@@@E@@@M GSET AGAIM1,AGARL1 . USE AUXIL IMAG FOR RAW @ @@@MYO )@@G@@ LOADA A3,AGAIM1 . @E@@@M STORE A3,SGDRAB . SYP )@@G@@ET 2ND TO PT TO 3RD @F@@@M MOVE SGDRAD,SDPROF . DISPL FYQ )@@G@@ROM START OF STRUC DV @ @@@M MOVE SGDRDS,0,I . @ @@@M YR )@@G@@ GOTO XGBSW2 . @E@@@M/. BINARY RESOLVE - RESOLVES TWO OPERANDS YS )@@G@@ON TOP OF STACK @#@@@MXGBSDB* LOCAL . @ @@@M USING SGDSCT,YT )@@G@@X7 . @D@@@M LINK XGBSDU . RESOLVE TOP OF STK @G@@@MYU )@@G@@ IF SGDRES,OFF,SGDID+DCGSLT THEN,JMP . RETURN IF SECOND NOT BSD YV )@@G@@@F@@@M SET SGDRES,OFF,SGDID+DCGSLT . TURN RESOLVE BIT OFF YW )@@G@@@ @@@M STORE X7,DXGSX7 . @F@@@M ADD X7,DCGSLT,I .YX )@@G@@ SET X7 TO PT TO 2ND STACK ENTRY@E@@@M IF SGDPTR,OFF,SGDID TYY )@@G@@HEN,XGBSB1 . IS PTR PRESENT @E@@@M SET SGDPTR,OFF,SGDID . YZ )@@G@@SET PTR PRESENT BIT OFF @G@@@M GEN . USE EXPZA )@@G@@LICIT PTR AND COLLAPSE STACK @D@@@M GINST OPLA,AGRA3,AGRL2,U ZB )@@G@@. LA,U A3,PTRADDR @D@@@M LINK XGBSPP . DO THE COLLAPZC )@@G@@SING @ @@@M GOTO XGBSB2 . @#@@@MXGBSB1 LABEL . @D@@@MZD )@@G@@ LINK XGBSDP . GET IMPLIED PTR @#@@@MXGBSB2 LABZE )@@G@@EL . @C@@@M LINK XGBSAW . SET UP AWS @ @@@M ZF )@@G@@ LOAD X7,DXGSX7 . @D@@@M JMP . RETURN ZG )@@G@@TO XGEN @[@@@M . @[@@@M . @[@@@M . @#@@@MXGBSPP LOCAL .ZH )@@G@@@G@@@M SUB X7,DCGSLT,I . POINT TO TOP OF STK FOR COLLAPSZI )@@G@@ING @D@@@M MOVE SGDAID+2*DCGSLT,SGDAID+DCGSLT,DCGSLT@C@@@MZJ )@@G@@ MOVE SGDAID+DCGSLT,SGDAID,DCGSLT . @D@@@M GENM . ZK )@@G@@THERE MIGHT BE A RAW IN TOP ENTRY @B@@@M GSET AGARL2,AGARL1ZL )@@G@@ . ????? @A@@@M GSET AGAIM2,AGAIM1 . @^@@@M GFIZM )@@G@@N 'POP' . @ @@@M STORE X7,DXGSX7 . @E@@@M ADD XZN )@@G@@7,DCGSLT,I . SET X7 TO PT TO 2ND ENTRY@#@@@M JMP . @A@@@MZO )@@G@@/. ENTRY WHEN XGEN SEES AN OPERATOR @#@@@MXGBSDO* LABEL . @G@@@M ZP )@@G@@ IF A8,EQ,ACPTQ,I THEN,LJMP . CANT RESOLVE WHEN WE SEE '->' @#@@@MZQ )@@G@@ LOCAL . @G@@@M IF A8,GE,ACNOT,I THEN,XGBSO1 . SEE WHEZR )@@G@@THER UNARY OR BINARY OP @C@@@M LINK XGBSDB . BINARY ZS )@@G@@OP @#@@@M JMP . @#@@@MXGBSO1 LABEL . @C@@@M LINZT )@@G@@K XGBSDU . UNARY OP @#@@@M JMP . @H@@@M/. MULZU )@@G@@TIPLE ASG-- X2 PTS INTO STACK OF LHSIDES. IT MAY PT TO AN OPERAND,OR AN ZV )@@G@@@G@@@M . EXPLICIT PTR IN WHICH CASE X2 MUST BE ADJUSTED TO PT TO THE OPEZW )@@G@@RAND @[@@@M . @#@@@MXGBSDA* LOCAL . @ @@@M STORE X7,DXGSZX )@@G@@X7 . @ @@@M USING SGDSCT,X2 . @E@@@M . CHK IF STACK ZY )@@G@@ENTRY ABOVE HAS PTR PRESENT BIT ON @E@@@M SUB X2,DCGSLT,I .ZZ )@@G@@PT X2 ONE STACK ENTRY ABOVE @F@@@M IF SGDPTR,OFF,SGDID THEN,XGAA )@@G@@BAS1 . -> IF NO PTR PRESENT @D@@@M SET SGDPTR,OFF,SGDID . AB )@@G@@TURN PTR BIT OFF @^@@@M LOAD X7,X2 .@#@@@M GEN . AC )@@G@@@D@@@M GINST OPLA,AGRA3,AGRL2,U . LA,U A3,PTRADDR @ @@@M AD )@@G@@ GOTO XGBAS2 . @D@@@MXGBAS1 LABEL . NO PTR AE )@@G@@PRESENT @D@@@M ADD X2,DCGSLT,I . UNDO ABOVE SUBT AF )@@G@@@E@@@M IF SGDRES,OFF,SGDID THEN,XGBAS3 . VAR NOT BSD @^@@@MAG )@@G@@ LOAD X7,X2 .@D@@@M LINK XGBSDP . GET IMPAH )@@G@@LIED PTR @#@@@MXGBAS2 LABEL . @C@@@M LINK XGBSAW . AI )@@G@@ SET UP AWS @E@@@M SET SGDRES,OFF,SGDID . TURN RESOLVEAJ )@@G@@ BIT OFF @#@@@MXGBAS3 LABEL . @B@@@M LOAD X7,DXGSX7 . RAK )@@G@@ESTORE X7 @E@@@M JMP . RETURN TO XGEN TO DAL )@@G@@O ASG @G@@@M/. ARRAYS WITH RUNTIME SUBSCRIPTING ARE RESOLVED HERE WHEN TAM )@@G@@HE RIGHT @E@@@M . BRACKET IS SEEN IN XGEN. THERE MAY BE A PTR OPERATOAN )@@G@@R @E@@@M . STILL UNSEEN IN THE BCODE WHICH MUST BE CHECKED FOR HEREAO )@@G@@@#@@@MXGBSA1* LOCAL . @G@@@M IF SUBSCR,ON,DCGONF THEN,XGBDA1 .AP )@@G@@ -> IF ARRAY HAS SSC ENABLED @C@@@M GETC . LAQ )@@G@@OOK FOR '->'@A@@@M IF A8,EQ,ACPTQ,I THEN,JMP .@ @@@M LINAR )@@G@@K BCKPGC . @#@@@M JMP . @ @@@MXGBDA1 LABEL . RESOLVEAS )@@G@@ ARRAY@ @@@M USING SGDSCT,X7 . @C@@@M IF SGDRES,OFF,SAT )@@G@@GDID+DCGSLT THEN,JMP . @B@@@M SET SGDRES,OFF,SGDID+DCGSLT .AU )@@G@@@ @@@M STORE X7,DXGSX7 . @G@@@M ADD X7,DCGSLT,I .AV )@@G@@ ARRAY STACK ENTRY IS 2* REGULAR @D@@@M GETC . AW )@@G@@ LOOK FOR A '->' @B@@@M IF A8,EQ,ACPTQ,I THEN,XGBDAAX )@@G@@2 . @ @@@M LINK BCKPGC . @B@@@M LINK XGBSDP AY )@@G@@. GET IMPLIED PTR @ @@@M GOTO XGBDA5 . @B@@@MXGBDA2 LABAZ )@@G@@EL . EXPLICIT PTR PRESENT @A@@@M SET SGDPTR,OFF,SGDID . BA )@@G@@@#@@@M GEN . @B@@@M GINST OPLA,AGRA3,AGRL2,U . BB )@@G@@@ @@@M SUB X7,DCGSLT,I .@E@@@M MOVE SGDAID+2*DCGSBC )@@G@@LT,SGDAID+DCGSLT,DCGSLT . @C@@@M MOVE SGDAID+DCGSLT,SGDAIBD )@@G@@D,DCGSLT . @#@@@M XGPOP . @ @@@M STORE X7,DXGSX7 . BE )@@G@@@ @@@M GOTO XGBDA3 . @#@@@MXGBDA5 LABEL . @D@@@M BF )@@G@@ SUB X7,DCGSLT,I . PT X7 TO TOP OF STK @#@@@MXGBDA3 LABEL . BG )@@G@@@D@@@M LOAD X6,SGDRSD+DCGSLT . GET SD OF ARRAY @ @@@M BH )@@G@@ LINK XGBSGS . @#@@@M GENM . @B@@@M GINST OBI )@@G@@PLA,AGRA2,AGXR0,U . @ @@@M GSUB PTRVER . @ @@@M BJ )@@G@@ GGETGR AGARL1 'X' . @A@@@M GINST OPLX,AGARL1,AGRA3 .@#@@@MBK )@@G@@ GFIN . @#@@@MXGBDA6 LABEL . @ @@@M LOADA A3,SGDMBL )@@G@@LR . @^@@@M SLB A3,18 .@ @@@M ADD A3,SDPROF,X6 . BM )@@G@@@D@@@M STORE A3,SGDDV . STORE THE DV AW @ @@@M BN )@@G@@ LOAD X7,DXGSX7 . @#@@@M JMP . @[@@@M/. @E@@@MXGBSA2BO )@@G@@* LABEL . ARRAYS WITH INLINE SUBSCRIPTING RESOLVE DVA@ @@@M USIBP )@@G@@NG SGDSCT,X7 . @F@@@M IF SGDRES,OFF,SGDID+DCGSLT THEN,LJMP . BQ )@@G@@VAR NOT BASED @B@@@M SET SGDRES,OFF,SGDID+DCGSLT .@#@@@MBR )@@G@@ LOCAL . @F@N@M IF SD0PTR,OFF,SGDID+2*DCGSLT THEN,XGBRABS )@@G@@2 . NO PTR PRESENT@G@@@N LOAD A3,SGDID+2*DCGSLT . GET CLASS BBT )@@G@@ITS OF THING BELOW ARRAY@B@O@N AND A3,7,I . ISOLATE PTR BITSBU )@@G@@@B@@@O AND,U A3,7 . ISOLATE PTR BITS@E@@@N IF A4,NE,BV )@@G@@7,I THEN,XGBRA2 . -> IF ITS NOT A PTR @[@@@N. @#@@@N. **********BW )@@G@@*** @H@@@M . DO SOMETHING HERE TO FIND OUT IF THE PTR BEFORE THE ARRAYBX )@@G@@ IS A QUALIFIER @[@@@N. @[@@@N. @#@@@MXGBRA2 LABEL . @F@@@MBY )@@G@@ ADD X7,DCGSLT,I . PT X7 TO 2ND HALF FOR NEXT ROUTINE @B@@@MBZ )@@G@@ LINK XGBSDP . GET IMPLIED PTR@ @@@M SUB X7,DCGSCA )@@G@@LT,I .@A@@@M LOAD X6,SGDRSD+DCGSLT . @H@@@M LINK XCB )@@G@@GBSGS . GET SD OF VARIABLE OR OF STRUCTURE ROOT @#@@@M CC )@@G@@ GENM . @A@@@M GINST,OPLA,AGRA2,AGXR0,U . @ @@@M GSUCD )@@G@@B PTRVER . @ @@@M GGETGR AGRL1 'X' . @A@@@M GINCE )@@G@@ST OPLX,AGRL1,AGRA3 . @#@@@M GFIN . @ @@@M LOADA ACF )@@G@@3,AGRL1 . @^@@@M SLB A3,18 .@ @@@M ADD A3,SDPRCG )@@G@@OF,X6 @ @@@M STORE A3,SGDDV . @#@@@M JMP . @F@@@MCH )@@G@@/. THIS GETS THE SD OF THE STRUCTURE NAME IF VAR IS IN STRUCT . @^@@@MCI )@@G@@ . X6 HAS THE VAR SD. @#@@@MXGBSGS LLOC . @ @@@M USING SCJ )@@G@@DSECT,X6 . @C@@@M IF SDMEMS,OFF,SDCLS2 THEN,XGBSG2 . @#@@@MCK )@@G@@XGBSG1 LABEL . @ @@@M LOAD A3,SDDAD . @A@P@M IF CL )@@G@@A3,EQ,0 THEN,XGBSG2 . @A@@@P IF A3,EQ,0,I THEN,XGBSG2 . @^@@@MCM )@@G@@ LOAD X6,A3 .@ @@@M GOTO XGBSG1 . @#@@@MXGBSG2CN )@@G@@ LABEL . @ @@@M STORE X6,AGX0OF . @#@@@M LJMP . CO )@@G@@@[@@@M END .___LINK XGBSDB . BINARY OP @#@@@M JMPCP )@@G@@ . @#@@@MXGBSO1 LABEL . @C@@@M LINK XGBSDU . UCQ )@@G@@*[S@@@*SDFF*@C@@@F. COPYRIGHT 1975 BY UNIVERSITY OF MARYLAND @[@@@FCR )@@G@@. @D@@@F. QUESTIONS CONCERNING THIS SHOULD BE DIRECTED TO: @[@@@FCS )@@G@@. @ @@@F. MARVIN V. ZELKOWITZ @B@@@F. DEPARTMENT OF CCT )@@G@@OMPUTER SCIENCE @A@@@F. UNIVERSITY OF MARYLAND @B@@@F. CU )@@G@@ COLLEGE PARK, MARYLAND 20742 @[@@@F. @G@@@F. PERMISSIOCV )@@G@@N TO USE THESE LISTINGS AND THE COMPUTER PROGRAMS THEY@E@@@F. REPRESENCW )@@G@@T IS GRANTED UNDER THE FOLLOWING CONDITIONS: @[@@@F. @G@@@F. CX )@@G@@ 1. UNLIMITED USE MAY BE MADE OF THE PROGRAMS REPRESENTED BY @G@@@FCY )@@G@@. THESE LISTINGS PROVIDED THAT THE NAME PLUM OR UNIVERSITY OF MARYLANDCZ )@@G@@@E@@@F. PL/1 COMPILER REMAINS ASSOCIATED WITH THESE PROGRAMS. @[@@@FDA )@@G@@. @F@@@F. 2. MODIFICATIONS MAY BE MADE TO THE LISTINGS PROVIDDB )@@G@@ED: @[@@@F. @G@@@F. (A) ANY RESULTING PROGRAM, OR REPORT, PDC )@@G@@APER OR DOCUMENTATION @G@@@F. DESCRIBING SUCH PROGRAM WILL CLEADD )@@G@@RLY INDICATE THAT THE PROGRAM @E@@@F. IS A DIALECT OF PLUM OR IS DE )@@G@@DERIVED FROM PLUM, AND @[@@@F. @G@@@F. (B) ALL SUCH MODIFICADF )@@G@@TIONS, OTHER THAN TRIVIAL CORRECTIONS @F@@@F. OF ERRORS IN THDG )@@G@@E SOURCE PROGRAMS, SHALL BE REPORTED AND @G@@@F. A BRIEF DESCRIPDH )@@G@@TION OF THE FEATURE ADDED SHALL BE SUBMITTED @C@@@F. TO THE UNDI )@@G@@IVERSITY OF MARYLAND, AND @[@@@F. @F@@@F. (C) NO PROGRAMSDJ )@@G@@ DERIVED FROM THESE LISTINGS SHALL BE SOLD@G@@@F. WITHOUT WRITTENDK )@@G@@ APPROVAL FROM THE UNIVERSITY OF MARYLAND, AND @[@@@F. @F@@@F. DL )@@G@@ (D) COPIES OF THESE PROGRAMS MAY BE TRANSMITTED TO OTHER @G@@@F. DM )@@G@@ LOCATIONS PROVIDED THAT SUCH TRANSMITTALS CLEARLY INDICATE @G@@@FDN )@@G@@. WHETHER THE PROGRAMS ARE EXACT COPIES OF THE UNIVERSITY OF DO )@@G@@@E@@@F. MARYLAND PLUM COMPILER OR ARE MODIFICATIONS TO IT. @[@@@FDP )@@G@@. @G@@@F. 3. THESE CONDITIONS ONLY APPLY TO THE PLUM COMPILERDQ )@@G@@ ITSELF, @F@@@F. AND ARE NOT MEANT TO APPLY TO ANY PROGRAM WRITTEN DR )@@G@@USING PLUM. @E@@@F. THE PURPOSE OF THESE CONDITIONS IS TO ALLOW ANY USDS )@@G@@ER TO @F@@@F. EXPERIMENT WITH THE COMPILER AS LONG AS THE RESULTING PRDT )@@G@@ODUCT @G@@@F. IS NOT SOLD AND AS LONG AS IT IS KNOWN THAT THE PRODUCT DU )@@G@@DEVELOPED @#@@@F. FROM PLUM. @[@@@F. @[@@@F. @[@@@F. DV )@@G@@@[@@@F. @[@@@F. @[@@@F/. @#@@@E AXR$ . @#@@@E DW )@@G@@ DCLRG . @#@@@E UNLIST . @#@@@E@ADD,P PLTVDS . @#@@@E@ADD,PDX )@@G@@ PLCGST . @#@@@E@ADD,P PLDSAW . @#@@@E LIST . @#@@@E DY )@@G@@ PLWORD .@#@@@E PLCGD . @#@@@E PLSD . @#@@@E DZ )@@G@@ PLAC . @#@@@E PLIG . @#@@@ECGBF CSECT 3. @[@@@E. EA )@@G@@@]@@@EFGLOG1* @]@@@EFGLOG2* @]@@@EFGSIND* @]@@@EFGCOSD* EB )@@G@@@]@@@EFGTAND* @[@@@E. @[@@@E. @ @@@EFILL(1) SAC GGTNOP,CBEC )@@G@@B1RL .@^@@@EFILL(1) SAC CBBNOP,0 @[@@@E. @C@@@E. RAND FUNCED )@@G@@TION - NON- PL/1 STANDARD @[@@@E. @[@@@E. @ @@@EFGRAND* SACEE )@@G@@ GGTNOP,CBRAND @^@@@EFILL(1) SAC CBBNOP,0 . @[@@@E. @[@@@E. EF )@@G@@@[@@@E. @]@@@EFGEXPT* @]@@@EFGLOGT* @]@@@EFGTANT* @]@@@EEG )@@G@@FGSINT* @]@@@EFGCOST* @]@@@EFGSQRT* @[@@@E. @[@@@E. EH )@@G@@@[@@@E. @ @@@EFILL(1) SAC GGTNOP,CBB1RC @^@@@EFILL(1) SAC CBBNOEI )@@G@@P,0 @[@@@E. @[@@@E. @B@@@EFGATAN* . AEJ )@@G@@RC TAN@[@@@E. @[@@@E. @ @@@EFILL(1) SAC GGTNOP,CBBATN @^@@@EEK )@@G@@FILL(1) SAC CBBNOP,0 @[@@@E. @[@@@E. @D@@@EFGATND* . EL )@@G@@ ARC TAN DEGREES @[@@@E. @[@@@E. @ @@@EFILL(1EM )@@G@@) SAC GGTNOP,CBBATD @^@@@EFILL(1) SAC CBBNOP,0 @[@@@E. @B@@@EEN )@@G@@. FLOOR @[@@@E. @]@@@EFGFLRT* EO )@@G@@@ @@@EFILL(1) SAC CBSIGN,CBSFLR @D@@@EFILL(1) SAC CBXFLF,CBXFNP EP )@@G@@ . FLOAT , FIXED Q = 0@D@@@EFILL(1) SAC CBXFLQ,CBXFDQ . FB Q<0,EQ )@@G@@ FD Q<0 @D@@@EFILL(1) SAC CBXFLR,CBXFFF . FB Q>0, FD Q>0 ER )@@G@@@[@@@E. @[@@@E. @B@@@E. CEIL ES )@@G@@@[@@@E. @]@@@EFGCEIL* @ @@@EFILL(1) SAC CBSIGN,CBSCEL @ @@@EET )@@G@@FILL(1) SAC CBXFLC,CBXFNP @ @@@EFILL(1) SAC CBXFLQ,CBXFDQ @ @@@EEU )@@G@@FILL(1) SAC CBXCEL,CBXFFC @[@@@E. @[@@@E. @B@@@E. EV )@@G@@ TRUNC @]@@@EFGTRUN* @ @@@EFILL(1) SAC CBSEW )@@G@@IGN,CBSTRN @ @@@EFILL(1) SAC CBXFTQ,CBXFNP @ @@@EFILL(1) SAC CBXEX )@@G@@FLQ,CBXFDQ @ @@@EFILL(1) SAC CBXTRN,CBXFDP @[@@@E. @[@@@E. EY )@@G@@@[@@@E. @B@@@EFGROUN* . ROUND @G@@@EFILL(1EZ )@@G@@) SAC GGTNOP,CBSRON . ALL OF THE WORK IS DONE AT STAGEING @ @@@EFA )@@G@@FILL(1) SAC CBBNOP,0 . @[@@@E. @[@@@E. @[@@@E. @B@@@EFB )@@G@@FGMAXT* . MAX @[@@@E. @[@@@E. @ @@@EFC )@@G@@FILL(1) SAC GGTARI,BFSMAX .@ @@@EFILL(1) SAC BFFMIN,CBBNOP @ @@@EFD )@@G@@FILL(1) SAC BFBMIN,CBBNOP @[@@@E. @[@@@E. @B@@@EFGMINT* . FE )@@G@@ MIN @[@@@E. @[@@@E. @ @@@EFILL(1) SACFF )@@G@@ GGTARI,BFSMIN @ @@@EFILL(1) SAC BFFMIN,CBBNOP @ @@@EFILL(1) SACFG )@@G@@ BFBMIN,CBBNOP @[@@@E. @[@@@E. @B@@@EFGMODT* . FH )@@G@@ MOD BIF@[@@@E. @[@@@E. @ @@@EFILL(1) SAC BFTMOD,BFFI )@@G@@SMOD @ @@@EFILL(1) SAC BFMODF,CBBNOP @ @@@EFILL(1) SAC BFMODB,CBFJ )@@G@@BNOP @[@@@E. @[@@@E. @C@@@EFGABST* . AFK )@@G@@BSOLUTE VAL @[@@@E. @[@@@E. @ @@@EFILL(1) SAC CBTABS,CBSABS FL )@@G@@@ @@@EFILL(1) SAC CBABFR,CBBNOP .@H@@@EFILL(1) SAC CBABBR,CBBNOP .FM )@@G@@ REAL ARE CODE, COMPLEX DONE AT STAGING @[@@@E. @[@@@E. FN )@@G@@@C@@@EFGSIGN* . SIGN BIF @[@@@E. @[@@@EFO )@@G@@. @A@@@EFILL(1) SAC CBSIGN,CSSIGN . @A@@@EFILL(1) SAC CFP )@@G@@BSGFR,CBBNOP . @A@@@EFILL(1) SAC CBSGBR,CBBNOP . @[@@@E. FQ )@@G@@@[@@@E. @E@@@E. INLINE DATA TYPE BIFR )@@G@@F'S @B@@@EFGBINT* . BINARY @B@@@EFGDECT* . FS )@@G@@ DECIMAL@B@@@EFGFIXD* . FFT )@@G@@IXED @B@@@EFGFLTT* . FLOAT @C@@@EFGPREC* . FU )@@G@@ PRECISION @[@@@E. @[@@@E. @ @@@EFILL(1FV )@@G@@) SAC CBCONV,GGSNOP .@ @@@EFILL(1) SAC CBBNOP,0 . @[@@@E. FW )@@G@@@[@@@E. @E@@@E. REAL IMAG BIFS AND FX )@@G@@P.V. @[@@@E. @]@@@EFGCPLE* @[@@@E. @[@@@E. @C@@@EFILL(1FY )@@G@@) SAC BFTMOD,GGSADS . COMPLEX BIF @ @G@EFILL(1) SAC CBCPLX,CBFZ )@@G@@CPLX .@ @@@GFILL(1) SAC CBCPLF,CBCPLF .@ @G@EFILL(1) SAC CBCPLX,CBGA )@@G@@CPLX .@ @@@GFILL(1) SAC CBCPLB,CBCPLB .@[@@@E. @[@@@E. @C@@@EGB )@@G@@FGCONJ* . CONJUGATE @[@@@E. @[@@@E. GC )@@G@@@ @@@EFILL(1) SAC CBTABS,GGSNOP .@ @@@EFILL(1) SAC CBCJGR,CBCJGF GD )@@G@@@ @@@EFILL(1) SAC CBCJGR,CBCJGB @[@@@E. @[@@@E. @C@@@EFGIMAGGE )@@G@@* . IMAG BIF @[@@@E. @[@@@E. @ @@@EGF )@@G@@FILL(1) SAC CBTREL,GGSNOP .@^@@@EFILL(1) SAC CBIMG,0 .@[@@@E. GG )@@G@@@[@@@E. @B@@@EFGRLPV* . REAL PV@C@@@EFGREALGH )@@G@@* . REAL BIF @[@@@E. @[@@@E. @ @@@EGI )@@G@@FILL(1) SAC CBTREL,GGSNOP .@^@@@EFILL(1) SAC CBREL,0 .@[@@@E. GJ )@@G@@@[@@@E. @B@@@EFGIMPV* . IMAG PV@[@@@E. GK )@@G@@@[@@@E. @ @@@EFILL(1) SAC CBTREL,GGSNOP .@ @@@EFILL(1) SAC CBIGL )@@G@@MAG,0 . @[@@@E. @[@@@E. @A@@@E. HBOUND, LBOUND AND DGM )@@G@@IM @]@@@EFGDIMT* @]@@@EFGHBND* @]@@@EFGLBND* @[@@@E. GN )@@G@@@[@@@E. @ @@@EFILL(1) SAC CBTDIM,GGSNOP @^@@@EFILL(1) SAC CBGO )@@G@@DIM,0 @[@@@E. @[@@@E. @A@@@E/ . MATHEMATICAL FUNCTIONS GP )@@G@@@[@@@E. @B@@@E. FUNCTIONS WITH 1 REAL ARGUMENT @[@@@E. GQ )@@G@@@[@@@E. @^@@@E. GENERATED CODE @[@@@E. @A@@@E. DL GR )@@G@@ A3,REAL ARGUMENT @ @@@E. LMJ X11,FUNCTION @B@@@E. GS )@@G@@ DS A3,TEMPORARY FOR RESULT @[@@@E. @[@@@E. @D@@@E. GT )@@G@@ STAGING (TARGETING AND CODE GEN ARE NO-OPS) @[@@@E. @[@@@E. GU )@@G@@@#@@@ECBRAND LABEL . @D@@@E GNTR 2. RAND ENGV )@@G@@TRY POINT @E@@@E NONPL1 XGFRND,DCBRND,CBBRL1 . RAND NOT STANGW )@@G@@DARD @F@@@E GOTO CBBRL1 . MERGE WITH REAL ARG ROUTIGX )@@G@@NES @#@@@ECBB1RL LABEL . @#@@@E GNTR 2 .@#@@@ECBBRL1 LABGY )@@G@@EL . @F@@@E IF SDRLCX,OFF,SGDCLS THEN,CBBRL2 . -> REAL ARGUMGZ )@@G@@ENT @D@@@E SET SDRLCX,OFF,SGDCLS . USE REAL PART ONLY @C@@@EHA )@@G@@ EXERR EXERB1 LEVEL,2 . 'REAL PART USED'@]@@@E GEN@^@@@EHB )@@G@@ GFREE AGIM1 @#@@@ECBBRL2 LABEL . @#@@@ECBBRL3 LABEL . HC )@@G@@@D@@@E LOADA X2,SGDAID+DCGSLT . POINT TO RESULT @D@@@E HD )@@G@@ MOVE SGDAID+DCGSLT,SGDAID . SET RESULT AIDC @G@@@I SET SHE )@@G@@GDSGN,OFF,SGDAID+DCGSLT . TURN OFF UNARY MINUS IN OPND@D@@@E LINHF )@@G@@K CBSFLT . SET RESULT TO FLOAT@#@@@ECBBRL5 LABEL . @E@@@EHG )@@G@@ IF SDRLCX,OFF,SGDCLS THEN,CBBRL6 . ->REAL ARG. @#@@@E HH )@@G@@ GEN . @C@@@E GDBLE OPDL,AGRA1,AGIM1 . LOAD IMAG PART@#@@@EHI )@@G@@CBBRL6 LABEL . @#@@@E GENM . @A@@@E GDBLE OPDL,AGRAHJ )@@G@@3,AGRL1 . @#@@@ECBBRL7 GLBL . @^@@@E GSUB 'BILTN' @E@@@EHK )@@G@@CBBNOP GLBL . USED FOR NO-OP ICODE @#@@@E HL )@@G@@ GFIN . @E@@@E IF SDRLCX,OFF,SGDCLS THEN,CBBRL8 . RESULT HM )@@G@@REAL @#@@@E GENM @E@@@E GGETGR AGIM2,2 . GHN )@@G@@ET REGISTERS FOR RESULT @B@@@E GDBLE OPDS,AGRA1,AGIM2 'NO' . HO )@@G@@@#@@@E GFIN . @#@@@ECBBRL8 LABEL . @#@@@E GENM HP )@@G@@@E@@@E GGETGR AGRL2,2 . GET A TWO WORD REGISTER @B@@@EHQ )@@G@@ GDBLE OPDS,AGRA3,AGRL2 'NO' . @#@@@E GFIN . @D@@@EHR )@@G@@ XGPOP . POP OFF STACK ELT @#@@@ECBBRL4* LABHS )@@G@@EL . @A@@@E MOVE SGDID,SD0ART+SGDEXP,I@C@@@E LOAD X4,HT )@@G@@0,I . SET ICODE @^@@@E GOTO GGTRET . @[@@@E/. HU )@@G@@@E@@@E. MATHEMATICAL FUNCTIONS WITH 1 ARG (REAL OR COMPLEX)@[@@@EHV )@@G@@. @[@@@E. @^@@@E. CODE GENERATED @[@@@E. @ @@@E. HW )@@G@@ DL A1,COMPLEX RG @ @@@E. DL A3,REAL ARG @B@@@E. HX )@@G@@ LMJ X11,FUNCTION (REAL ARG) @C@@@E. LMJ X11,FUNCTION+1 HY )@@G@@(COMPLEX ARG) @ @@@E. DS A3,REAL RESULT @A@@@E. DS HZ )@@G@@ A1,COMPLEX RESULT @[@@@E. @H@@@ECBB1RC LABEL . IA )@@G@@ STAGEING FOR ONE ARG (REAL OR COMPLEX) @#@@@E GNTR 2 .IB )@@G@@@#@@@ECBBRC1 LABEL . @E@@@E IF SDRLCX,OFF,SGDCLS THEN,CBBRIC )@@G@@L2 . -> REAL ARG @C@@@E LOAD A7,DXGARG . COMPLEX ARG ID )@@G@@@^@@@E ADD A7,1,I . @ @@@E STORE A7,DXGARG . @E@@@EIE )@@G@@ GOTO CBBRL3 . PROCESS AS IN REAL PART @[@@@E. IF )@@G@@@B@@@E. FUNCTION TO CONVRT ARG TO FLOAT @[@@@E. @#@@@ECBSFLTIG )@@G@@ LLOC . @ @@@E USING SGDSCT,X2 . @D@@@E MOVE SGDIH )@@G@@SCL,0,I . NO SCALE FOR FLOAT @ @F@E USING SGDSCT,X7 . II )@@G@@@C@@@E LOAD A3,SGDCLS,X7 . GET CLASS @D@@@E OR,IJ )@@G@@U A3,SDFXFL . TURN ON FLOAT BIT @ @@@E STORE A4,SGDCLSIK )@@G@@,X2 . @E@@@ECBSFL2 LOCAL . ALTERNATE ENTZY POINT IL )@@G@@@D@@@E CGCONV R,X2 R,X7 . CONVERT TO FLOAT @D@@@F IM )@@G@@ SET SGDSGN,OFF,SGDCLS . RESULT NOT NEG. @ @@@F USING SGDIN )@@G@@SCT,X7 . @#@@@E JMP . @[@@@E. @^@@@E. ARC TANGEIO )@@G@@NT @[@@@E. @D@@@E. ATAN 1 REAL OR COMPLEX ARG OR 2 REAL ARIP )@@G@@GS @[@@@E. @ @@@E. ENTRY POINT 1 = 1 ARG@ @@@E. ENTIQ )@@G@@RY POINT 2 = 2 ARG@[@@@E. @C@@@ECBBATD LABEL . AIR )@@G@@TAND ENTRY @#@@@E GNTR 2 .@C@@@E LOAD A7,DXGNAR . IS )@@G@@ SEE IF 2 ARGS@E@@@E IF A7,EQ,DCGSLT,I THEN,CBBRL1 . -> IIT )@@G@@ REAL ARG @D@@@E LOAD A7,DXGARG . SET ENTRY POINT 2 IU )@@G@@@^@@@E ADD A7,1,I . @#@@@ECBATD1 LABEL . @ @@@E STOIV )@@G@@RE A7,DXGARG . @E@@@E IF SDRLCX,OFF,SGDCLS THEN,CBATD2 . -IW )@@G@@> ARG 2 REAL@A@@@E SET SDRLCX,OFF,SGDCLS . @C@@@E EXEIX )@@G@@RR EXERB1 LEVEL,2 . 'REALPART USED' @]@@@E GEN@^@@@E GFRIY )@@G@@EE AGIM1 @#@@@ECBATD2 LABEL . @F@@@E IF SDRLCX,OFF,SGDCIZ )@@G@@LS+DCGSLT THEN,CBATD3 . ->ARG 1 REAL@B@@@E SET SDRLCX,OFF,SGDCJA )@@G@@LS+DCGSLT . @C@@@E EXERR EXERB1 LEVEL,2 . 'REAL PART USED'@#@@@EJB )@@G@@ GEN . @^@@@E GFREE AGIM2 . @#@@@ECBATD3 LABEL . JC )@@G@@@F@@@E MOVE SGDPRE+2*DCGSLT,SGDPRE . ARG 2 IS RESULTING PREC JD )@@G@@@I@@@E LOADA X2,SGDAID+2*DCGSLT . CONVERT ARGJE )@@G@@ TO RESULTING @^@@@E LINK CBSFLT . @D@@@E XGPOP . JF )@@G@@ POP ARG 2 FOR NOW @C@@@E LOADA X2,SGDAID+DCGSLJG )@@G@@T . CONVERT ARG 1@^@@@E LINK CBSFL2 . @D@@@E SUB X7,JH )@@G@@DCGSLT,I . GET ARG 2 BACK @#@@@E GENM . @A@@@E JI )@@G@@ GDBLE OPDL,AGRA3,AGRL2 . @A@@@E GDBLE OPDL,AGRA1,AGRL1 . JJ )@@G@@@^@@@E GSUB 'BILTN' @D@@@E GGETGR AGRL2+DCGSLT,2 . GJK )@@G@@ET REAL REGISTER @F@@@E GDBLE OPDS,AGRA3,AGRL2+DCGSLT 'NO' . JL )@@G@@ SET RESULT @#@@@E GFIN . @D@@@E XGPOP 'SIZE',JM )@@G@@2*DCGSLT . POP OFF TWO ARGS. @C@@@E GOTO CBBRL4 . -JN )@@G@@>RETURN @[@@@E. @#@@@E. ARCTAN @^@@@E. EP1=1 REAJO )@@G@@L @^@@@E. EP2=1 COMPLEX @^@@@E. EP3=2 REAL @[@@@EJP )@@G@@. @#@@@ECBBATN LABEL . @#@@@E GNTR 2 .@D@@@E LOAJQ )@@G@@D A7,DXGNAR . SEE HOW MANY ARGS @D@@@E IF A7,EQ,DCGJR )@@G@@SLT,I THEN,CBBRC1 . -> 1 ARG @ @@@E LOAD A7,DXGARG . @C@@@EJS )@@G@@ ADD A7,2,I . ENTRY POINT 3@D@@@E GOTO CBAJT )@@G@@TD1 . ->MERGE WITH ATAND @ @@@E/ . INLINE BIF'SJU )@@G@@@[@@@E. @^@@@E. ABSOLUTE VALUE @[@@@E. @C@@@ECBTABS LABJV )@@G@@EL . TARGETING @#@@@E GNTR 2 . @A@@@E JW )@@G@@ CGCONV R,X7 R,X7 . SET X4 @I@@@E MOVE SGDAID+DCGSLT,SGDAID JX )@@G@@. RESULTING TYPE IS TYPE OF @^@@@E GOTO GGTJY )@@G@@RET . @[@@@E. @[@@@E. @[@@@E. @C@@@ECBSABS LLOC . JZ )@@G@@ STAGEING @D@@@E IF SDRLCX,OFF,SGDCLS THEN,LJMPKA )@@G@@ . -> REAL @^@@@E GNTR 2 . @E@@@E LOADA X2,SGDAKB )@@G@@ID+DCGSLT . POINT TO ELT. FOR BIF @E@@@E MOVE SGDAID+DCGSLTKC )@@G@@,SGDAID . COPY ATTRIBUTES @D@@@E LINK CBSFLT . CKD )@@G@@ONVERT TO FLOAT @E@@@E GENM . COMPUTE (X**2KE )@@G@@+Y**2)**1/2 @D@@@E GIFR CBSAB1,AGRL1 . IS REAL IN REG? KF )@@G@@@D@@@E GIFR CBSAB2,AGIM1 . IS IMAG IN REG? @C@@@E KG )@@G@@ GLOAD AGIM1,2 . GET INTO REG @D@@@ECBSAB2 GLBL . KH )@@G@@ IMAG IN REG HERE @D@@@E GFLOAT OPDFM,AGIM1,AGIM1 'KI )@@G@@NO' . GET Y**2 @E@@@E GDBLE OPDL,AGRA3,AGRL1 . GET REAL INTKJ )@@G@@O A3-A4 @D@@@E GFLOAT OPDFM,AGRA3,AGRA3 'NO' . GET X**2 KK )@@G@@@C@@@E GFLOAT OPDFA,AGRA3,AGIM1 . GET SUM @C@@@E GGOKL )@@G@@TO CBSAB3 . GO CALL SQRT @D@@@ECBSAB1 GLBL . KM )@@G@@ REAL PART IS IN REG@D@@@E GFLOAT OPDFM,AGRL1,AGRL1 'NO' . KN )@@G@@GET X**2 @E@@@E GDBLE OPDL,AGRA3,AGIM1 . GET IMAG INTO A3-AKO )@@G@@4 @D@@@E GFLOAT OPDFM,AGRA3,AGRA3 'NO' . GET Y**2 @C@@@EKP )@@G@@ GFLOAT OPDFA,AGRA3,AGRL1 . GET SUM @D@@@ECBSAB3 GLBL . KQ )@@G@@ HERE TO CALL SQRT @C@@@E GSUB BFSQRT . KR )@@G@@ COMPUTE SQRT @D@@@E GGETGR AGRL2,2 . GET REG FOR RKS )@@G@@ESULT @C@@@E GDBLE OPDS,AGRA3,AGRL2 . SAVE RESULT @#@@@E KT )@@G@@ GFIN . @D@@@E XGPOP . POP OFF ARGUEMENT KU )@@G@@@E@F@E SET SDRLCX,OFF,SGDCLS . SAY RESULT IS REAL @F@@@FKV )@@G@@ SET SDRLCX+SGDSGN,OFF,SGDCLS . SAY RESULT IS REAL @D@@@EKW )@@G@@ GOTO GGTRET . RETURN TO XGEN @[@@@E. @^@@@EKX )@@G@@. SIGN(N) BIF @[@@@E. @B@@@ECBSIGN LABEL . TARGETING FOKY )@@G@@R SIGN BIF @#@@@E GNTR 2 .@F@@@E LINK CBRLCX . KZ )@@G@@ CONVERT ARG TO REAL, IF IMAG @#@@@ECBSGN2 LABEL . @B@@@E LA )@@G@@ CGCONV R,X7 R,X7 . SET X4 @#@@@ECBSGN3 LABEL . @H@F@E LB )@@G@@ MOVE SGDAID+DCGSLT,SGDAID . SET RESULTING DATA TYPELC )@@G@@@B@@@E GOTO GGTRET . DONE @[@@@E. @F@@@E. LD )@@G@@ COMPLEX INPUT TO SIGN, GIVE ERROR AND USE ONLY REAL PART@[@@@E. LE )@@G@@@#@@@ECBRLCX LLOC . @E@@@E IF SDRLCX,OFF,SGDCLS THEN,LJMPLF )@@G@@ . ->REAL ALREADY @#@@@E LOCAL . @E@@@E SET SDRLCX,LG )@@G@@OFF,SGDCLS . USE ONLY REAL PART @#@@@E GEN . @^@@@E LH )@@G@@ GFREE AGIM1 .@D@@@E EXERR EXERB1 LEVEL,2 . 'REAL PART ULI )@@G@@SED' @C@@@E JMP . ->RETURN @[@@@E. LJ )@@G@@@[@@@E. @[@@@E. @B@@@ECSSIGN LABEL . STAGGING FOR SIGN BIF LK )@@G@@@^@@@E GNTR 2 . @G@@@E MOVE SGDAID+DCGSLT,DCBCLLL )@@G@@N . SET RESULT TO FIXED BIN 35,0 @B@@@E GOTO GGTRET . LM )@@G@@ EXIT @ @@@E/ . HBOUND LBOUND AND DIM@[@@@E. @[@@@E. LN )@@G@@@#@@@ECBTDIM LLOC . @#@@@E GNTR 2. @F@@@E CGCONV DCLO )@@G@@BCSM R,X7 . CONVERTT TO FIXED BIN(17,0) @E@@@E LOADA X3,LP )@@G@@SGDRBS . SAVE ADDR OF ARG. 2 @E@@@E STORE X3,DCGSLQ )@@G@@V2+8 . SAVE FOR RETURN TO XGEN @#@@@E XGPOP . @D@@@E LR )@@G@@ LOAD X2,SGDIBS+1 . DIMENSIONALITY @E@@@E STORE XLS )@@G@@2,DCGSV2+3 . SAVE FOR RETURN TO XGEN @E@@@E MOVE SGDAID+DCLT )@@G@@GSLT,DCBCSM . SET RESULT DATA TYPE @^@@@E LOAD X4,0,I . @C@@@ELU )@@G@@ GOTO GGTRET . RETURN @A@@@E/ . MAXLV )@@G@@ MIN AND MOD BIF'S@[@@@E. @D@@@EBFSMAX LLOC . SLW )@@G@@TAGING FOR MAX @F@@@E SET IGPLUS,ON,DGFLGZ . SET FLAG FOR 'LX )@@G@@JP' INSTRUCTION @D@@@E GOTO BFSMNG . CONTINUE STAGILY )@@G@@NG @F@@@EBFSMIN LLOC . ENTRY POINT FOR STAGING FOLZ )@@G@@R MIN @F@@@E SET IGPLUS,OFF,DGFLGZ . SET FLAG FOR 'JN' INSTRUCMA )@@G@@TION @#@@@EBFSMNG LABEL . @#@@@E GNTR 2 .@C@@@E LOAMB )@@G@@D X4,0,I . CLEAR X4 @D@@@E MOVE AGLBL,0,I . MC )@@G@@ CLEAR AW FOR JUMPS @C@@@E LOADA X3,AGLBL . SET AW MD )@@G@@TO USE@D@@@E STORE X3,DCGSV2+8 . SET ICODE REG X3 @C@@@EME )@@G@@ LINK CBRLCX . MAKE ARG REAL@F@@@E ADD X7,MF )@@G@@DCGSLT,I . MOVE DOWN ONE STACK ELEMENT @D@@@E LINK CBRMG )@@G@@LCX . MAKE ARG 2 REAL @C@@@E SUB X7,DCGSLT,I . MH )@@G@@ RECOVER STACK@D@@@E IF SDFXFL,ON,SGDCLS THEN,GGSAD5 . ->MI )@@G@@FLOAT @^@@@E LOAD X2,SGDPRE@F@@@E SUB X2,1,I . MJ )@@G@@ STAGING PREC 1 LESS THAN + PREC@ @@@E STORE X2,SGDPRE . MK )@@G@@@A@@@E LOAD X2,SGDPRE+DCGSLT . @^@@@E SUB X2,1,I . ML )@@G@@@A@@@E STORE X2,SGDPRE+DCGSLT . @ @@@E STORE X2,DGGPREMM )@@G@@ . @^@@@E GOTO GGSAD5 . @^@@@E/. MOD TARGETTING @[@@@EMN )@@G@@. @[@@@E. @[@@@E. @#@@@EBFTMOD LLOC . @#@@@E GNTMO )@@G@@R 2 .@C@@@E LINK CBRLCX . MAKE ARG REAL@F@@@E MP )@@G@@ ADD X7,DCGSLT,I . MOVE DOWN ONE STACK ELEMENT @D@@@E MQ )@@G@@ LINK CBRLCX . MAKE ARG 2 REAL @C@@@E SUB X7,MR )@@G@@DCGSLT,I . RECOVER STACK@B@@@E GOTO GGTAR2 . -MS )@@G@@>MERGE@[@@@E. @[@@@E. @[@@@E. @^@@@E. MOD STAGING MT )@@G@@@#@@@EBFSMOD LLOC . @#@@@E GNTR 2 .@C@@@E LOAD AMU )@@G@@8,0,I . ASSUME FLOAT @C@@@E IF SDFXFL,ON THEN,BFSMO1MV )@@G@@ . ->FLOAT @D@@@E LINK GGSSCL . SCALE TO SAME SCALEMW )@@G@@@D@@@E LOAD A8,DGGSCP . GET SCALE AND PRE @D@@@E MX )@@G@@ SSA A8,9 . GET SIGNED SCALE @D@@@EBFSMO1 LABEL . MY )@@G@@ MERGE WITH FLOAT @D@@@E ADD A8,SGDPRE . MZ )@@G@@ GET P2+MAX(Q1,Q2) @D@@@E LOAD A9,18,I . ASSUME NA )@@G@@DECIMAL @D@@@E IF SDDCBN,OFF THEN,BFSMO2 . IS IT DECIMAL NB )@@G@@@D@@@E LOAD A9,60,I . ASSUME FLOAT BIN @D@@@E NC )@@G@@ IF SDFXFL,ON THEN,BFSMO2 . IS IT FLOAT BIN @D@@@E LOAD AND )@@G@@9,35,I . IT IS FIXED BIN @F@@@EBFSMO2 LABEL . NE )@@G@@ MERGE HERE WITH MAX PRE IN A9 @E@@@E IF A9,GE,A8 THEN,BFSMNF )@@G@@O3 . IS COMPUTED PRE TOO BIG? @D@@@E LOAD A8,A9 . YNG )@@G@@ES,USE MAX PRE @#@@@EBFSMO3 LABEL . @E@@@E MOVE SGDAID+NH )@@G@@2*DCGSLT,SGDAID+DCGSLT . SET RESULT @D@@@E STORE A8,SGDPRE+2*DNI )@@G@@CGSLT . SET NEW PRE @D@@@E MOVE SGDSCL+2*DCGSLT,DGGSCL . NJ )@@G@@SET SCALE @E@@@E MOVE AGLBL,0,I . CLEAR WORD FOR JUMPNK )@@G@@S @D@@@E GRTN 2 . RETURN TO XGEN @E@@@ENL )@@G@@/ . CONVERSION BIF'S (BIN, DEC, FIX, FLT, PREC) @#@@@ECBCONVNM )@@G@@ LABEL . @#@@@E GNTR 2 .@D@@@E LOAD A2,0,I . NN )@@G@@ SET PRECISION TO 0 @B@@@E STORE A2,DGGSCP . Q=0 NO )@@G@@@D@@@E LOAD A3,DXGNAR . GET NUMBER OF ARGS @E@@@E NP )@@G@@ DIV A2,DCGSLT,I . DIVIDE BY STACK SIZE @D@@@E LOANQ )@@G@@D X5,A2 . SAVE NUMBER OF ARGS@D@@@E GOTO *$,A2 . NR )@@G@@ A2 IS AT LEAST 1 @C@@@E +CBCNV1 . 1NS )@@G@@ ARG (X) @C@@@E +CBCNV2 . 2 ARGS (X,P) @D@@@ENT )@@G@@ +CBCNV3 . 3 ARGS (X,P,Q) @[@@@E. @[@@@ENU )@@G@@. @#@@@ECBCNV3 LABEL . @D@@@E LINK CBCNST . GNV )@@G@@ET CONSTANT Q @ @@@E STORE A8,DGGSCL . @#@@@ECBCNV2 LABNW )@@G@@EL . @D@@@E LINK CBCNST . GET CONSTANTT P @B@@@ENX )@@G@@ STORE A8,DGGPRE . SET P @#@@@ECBCNV1 LABEL . @D@@@ENY )@@G@@ MOVE DGGCLS,SGDCLS . GET ATTR. OF X @D@@@E LOANZ )@@G@@D X4,X5 . SAVE NUMBER OF ARGS@F@@@E ADD X5,DXGARGOA )@@G@@ . GET ADDRESS OF BRANCH TABLE @ @@@E LOAD X11,0,X5 OB )@@G@@. @^@@@E LINK 0,X11 . @I@@@E. OC )@@G@@ RETURN FROM SETTING PROPER DATA TYPE FOR RESU @D@@@E CGCOD )@@G@@ONV DGGSTK R,X7 . CONVERT ARGUMENT @#@@@E GEN . @^@@@EOE )@@G@@ GMOVE 2,1 . @#@@@E XGPOP . @D@@@E LOAD X4,OF )@@G@@0,I . SET NO ICODE TOGEN @E@@@E GOTO GGTRET . OG )@@G@@ SET RESULT STACK ENTRY @[@@@E. @[@@@E. @[@@@E. @[@@@EOH )@@G@@. @[@@@E. @D@@@EBFDECT* EQU $-1 . DECIMAL ROUTIOI )@@G@@NES @C@@@E +FGDEC1 . DECIMAL (X) @C@@@E OJ )@@G@@ +FGDEC1 . DECIMAL(X,P) @D@@@E +FGDEC1 . OK )@@G@@ DECIMAL(X,P,Q) @[@@@E. @^@@@EBFBINT* EQU $-1 . OL )@@G@@@C@@@E +FGBIN1 . BINARY (X) @C@@@E +FGOM )@@G@@BIN1 . BINARY (X,P) @C@@@E +FGBIN1 . ON )@@G@@ BINARY(X,P,Q)@[@@@E. @^@@@EBFFLTT* EQU $-1 . @C@@@E OO )@@G@@ +FGFLT1 . FLOAT (X) @C@@@E +FGFLT2 . OP )@@G@@ FLOAT (X,P) @E@@@E. +FGFLT3 . FLOAT(XOQ )@@G@@,P,Q) ILLEGAL @[@@@E. @^@@@EBFFIXD* EQU $-1 . @C@@@E OR )@@G@@ +FGFIX1 . FIXED (X) @C@@@E +FGFIX2 . OS )@@G@@ FIXED (X,P) @C@@@E +FGFIX2 . FIXED (OT )@@G@@X,P,Q)@[@@@E. @^@@@EBFPREC* EQU $-1 . @C@@@E +FGPRC1 .OU )@@G@@ PRECISION(X) @D@@@E +FGPRC2 . POV )@@G@@RECISION(X,P) @D@@@E +FGPRC3 . PRECISION(X,POW )@@G@@,Q) @[@@@E. @#@@@EFGDEC1 LABEL . @E@@@E SET SDDCBN,OFOX )@@G@@F,DGGCLS . SET RESULT TO DECIMAL @D@@@E GOTO *BFPREC,X4 . OY )@@G@@ DO PRECISION PART @[@@@E. @#@@@EFGBIN1 LABEL . @E@@@E OZ )@@G@@ SET SDDCBN,ON,DGGCLS . SET RESULT TO BINARY @C@@@E GOTPA )@@G@@O *BFPREC,X4 . DO PRECISION @[@@@E. @#@@@EFGFLT1 LABEL . PB )@@G@@@B@@@E LOAD A7,6,I . SET P=6@E@@@E IF SDDPC )@@G@@CBN,OFF,DGGCLS THEN,FGFLT1X . ->NOT BINARY@F@@@E LOAD A7,27,I .PD )@@G@@ SET FLOAT BINARY PRECCSION @#@@@EFGFLT1X LABEL . @B@@@EPE )@@G@@ STORE A7,DGGPRE . SET P @#@@@EFGFLT2 LABEL . @A@@@EPF )@@G@@ SET SDFXFL,ON,DGGCLS . @C@@@E LJMP . PG )@@G@@ ->RETURN @[@@@E. @[@@@E. @#@@@EFGFIX1 LABEL . @D@@@EPH )@@G@@ LOAD A7,5,I . SET FIXED DEC P @C@@@E IF PI )@@G@@ SDDCBN,OFF,DGGCLS THEN,FGTFX2 . @D@@@E LOAD A7,35,I . PJ )@@G@@ SET FIXED BIN PP @#@@@EFGTFX2 LABEL . @ @@@E STORE A7,PK )@@G@@DGGPRE . @#@@@EFGFIX2 LABEL . @A@@@E SET SDFXFL,OFF,DGGCPL )@@G@@LS . @C@@@E LJMP . ->RETURN @[@@@E. PM )@@G@@@#@@@EFGPRC3 LABEL . @E@@@E IF SDFXFL,OFF,DGGCLS THEN,LJMPPN )@@G@@ . ->FIXED RESULT @[@@@E. @F@@@E. Q SHOULD NOT BE EXPRESSED FOR FLOAPO )@@G@@T (EXCEPT IF ZERO)! ERROR? @[@@@E. @D@@@E MOVE DGGSCL,0,PP )@@G@@I . IGNORE Q FOR FLOAT @#@@@EFGPRC2 LABEL . @#@@@EFGPRC1 LABPQ )@@G@@EL . @#@@@E LJMP . @[@@@E. @[@@@E. @[@@@E. @E@@@EPR )@@G@@. ROUTINE TO GET CONSTANT VALUE FROM STACK @[@@@E. PS )@@G@@@#@@@ECBCNST LOCAL . @G@@@E IF SDVRCN,ON,SGDCLS THEN,CBCNSPT )@@G@@8 . -> CONSTANT, SO FAR OK @E@@@E EXERR ERRG08 LEVEL,2 . ARG PU )@@G@@SHOULD BE CONSTANTT @B@@@E. 10 USEDPV )@@G@@@#@@@ECBCNS6 LABEL . @D@@@E LOAD A8,10,I . SET DEFPW )@@G@@AULT OF 10 @^@@@E GOTO CBCNS7 . @F@@@ECBCNS8 LABEL . PX )@@G@@ SET IS SMALL INTEGER CONSTANT @F@@@E IF SDRLCX,OFPY )@@G@@F,SGDCLS THEN,CBCNS1 . ->REAL CONSTTNT @C@@@E EXERR ERRG10 LEPZ )@@G@@VEL,1 . USE REAL PART @]@@@E GEN@ @@@E GSET AGRL1,AGIQA )@@G@@M1 . @#@@@ECBCNS1 LABEL . @ @@@E USING SDSECT,X4 . @ @@@EQB )@@G@@ LSDP X4,SGDRSD . @ @@@E LOAD A2,SDLCOF,X4 . @^@@@EQC )@@G@@ USING WORD,A2 .@E@@@E IF SDFXFL,ON,SDCLS1 THEN,CBCNSQD )@@G@@9 . -> FLOAT CONST@^@@@E SUB A2,2,I . @F@@@E IF W1,QE )@@G@@NZERO THEN,CBCNS9 . -> NOT FIXED BINARYCONST @E@@@E ADD A2,QF )@@G@@1,I . POINT TO FIXED BINARY @G@@@E IF SGDSCL,NZQG )@@G@@ERO THEN,CBCNS3 . ->NOT INTEGER FIXED BINARY @F@@@E LOAD A8,QH )@@G@@W1 . FINALLY GET FIXEDDBINARY VALUE @^@@@E GOTO CBCQI )@@G@@NS4 . @#@@@ECBCNS9 LABEL . @D@@@E EXERR ERRG09 LEVEL,2 . NON QJ )@@G@@INTEGER VALUE @D@@@E GOTO CBCNS6 , SET DEFAULT OQK )@@G@@F 10 @#@@@ECBCNS3 LABEL . @C@@@E LOAD A8,W1 . GQL )@@G@@ET VALUE @C@@@E LOAD A3,SGDSCL . SET SCALE @D@@@EQM )@@G@@ SSA A8,0,A3 . SCALE TO INTEGER @D@@@ECBCNS4 LABQN )@@G@@EL . CHECK VALID VALUE @E@@@E IF A8,GT,017QO )@@G@@7777,I THEN,CBCNS9 . ->NO GOOD VALUE@E@@@E IF SGDSGN,OFF,SGDCQP )@@G@@LS THEN,CBCNS7 . ->NOT COMPL. @C@@@E LOADN A8,A8 . SQQ )@@G@@WITCH SIGN @D@@@ECBCNS7 LABEL . SET RETURN VALUE QR )@@G@@@#@@@E GENM @^@@@E GFREE AGRL1 . @^@@@E GFIQS )@@G@@N 'POP' @G@@@E JMP . ->RETURN, VALUE IN QT )@@G@@A8, STACK POPPED @B@@@E/ . REAL AND IMAGINARY BIF'S AND PV'S@[@@@EQU )@@G@@. @[@@@E. @#@@@ECBTREL LABEL . @#@@@E GNTR 2. @E@@@EQV )@@G@@ MOVE DGFLGZ,SGDCLS . SET FLAGS FOR ICODER @A@@@E QW )@@G@@ SET SDRLCX,OFF,SGDCLS @D@@@E LOAD X4,0,I . SQX )@@G@@ET ICODE TYPE @^@@@E GOTO GGTRET . @#@@@E/. ROUND QY )@@G@@@[@@@E. @[@@@E. @#@@@ECBSRON LABEL . @^@@@E GNTR 2QZ )@@G@@ . @E@@@E LINK CBRLCX . SET CONSTANT TO REAL RA )@@G@@@D@@@E LINK CBCNST . GET THE CONSTANT @E@@@E RB )@@G@@ CGCONV R,X7 R,X7 . SET CONSTANTS STRAIGHT @C@@@E LOARC )@@G@@D A7,SGDSCP . GET SCALE,PRE@E@@@E SSA A7,9 . RD )@@G@@ GET SIGN EXTENDED SCALE @G@@@E ANU A8,A7 . GRE )@@G@@ET N-Q INTO A9 ************ @C@@@E LOADM A8,A8 . RF )@@G@@ GET ABS(N) @D@@@E LOAD A6,SGDPRE . GET PRE FOR TRG )@@G@@ESTING@D@@@E ADD A6,1,I . ROUND UPS THE PRE @G@@@ERH )@@G@@ SET IGPLUS++IGRLCX++IGMPDV,OFF,DGFLGZ . ASSUME REAL AND SCALINGRI )@@G@@@E@@@E IF SDRLCX,OFF,SGDCLS THEN,CBSRO1 . IS IT REAL? @C@@@ERJ )@@G@@ SET IGRLCX,ON,DGFLGZ . SAY COMPLEX @#@@@ECBSRO1 LABEL . RK )@@G@@@E@@@E IF SDDCBN,OFF,SGDCLS THEN,RONDF1 . IS IT DECIMAL? @E@@@ERL )@@G@@ IF SDFXFL,ON,SGDCLS THEN,RONBF1 . IS IT FLOAT BIN? @[@@@E. RM )@@G@@@^@@@E. BIN FIXED HERE @G@@@E. COMPUTE: TRN )@@G@@RUNC(A*2^(N-Q-1)+1/2)/2^(N-Q-1) @F@@@E. RO )@@G@@ =TRUNC(A*2^(N-Q)+1)/2^(N-Q) @[@@@E. @D@@@E LOAD ARP )@@G@@3,34,I . SET UP FOR CHECKING@D@@@E LINK RONCHK . RQ )@@G@@ CHECK IF ARG OK @C@@@E LOADN A9,A9 . GET -(NRR )@@G@@-Q) @E@@@E IF A9,LT,0,I THEN,RONEND . ROUND AT EXISTING DIGIT?RS )@@G@@@F@@@E IF A9,NE,0,I THEN,RONBX3 . INITIAL SHIFTING TO BE DONE RT )@@G@@@E@@@E SET IGPLUS,ON,DGFLGZ . SAY NO INITIAL SHIFT @D@@@ERU )@@G@@RONBX3 LABEL . SET UP SHIFT COUNTS@E@@@E STORV )@@G@@RE A9,AGX0OF . SET INITIAL SHIFT COUNT @E@@@E MOVE ARW )@@G@@GXTMP,AGXR0 . SET TEMP ADDRESS WORD @E@@@E ADD A9,1,I RX )@@G@@. SHIFT BACK ONE EXTRA @E@@@E STORE A9,AGX0OF . RY )@@G@@ SET SHIFT BACK COUNT @#@@@E GENM . @D@@@E GBORZ )@@G@@FF RONBX6,IGRLCX . IS IT COMPLEX? @D@@@E GIFR RONBX4,SA )@@G@@AGIM1 . IS IMAG IN REG? @D@@@E GLOAD AGIM1,I . GSB )@@G@@ET IMAG INTO REG @#@@@ERONBX4 GLBL . @E@@@E GBON RONBX5,SC )@@G@@IGPLUS . INITIAL SHIFT TO BE DONE?@E@@@E GSHIN OPSSA,AGIM1,ASD )@@G@@GXTMP 'NO' . SHIFT TO SCALE @E@@@ERONBX5 GLBL . HSE )@@G@@ERE IF NO INITIAL SHIFT @D@@@E GINST OPLA,AGRA3,AGRR12 'NO' . SF )@@G@@GET A ONE @D@@@E GINST OPTP,AGRX0,AGIM1 'NO' .SEE IF POS SG )@@G@@@E@@@E GINST OPLNA,AGRA3,AGRA3 'NO' . GET -1 IF NEG @D@@@ESH )@@G@@ GINST OPAA,AGIM1,AGRA3 'NO' . ADD IN +- 1/2@C@@@E GSHSI )@@G@@IN OPSSA,AGIM1,1,I 'NO' . TRUNCATE@D@@@E GSHIN OPLSSC,AGIM1,SJ )@@G@@AGXR0 'NO' . RESCALE @A@@@ERONBX6 GLBL . HERE FOR REAL PART @D@@@ESK )@@G@@ GIFR RONBX7,AGRL1 . IS REAL PART IN REG@D@@@E GLOSL )@@G@@AD AGRL1,1 . GET IT INTO REG @B@@@ERONBX7 GLBL . REAL PASM )@@G@@RT NOW IN REG @G@@@E GBON RONBX8,IGPLUS . INITIAL SHIFTSN )@@G@@ NEEDED FOR REAL PART? @C@@@E GSHIN OPSSA,AGRL1,AGXTMP 'NO' .SO )@@G@@ SCALE@#@@@ERONBX8 GLBL . @D@@@E GINST OPLA,AGRA3,AGRR12 'SP )@@G@@NO' . GET A ONE @E@@@E GINST OPTP,AGRX0,AGRL1 'NO' . IS REALSQ )@@G@@ PART POS @C@@@E GINST OPLNA,AGRA3,AGRA3 'NO' . GET -1@C@@@ESR )@@G@@ GINST OPAA,AGRL1,AGRA3 'NO' . ADD +-1@C@@@E GSHIN OSS )@@G@@PSSA,AGRL1,1,I 'NO' . TRUNCATE@D@@@E GSHIN OPLSSC,AGRL1,AGXR0 ST )@@G@@'NO' . RESCALE @#@@@E GFIN . @A@@@ERONEND LABEL . HERE TOSU )@@G@@ FINISH UP @#@@@E GEN . @E@@@E GMOVE +2,1 . SV )@@G@@ MOVE ARG ONTO BIF SGD @A@@@E XGPOP . POP OFF STACK TOP SW )@@G@@@D@@@E LOAD X4,0,I . SET TO ONLY ICODE @B@@@E SX )@@G@@ GOTO GGTRET . RETURN @D@@@ERONBF1 LABEL . SY )@@G@@ FLOAT BIN HERE @[@@@E. @G@@@E. COMPUTE: SZ )@@G@@ TRUNC(A*2^(N-Q-1)+1/2)/2^(N-Q-1) @[@@@E. @C@@@E LOATA )@@G@@D A3,59,I . SET FOR CHECK@C@@@E LINK RONCHK . TB )@@G@@ GO CHECK ARG @C@F@E SUB A9,1,I . GET N-Q-1 TC )@@G@@@E@@@E IF A9,EQ,0,I THEN,RONDF4 . IS ANY SHIFTING NEEDED @F@@@ETD )@@G@@ ADD A9,02000,I . GET EXPONENT FOR FLOAT NUMBER @D@@@ETE )@@G@@ SLB A9,1 . MAKE ROOM FOR 1 @D@@@E ADDTF )@@G@@ A9,1,I . GET SET FOR 020004 @F@@@E STORE A9,AGX0TG )@@G@@OF . PUT IT WHERE IT CAN BE GOTTEN @#@@@E GENM . @F@@@ETH )@@G@@ GINST OPLA,AGRA2,AGXR0,U 'NO' . GET EXPONENT INTO REG @F@@@ETI )@@G@@ GSHIN OPLDSL,AGRA1,59,I 'NO' . SHIFT TO PROPER POSITION@E@@@ETJ )@@G@@ GFIN . SCALING CONSTANT SET UP @C@@@E TK )@@G@@ LOADA A3,A1 . POINT TO A1 @E@@@E STORE A3,AGX0TL )@@G@@OF . SET TO POINT TO CONSTANT @E@@@E GOTO RONDF5 . TM )@@G@@ GO MERGE WITH DECIMAL @E@@@ERONDF1 LABEL . HTN )@@G@@ERE FOR DECIMAL ROUNDING@[@@@E. @G@@@E. COMPUTE: TRUNTO )@@G@@C(A*10^(N-Q-1)+SIGN(A)*.5)/10^(N-Q-1) @[@@@E. @D@@@E LOATP )@@G@@D A3,17,I . SET FOR CHECK . @C@@@E LINK RONCHK TQ )@@G@@. CHECK PRE,ARG@C@F@E SUB A9,1,I . COMPUTETR )@@G@@ N-Q-1@D@@@E LOADM A3,A9 . GET MAG OF N-Q-1 @G@@@ETS )@@G@@ ADD A3,A3 . GET 2*N-Q-1 FOR INDEX INTO TABLE TT )@@G@@@E@@@E LOADA A8,KKPW10-2,A3 . POINT TO POWER OF 10 @C@@@ETU )@@G@@ STORE A8,AGX0OF . SET FOR ICODE@D@@@E IF A9,NE,TV )@@G@@0,I THEN,RONDF5 . NEED SCALING? @D@@@ERONDF4 LABEL . TW )@@G@@ HERE IF NO SCALING @D@@@E SET IGPLUS,ON,DGFLGZ . SAY NOTX )@@G@@ SCALING @B@@@E GOTO RONDF6 . MERGE @E@@@ERONDF5TY )@@G@@ LABEL . CHOOSE DIVIDE OR MULT @D@@@E IF TZ )@@G@@A9,GE,1,I THEN,RONDF6 . MUST MULTIPLY @D@@@E SET IGMPDV,UA )@@G@@ON,DGFLGZ . SAY TO DIVIDE @ @@@ERONDF6 LABEL . START CODEGEN@#@@@EUB )@@G@@ GENM . @C@@@E GBOFF RONDX1,IGRLCX . IS IT REAL? UC )@@G@@@D@@@E GIFR RONDF7,AGIM1 . IS IMAG IN REG? @C@@@E UD )@@G@@ GLOAD AGIM1,2 . GET INTO REG @E@@@ERONDF7 GLBL . UE )@@G@@ IMAG PART NOW IN REG @D@@@E GBON RONDF9,IGPLUSUF )@@G@@ . SCALING NEEDED? @D@@@E GBON RONDF8,IGMPDV . MULTIPLUG )@@G@@Y OR DIVIDE?@F@@@E GFLOAT OPDFM,AGIM1,AGXR0 'NO' . MULTIPLY BY UH )@@G@@SCALE FACTOR@E@@@E GGOTO RONDF9 . FINISHED FIRST SCALUI )@@G@@ING @D@@@ERONDF8 GLBL . HERE TO DIVIDE @D@@@EUJ )@@G@@ GFLOAT OPDFD,AGIM1,AGXR0 'NO' . SCALE DOWN @D@@@ERONDF9 GLBUK )@@G@@L . HERE TO ADD .5 @^@@@E GLIT 1 . UL )@@G@@@B@@@E DL A3,KK5000 . GET .5 @D@@@E GINST OUM )@@G@@PTP,AGRX0,AGIM1 'NO' . SEE IF POS @D@@@E GDBLE OPDLN,AGRA3,AUN )@@G@@GRA3 'NO' . GET -.5 @C@@@E GFLOAT OPDFA,AGIM1,AGRA3 'NO' . UO )@@G@@ADD .5@D@@@E GFLOAT OPDFA,AGIM1,AGXUNZ 'NO' . TRUNCATE @D@@@EUP )@@G@@ GBON RONDX1,IGPLUS . ANY SCALING NEEDED?@D@@@E GBOUQ )@@G@@N RONDF0,IGMPDV . MULT OR DIVIDE? @D@@@E GFLOAT OPDFD,AUR )@@G@@GIM1,AGXR0 'NO' . UNSCALE @C@@@E GGOTO RONDX1 . NUS )@@G@@OW DO REAL @B@@@ERONDF0 GLBL . HERE TO UNDO DIVISION @D@@@E UT )@@G@@ GFLOAT OPDFM,AGIM1,AGXR0 'NO' . UNSCALE @D@@@ERONDX1 GLBL . UU )@@G@@ HERE FOR REAL PART @D@@@E GBAL CDXLDR . UV )@@G@@ LOAD REAL INTO REG @F@@@E GBON RONDX3,IGPLUS . ANY INIUW )@@G@@TIAL SCALING NEEDED? @D@@@E GBON RONDX2,IGMPDV . MULT ORUX )@@G@@ DIVIDE @C@@@E GFLOAT OPDFM,AGRL1,AGXR0 'NO' . SCALE @ @@@EUY )@@G@@ GGOTO RONDX3 . @F@@@ERONDX2 GLBL . HUZ )@@G@@ERE TO DIVIDE FOR SCALING @C@@@E GFLOAT OPDFD,AGRL1,AGXR0 'VA )@@G@@NO' . SCALE @D@@@ERONDX3 GLBL . HERE TO DO TRUNC VB )@@G@@@^@@@E GLIT 1 . @B@@@E DL A3,KK5000 . GVC )@@G@@ET .5 @D@@@E GINST OPTP,AGRX0,AGRL1 'NO' . SEE IF POS @D@@@EVD )@@G@@ GDBLE OPDLN,AGRA3,AGRA3 'NO' . GET -.5 @D@@@E GFLVE )@@G@@OAT OPDFA,AGRL1,AGRA3 'NO' . ADD +- .5 @D@@@E GFLOAT OPDFA,AVF )@@G@@GRL1,AGXUNZ 'NO' . TRUNCATE @C@@@E GBON RONDX5,IGPLUS . AVG )@@G@@LL DONE? @D@@@E GBON RONDX4,IGMPDV . MULTIPLY OR DIVIDE?VH )@@G@@@D@@@E GFLOAT OPDFD,AGRL1,AGXR0 'NO' . UNSCALE @C@@@E VI )@@G@@ GGOTO RONDX5 . ALL DONE @E@@@ERONDX4 GLBL . VJ )@@G@@ HERE TO UNSCALE DIVIDE @D@@@E GFLOAT OPDFM,AGRL1,AVK )@@G@@GXR0 'NO' . UNSCALE @E@@@ERONDX5 GLBL . MERGE HVL )@@G@@ERE WHEN DONE @#@@@E GFIN . @E@@@E GOTO RONEND VM )@@G@@. MERGE WITH BIN FIXED @F@@@ERONCHK LLOC . HERE TOVN )@@G@@ CHECK COMPUTED PRE AND ARG SIZE @ @@@E USING WORD,A3 . VO )@@G@@@D@@@E IF A6,GE,W1U+2 THEN,RONCH1 . NEW PRE TOO BIG?@D@@@E VP )@@G@@ STORE A6,SGDPRE . ROUND UPS THE PRE @#@@@ERONCH1 LABEL . VQ )@@G@@@D@@@E IF A8,LE,W1U THEN,LJMP . ARG SMALL ENOUGH? @D@@@E VR )@@G@@ LOCAL . CALL FOR ERROR MSG @F@@@E EXERR EXRVS )@@G@@OUN LEVEL,2 . ARG TO ROUND TOO BIG. ONE USED @D@@@E LOAD AVT )@@G@@9,1,I . GET REPLACEMENT ONE@C@@@E SUB A9,A7 . VU )@@G@@ GET N-Q AGAIN@B@@@E JMP . RETURN @A@@@EVV )@@G@@/ . FLOOR, CEIL AND TRUNC@[@@@E. @[@@@E. @#@@@E. VW )@@G@@ STAGING @[@@@E. @D@@@E. ON OUTPUT, X4 HAS THE FOLLOWING VX )@@G@@VALUES: @[@@@E. @^@@@E. X4 X Q @ @@@E. 0 VY )@@G@@ FLOAT ANY @^@@@E. 1 FIXED 0 @ @@@E. 2 FIXEDVZ )@@G@@ BIN <0 @ @@@E. 3 FIXED DEC <0 @ @@@E. 4 FIXEDWA )@@G@@ BIN >0 @ @@@E. 5 FIXED DEC >0 @[@@@E. @#@@@ECBSFLRWB )@@G@@ LABEL . @#@@@ECBSCEL LABEL @#@@@ECBSTRN LABEL . @#@@@E WC )@@G@@ GNTR 2 .@E@@@I MOVE SGDAID+DCGSLT,SGDAID . SET ATTR OF REWD )@@G@@SULT @D@@@E LOAD X4,0,I . ASSUME FLOAT RETURN@D@@@EWE )@@G@@ IF SDFXFL,ON,SGDCLS THEN,CBSTRX . -> FLOAT@D@@@E STOWF )@@G@@RE X4,SGDSCL+DCGSLT . SET RESULT Q=0 @B@@@E ADD X4,1,I . WG )@@G@@ X4=1 @D@@@E IF SGDSCL,ZERO THEN,GGTRET . ->FIXEDWH )@@G@@ Q=0 @[@@@E. @B@@@E. COMPUTE Q=MIN(N, MAX(P-Q+1,1) ) @[@@@EWI )@@G@@. @B@@@E LOADN A7,SGDSCP . -Q @^@@@E SSAWJ )@@G@@ A7,9 @B@@@E LOAD A9,A7 . SAVE -Q@B@@@E WK )@@G@@ ADD A7,SGDPRE . P-Q @B@@@E IF A7,LT,0,I THEN,WL )@@G@@CBSCL1 . @^@@@E LOAD A7,0,I . @C@@@ECBSCL1 LABEL . WM )@@G@@ MAX(P-Q,0) @^@@@E ADD A7,1,I . @C@@@E LOAWN )@@G@@D A8,18,I . SET MAX P @C@@@E IF SDDCBN,OFF,SGDCWO )@@G@@LS THEN,CBSCL2 . @^@@@E LOAD A8,35,I .@#@@@ECBSCL2 LABEL . WP )@@G@@@B@@@E IF A7,LT,A8 THEN,CBSFL5 . @^@@@E LOAD A7,WQ )@@G@@A8 . @C@@@ECBSFL5 LABEL . A7=PRECISION @A@@@E WR )@@G@@ STORE A7,SGDPRE+DCGSLT . @B@@@E ADD X4,1,I . XWS )@@G@@4=2 @C@@@E STORE A9,AGX0OF . ASSUME Q<0 @F@@@E WT )@@G@@ IF SDDCBN,OFF,SGDCLS THEN,CBSFL3 . ->DECIMAL DATA @B@@@E WU )@@G@@ IF A9,GE,0,I THEN,GGTRET . @E@@@E STOREN A9,DCGSV2+3 .WV )@@G@@ SET TO RETURN Q TO ICODE @B@@@E ADD X4,2,I . XWW )@@G@@4=4 @C@@@E ADD A9,36,I . GET 36-Q @D@@@E WX )@@G@@ STORE A9,AGX0OF . SET SHIFT FACTOR @^@@@E GOTO GGTWY )@@G@@RET . @#@@@ECBSFL3 LABEL . @B@@@E ADD X4,1,I . XWZ )@@G@@4=3 @B@@@E IF A9,GE,0,I THEN,CBSFL4 . Q<0@^@@@E LOAXA )@@G@@DN A9,A9 . @B@@@E ADD X4,2,I . X4=5 @#@@@ECBSFL4XB )@@G@@ LABEL . @E@@@E LOADA A8,KKPW10-2 . POINT TO 10**(ABS(QXC )@@G@@)) @^@@@E ADD A8,A9 . @C@@@E ADD A8,A9 . XD )@@G@@ 2*Q IS OFFSET@ @@@E STORE A8,AGX0OF . @C@@@E GOTXE )@@G@@O GGTRET . ->RETURN @D@@@ECBSTRX LABEL . XF )@@G@@ FLOAT OPERATION @ @@@E LOADA A7,KK9999 . @ @@@E XG )@@G@@ STORE A7,AGX0OF . @^@@@E GOTO GGTRET . @[@@@E. @[@@@EXH )@@G@@. @[@@@E/. @^@@@E. ICODE FOR SIGN@[@@@E. @#@@@ECBSGFRXI )@@G@@ GLBL . @B@@@E GSHIN OPDLSC,AGRA1,AGRL1 . @^@@@E XJ )@@G@@ GLIT 1 . @^@@@E SSA A1,34 .@ @@@E GGETGR AXK )@@G@@GRL2,1 . @A@@@E GINST OPLA,AGRL2,AGRA1 . @^@@@E GFIXL )@@G@@N 'POP' .@#@@@ECBSGBR GLBL . @D@@@E GIFR CBSGB1,AGRL1 XM )@@G@@. IF RL1 IN REG? @ @@@E GGETGR AGRL2,1 . @B@@@E XN )@@G@@ GSHIN OPLSC,AGRL2,AGRL1 . @B@@@E GGOTO CBSGB2 . XO )@@G@@ MERGE @C@@@ECBSGB1 GLBL . RL1 IS IN REG@B@@@EXP )@@G@@ GSHIN OPLSC,AGRL1,AGRL1 'NO' . @ @@@E GSET AGRL2,AXQ )@@G@@GRL1 .@#@@@ECBSGB2 GLBL . @A@@@E GSHIN OPSSA,AGRL2,34,I .XR )@@G@@@^@@@E GFIN 'POP' .@[@@@E. @^@@@E. ICODES FOR ABSXS )@@G@@@[@@@E. @C@@@E GMODE 'M' . PACK ICODES TOGETHER @#@@@EXT )@@G@@CBABFR GLBL . @ @@@E GIFR CBABF2,AGRL1 . @ @@@E GGEXU )@@G@@TGR AGRL2,2 . @A@@@E GDBLE OPDLM,AGRL2,AGRL1 . @^@@@E XV )@@G@@ GFIN 'POP' @#@@@ECBABF2 GLBL . @C@@@E GDBLE OPDLM,AGRXW )@@G@@L1,AGRL1 'NO' . ABS @ @@@E GSET AGRL2,AGRL1 . @^@@@E XX )@@G@@ GFIN 'POP' @[@@@E. @#@@@ECBABBR GLBL @ @@@E GIFXY )@@G@@R CBABB2,AGRL1 . @^@@@E GGETGR AGRL2,1 @A@@@E GINST OPLXZ )@@G@@MA,AGRL2,AGRL1 @^@@@E GFIN 'POP' @#@@@ECBABB2 GLBL . YA )@@G@@@B@@@E GINST OPLMA,AGRL1,AGRL1 'NO' @ @@@E GSET AYB )@@G@@GRL2,AGRL1 .@E@@@E GFIN 'POP' . POP STACK AND RETURYC )@@G@@N @[@@@E. @F@@@E. ICODE FOR HBOYD )@@G@@UND,LBOUND & DIM @[@@@E. @#@@@ECBDIM GLBL . @E@@@E GINYE )@@G@@ST OPLA,AGRA3,AGRL1,U . DV OF ARGUMENT ARRAY@C@@@E GINST OPYF )@@G@@LA,AGRA2,AGPTX3 . ARG2 ->A2 @^@@@E GSUB 'BILTN' @^@@@E YG )@@G@@ GLITRG A9 . @^@@@E GGETGR AGRL2 @A@@@E GINST OPLYH )@@G@@A,AGRL2,AGRA3 . @^@@@E GFIN 'POP' @[@@@E. @D@@@E. YI )@@G@@ ICODE FOR MAX/MIN @[@@@E. @#@@@E YJ )@@G@@ GMODE 'M'@#@@@EBFFMIN GLBL @C@@@E GIFR BFFMX1,AGRL2 . YK )@@G@@ SET IN REG @^@@@E GLOAD AGRL2,2 @#@@@EBFFMX1 GLBL YL )@@G@@@C@@@E GDBLE OPDL,AGRA3,AGRL2 'NO' . DL A3,Y@C@@@E GFLYM )@@G@@OAT OPDFAN,AGRA3,AGRL1 'NO' . A3=Y-X@F@@@E GBON BFFMX5,IGPLUS .YN )@@G@@ SHOULD IT BE A 'JP' OR A 'JN'?@H@@@E GCJMP OPJN,AGRA3,AGPTYO )@@G@@X3 . GENERATE A 'JN' FOR THE 'MIN' FUNCTION @E@@@E GGOTO BFFYP )@@G@@MX6 . CONTINUE CODE GENERATION@#@@@EBFFMX5 GLBL . @H@@@EYQ )@@G@@ GCJMP OPJP,AGRA3,AGPTX3 . GENERATE A 'JP' FOR THE 'MAX' FUNCTIOYR )@@G@@N @#@@@EBFFMX6 GLBL . @D@@@E GDBLE OPDL,AGRL2,AGRL1 . SYS )@@G@@WITCH X AND Y @E@@@E GGOTO BFFMX2 . CONTINUE CODEYT )@@G@@ GENERATION @D@@@EBFBMIN GLBL . BINARY MAX AND MIN YU )@@G@@@ @@@E GIFR BFFMX3,AGRL2 @^@@@E GLOAD AGRL2,1 @#@@@EYV )@@G@@BFFMX3 GLBL @B@@@E GINST OPLA,AGRA3,AGRL2 'NO' . @B@@@EYW )@@G@@ GINST OPANA,AGRA3,AGRL1 'NO' . @F@@@E GBON BFFMX7,IGYX )@@G@@PLUS . SHOULD IT BE A 'JP' OR A 'JN'?@H@@@E GCJMP OPJN,AGRAYY )@@G@@3,AGPTX3 . GENERATE A 'JN' FOR THE 'MIN' FUNCTION @E@@@E GGOYZ )@@G@@TO BFFMX8 . CONTINUE CODE GENERATION@#@@@EBFFMX7 GLBL . ZA )@@G@@@H@@@E GCJMP OPJP,AGRA3,AGPTX3 . GENERATE A 'JP' FOR THE 'MAX' ZB )@@G@@FUNCTION @#@@@EBFFMX8 GLBL . @A@@@E GINST OPLA,AGRL2,AGRLZC )@@G@@1 . @D@@@EBFFMX2 GLBL . CLEAN UP EVERYTHING@ @@@EZD )@@G@@ GLABEL AGPTX3 . @F@@@E GAPPN BFMINMORE . SEE IF ANZE )@@G@@Y MORE MAX AND MIN INNARG @C@@@E GSET AGRL2,AGRL1 . MOVE ANZF )@@G@@S TO SLOT @#@@@EBFFMX4 GLBL . @^@@@E GFIN 'POP' . @H@@@EZG )@@G@@BFMINMORE GLBL . SET IF ANY MORE IZH )@@G@@N LST @ @@@E LOAD A3,DXGNAR . @ @@@E SUB A3,DCGSLTZI )@@G@@,I . @D@@@E IF A3,LE,DCGSLT,I THEN,BFMIN9 . --> DONE@ @@@EZJ )@@G@@ STORE A3,DXGNAR . @A@@@E SET DCGRPT,ON,DCGFLG . ZK )@@G@@@D@@@E SETL A4,5,I . IGNORE NEXT ICODE @#@@@EBFMIN8ZL )@@G@@ LABEL . @#@@@E GETC . @^@@@E LOOP A4,BFMIN8 @#@@@EZM )@@G@@ LJMP @#@@@EBFMIN9 LABEL. @C@@@E XGPOP . ZN )@@G@@ RESET STACK @B@@@E MOVE SGDAID+DCGSLT,SGDAID . ZO )@@G@@@#@@@E LJMP . @[@@@E. @E@@@E. ZP )@@G@@ REAL AND IMAG BIFS & PV'S@[@@@E. @#@@@E GMODE 'M'@#@@@EZQ )@@G@@CBIMAG GLBL @C@@@E GBON CBIMG1,SDRLCX .->COMPLEX ARG ZR )@@G@@@#@@@ECBREL GLBL @B@@@E GBOFF CBREL1,SDRLCX . ->REAL ZS )@@G@@@D@@@E GFREE AGIM1 . FREE IMAG PART @#@@@ECBREL1ZT )@@G@@ GLBL . @^@@@E GMOVE +2,1 . @^@@@E GFIN 'POP' . ZU )@@G@@@#@@@ECBIMG GLBL @ @@@E GBON CBIMG1,SDRLCX @C@@@E ZV )@@G@@ GSET AGIM1,AGDZRO . SET IMAG TO 0@#@@@ECBIMG1 GLBL . @^@@@EZW )@@G@@ GFREE AGRL1 . @ @@@E GSET AGRL1,AGIM1 . @^@@@E ZX )@@G@@ GGOTO CBREL1 . @[@@@E. @[@@@E. @[@@@E. @[@@@E. @#@G@EZY )@@G@@CBCPLX GLBL @C@G@E GSET AGIM2,AGRL1 . COMPLEX BIF ZZ )@@G@@@F@G@E GAPPN CBPLXA . SET IMAG RESULT, POP STACK AA )@@G@@@^@G@E GMOVE +2,1 . @^@G@E GFIN 'POP' . @#@@@GCBCPLFAB )@@G@@ GLBL . @D@@@G GIFR CBCP10,AGRL1 . IMAG PART IN REG? AC )@@G@@@ @@@G GGETGR AGXTMP,2 . @A@@@G GDBLE OPDL,AGXTMP,AAD )@@G@@GRL1 .@#@@@GCBCP10 GLBL . @E@@@G GSET AGIM2,AGXTMP . MAE )@@G@@OVE RESULT TO STACK @ @H@G GAPPN CBCPLXA . @ @@@H AF )@@G@@ GAPPN CBPLXA . @^@@@G GMOVE +2,1 . @^@@@G GFIAG )@@G@@N 'POP' .@[@@@G. @[@@@G. @#@@@GCBCPLB GLBL . @A@@@G AH )@@G@@ GIFR CBCP10,AGRL1 . @ @@@G GGETGR AGXTMP,1 . @A@@@GAI )@@G@@ GINST OPLA,AGXTMP,AGRL1 .@ @@@G GGOTO CBCP10 . AJ )@@G@@@#@@@ECBPLXA GLBL . @ @@@E USING SGDSCT,X7 . @H@@@E AK )@@G@@ SET SDRLCX,ON,SGDCLS+DCGSLT . SET COMPLEX RESULT AL )@@G@@@C@@@E XGPOP . POP STACK @#@@@E LJMAM )@@G@@P . @[@@@E. @[@@@E. @[@@@E. @C@@@ECBCJGF GLBL . AN )@@G@@ CONJG BIF @ @@@E GIFR CBCJ1,AGIM1 @C@@@E AO )@@G@@ GGETGR AGXTMP,2 . ALLOCATE REG @A@@@E GDBLE OPDLN,AGXAP )@@G@@TMP,AGIM1 . @ @@@E GSET AGIM1,AGXTMP @^@@@E GGOTO CBCAQ )@@G@@JGR . @#@@@ECBCJ1 GLBL @B@@@E GDBLE OPDLN,AGIM1,AGIM1 'NOAR )@@G@@' @^@@@E GGOTO CBCJGR . @#@@@ECBCJGB GLBL @C@@@E AS )@@G@@ GIFR CBCJ2,AGIM1 . BINARY CONJG @^@@@E GGETGR AGXTMP,1AT )@@G@@@A@@@E GINST OPLNA,AGXTMP,AGIM1 @ @@@E GSET AGIM1,AGXTAU )@@G@@MP @^@@@E GGOTO CBCJGR @#@@@ECBCJ2 GLBL @B@@@E AV )@@G@@ GINST OPLNA,AGIM1,AGIM1 'NO' @#@@@ECBCJGR GLBL @^@@@E AW )@@G@@ GMOVE +2,1 . @^@@@E GFIN 'POP' @[@@@E. @[@@@E. AX )@@G@@@[@@@E. @[@@@E. @B@@@E. ICODES FOR TRUNC, FLOOR AND CEIL AY )@@G@@@[@@@E. @[@@@E. @[@@@E. @ @@@E. FIXED BINARY ICODES AZ )@@G@@@[@@@E. @D@@@ECBXFLR GLBL . FIXED BIN+Q FLOOR BA )@@G@@@D@@@E GIFR CBXFL1,AGRL1 . PUT OP 1 IN REG @^@@@E BB )@@G@@ GLOAD AGRL1,1 .@#@@@ECBXFL1 GLBL . @H@@@E GINST OPLA,AGRABC )@@G@@3,AGRL1 'NO' . GET SIGN OF ARGUMENT @D@@@E GSHBD )@@G@@IN OPSSA,AGRA3,36,I . PROPAGATE SIGN @C@@@E GSHIN OPSSL,AGRBE )@@G@@A3,AGXR0 . SHIFT BY 36-Q@C@@@E GINST OPANA,AGRL1,AGRA3 . ADD Q 1BF )@@G@@'S @^@@@E GGOTO CBXTRN @[@@@E. @D@@@ECBXCEL GLBL . BG )@@G@@ FIXED BIN +Q CEIL @ @@@E GIFR CBXCL1,AGRL1 BH )@@G@@@^@@@E GLOAD AGRL1,1 @#@@@ECBXCL1 GLBL @B@@@E GINBI )@@G@@ST OPLNA,AGRA3,AGRL1 'NO' @D@@@E GSHIN OPSSA,AGRA3,36,I . BJ )@@G@@PROPAGATE SIGN @A@@@E GSHIN OPSSL,AGRA3,AGXR0 @A@@@E BK )@@G@@ GINST OPAA,AGRL1,AGRA3 . @[@@@E. @[@@@E. @D@@@ECBXTRN GLBBL )@@G@@L . FIXED BIN +Q TRUNC @ @@@E GIFR CBXTR1,AGBM )@@G@@RL1 @^@@@E GLOAD AGRL1,1 @#@@@ECBXTR1 GLBL @^@@@E BN )@@G@@ GAPPN CBXTR @A@@@E GSHIN OPSSA,AGRL1,AGXR0 . @F@@@ECBXFNPBO )@@G@@ GLBL . FIXED Q=0 FLOOR,CEIL & TRUNC @D@@@E BP )@@G@@ GSET AGRL2,AGRL1 . SET RESULT REG @^@@@E GFIN 'POBQ )@@G@@P' @[@@@E. @#@@@ECBXTR GLBL @E@@@E LOAD A3,DCGSV4BR )@@G@@+3 . GET Q FROM CALLING REG @ @@@E STORE A3,AGX0OF . BS )@@G@@@#@@@E LJMP @[@@@E. @[@@@E. @F@@@ECBXFLQ GLBL . BT )@@G@@ FIXED BIN -Q FLOOR,CEIL & TRUNC@ @@@E GIFR CBXBU )@@G@@FQ1,AGRL1 @^@@@E GLOAD AGRL1,1 @#@@@ECBXFQ1 GLBL @E@@@EBV )@@G@@ GSHIN OPLSSC,AGRL1,AGXR0 . WATCH FOR SIGN BITS @^@@@E BW )@@G@@ GGOTO CBXFNP . @[@@@E. @[@@@E. @D@@@E. FLOATING ARGUMEBX )@@G@@NTS TO FLOOR, CEIL AND TRUNC @[@@@E. @F@@@ECBXFDQ GLBL . BY )@@G@@ FIXED DEC -Q FLOOR,CEIL & TRUNC@E@@@E GBAL CDXLDR BZ )@@G@@. MAKE SURE IT IS IN REG @H@@@E GFLOAT OPDFM,AGRL1,AGCA )@@G@@XR0 . MPY BY 10**Q (Q<0) @A@@@E GGOTO CBXCB )@@G@@FNP . ->FINISH UP @[@@@E. @[@@@E. @D@@@ECBXFDP GLBL . CC )@@G@@ FIXED DEC +Q TRUNC @D@@@E GBAL CDXLDR . LCD )@@G@@OAD ARG INTO REG @D@@@E GFLOAT OPDFD,AGRL1,AGXR0 . SCALE BY 10*CE )@@G@@*Q @C@@@ECBXFTQ GLBL . FLOAT TRUNC @C@@@E CF )@@G@@ GBAL CDXLDR . LOAD ARG @#@@@ECBXFT1 GLBL . @H@@@ECG )@@G@@ GFLOAT OPDFA,AGRL1,AGXUNZ . TRUNCATE - ADD FUCH )@@G@@NNY 0 @C@@@E GGOTO CBXFNP . ->FINISH UP @[@@@E. CI )@@G@@@E@@@ECDXLDR GLBL . FLOAT LOAD INTO REGS @C@@@ECJ )@@G@@ GIFR CBXLD1,AGRL1 . -> ALREADY IN REG @^@@@E GLOAD AGRCK )@@G@@L1,2 @#@@@ECBXLD1 GLBL @#@@@E GRTRN . @[@@@E. @[@@@ECL )@@G@@. @[@@@E. @C@@@ECBXFLC GLBL . FLOAT CEIL CM )@@G@@@^@@@E GBAL CDXLDR . @E@@@E GINST OPTN,AGRX0,AGRL1 'NO'CN )@@G@@ . TEST SIGN OF NUMBER @C@@@E GFLOAT OPDFA,AGRL1,AGXR0 . ADD .9CO )@@G@@9999 @^@@@E GGOTO CBXFT1 . @[@@@E. @C@@@ECBXFLF GLBL . CP )@@G@@ FLOAT FLOOR @^@@@E GBAL CDXLDR . @A@@@E CQ )@@G@@ GINST OPTP,AGRX0,AGRL1 'NO'@C@@@E GFLOAT OPDFAN,AGRL1,AGXR0 .CR )@@G@@ ADD .99999@A@@@E GGOTO CBXFT1 . ->TRUNCATE @[@@@E. @[@@@ECS )@@G@@. @D@@@ECBXFFC GLBL . FIX DEC +Q CEIL @C@@@ECT )@@G@@ GBAL CDXLDR . LOAD ARG @B@@@E GDBLE OPDCU )@@G@@L,AGRA3,AGXR0 . 10**Q @#@@@E GLIT 1 @E@@@E DFAN A3,CV )@@G@@KKPW10-2-(IN 63,0,1,0) . 10**Q-1=9999999 @B@@@E GINST OPTN,AGRXCW )@@G@@0,AGRL1 'NO' . @D@@@E GFLOAT OPDFA,AGRL1,AGRA3 . ADD IF POS CX )@@G@@NUM @B@@@E GGOTO CBXFDP . -> TRUNCATE @[@@@E. @[@@@ECY )@@G@@. @D@@@ECBXFFF GLBL . FIXED DEC +Q FLOOR @C@@@ECZ )@@G@@ GBAL CDXLDR . LOAD ARG @A@@@E GDBLE OPDDA )@@G@@L,AGRA3,AGXR0 . @#@@@E GLIT 1 .@B@@@E DFAN A3,KKPW10DB )@@G@@-2-(IN 63,0,1,0) @A@@@E GINST OPTP,AGRX0,AGRL1 'NO'@E@@@E DC )@@G@@ GFLOAT OPDFAN,AGRL1,AGRA3 . SUB IF NUMBER NEG @C@@@E GGODD )@@G@@TO CBXFDP . ->FINISH UP @[@@@E. @C@@@E. DE )@@G@@ FIXED BIN MOD@[@@@E. @#@@@EBFMODB GLBL . @D@@@EDF )@@G@@ GIFR BFMOB1,AGRL2 . IS ARG1 IN REG? @D@@@E GLODG )@@G@@AD AGRL2,1 . GET IT INTO ONE @D@@@EBFMOB1 GLBL . DH )@@G@@ ARG1 NOW IN REG @D@@@E GIFR BFMOB5,AGRL1 . IDI )@@G@@S ARG2 IN REG? @D@@@E GINST OPTNZ,AGRX0,AGRL1 'NO' . SEE IFDJ )@@G@@ ZERO @C@@@E GJUMP AGLBL . JUMP AROUND @B@@@E DK )@@G@@ GGOTO BFMOB6 . MERGE @E@@@EBFMOB5 GLBL . DL )@@G@@ HERE AGRL1 IS IN REG @F@@@E GCJMP OPJZ,AGRL1,AGLBL 'NDM )@@G@@O' . LEAVE RESULT IF ZERO @E@@@EBFMOB6 GLBL . MDN )@@G@@ERGE HERE TO CONTINUE @D@@@E GSHIN OPDSA,AGRL2,36,I 'NO' . SDO )@@G@@IGN EXTEND @B@F@E GINST OPDI,AGRL2,AGRL1 . DIVIDE@C@@@F DP )@@G@@ GINST OPDI,AGRL2,AGRL1 'NO' . DIVIDE @F@@@E GSHIN OPLDSL,DQ )@@G@@AGRL2,36,I 'NO' . PUT BACK INTO ODD REG @F@@@F GCJMP OPJZ,AGDR )@@G@@RL2,AGLBL . TEST POS. DOESN'T HDLE NEG. 0 @B@@@F GINST OPTP,AGDS )@@G@@RX0,AGRL2 'NO' . @E@@@F GINST OPAMA,AGRL2,AGRL1 . GET POSITIVDT )@@G@@E RESULT @D@@@E GLABEL AGLBL . SET JUMP TO HERE DU )@@G@@@C@@@E GSET AGRL2+DCGSLT,AGRL2 . SET RESULT@D@@@E GAPDV )@@G@@PN BFMOB4 . GO POP OFF ARGS @D@@@E GFIN . DW )@@G@@ ALL DONE ICODE @E@@@EBFMOB4 GLBL . HDX )@@G@@ERE TO POP OFF TWO ARGS @A@@@E XGPOP 'SIZE',2*DCGSLT . @#@@@EDY )@@G@@ LJMP . @[@@@E. @F@@@E. FDZ )@@G@@LOAT OR FIXED DEC MOD BIF @[@@@E. @#@@@EBFMODF GLBL . @D@@@EEA )@@G@@ GIFR BFMOF1,AGRL2 . ARG ONE IN REG? @D@@@E GLOEB )@@G@@AD AGRL2,2 . GET IT INTO ONE @D@@@EBFMOF1 GLBL . EC )@@G@@ ARG ONE NOW IN REG @F@@@F GINST OPTNZ,AGRX0,AGRL1 'ED )@@G@@NO' . SEE IF DIVISOR ZERO @^@@@F GJUMP AGLBL .@F@@@F EE )@@G@@ GDBLE OPDL,AGRA1,AGRL2 'NO' . LOAD INTO SCRATCH REG @C@F@E EF )@@G@@ GIFR BFMOF2,AGRL1 . ARG 2 IN REG?@D@F@E GINST OPTNZ,AEG )@@G@@GRX0,AGRL1 'NO' . SEE IF ZERO @^@F@E GLIT 1 . @F@F@E EH )@@G@@ J $-$ . JUMP TO BR FILLED IN BELOW @ @F@E EI )@@G@@ GGOTO BFMOF3 . @F@F@EBFMOF2 GLBL . ARG 2 IEJ )@@G@@N REG - SEE IF ZERO @D@F@E GINST 071,AGRL1,AGRX0,016 'NO' EK )@@G@@. GEN DJZ @#@F@EBFMOF3 GLBL . @C@F@E GAPPN BFMOF4 . EL )@@G@@ FILL IN JUMP @F@F@E GDBLE OPDL,AGRA1,AGRL2 'NO' . LOAD INEM )@@G@@TO SCRATCH REG @C@@@E GFLOAT OPDFD,AGRA1,AGRL1 'NO' . DIVIDEEN )@@G@@@D@@@E GINST OPTP,AGRX0,AGRA1 'NO' . SEE IF POS @E@@@E EO )@@G@@ GLIT 1 . NEG HERE,HELP FLOOR FUNC @ @@@E DFAEP )@@G@@N A1,KK9999 . @D@@@E GFLOAT OPDFA,AGRA1,AGXUNZ 'NO' . TRUNCEQ )@@G@@ATE @F@F@E GFLOAT OPDFM,AGRA1,AGRL1 . GET FLOOR(ARG1/ARG2)*ARER )@@G@@G2 @G@@@F GFLOAT OPDFM,AGRA1,AGRL1 'NO' . GET FLOOR(ARG1/ARGES )@@G@@2)*ARG2 @D@@@E GFLOAT OPDFAN,AGRL2,AGRA1 'NO' . GET MOD ET )@@G@@@C@@@E GSET AGRL2+DCGSLT,AGRL2 . SET RESULT@D@@@F GCJEU )@@G@@MP OPJP,AGRL2,AGLBL . IS RESULT NEG. @F@@@F GINST OPTP,AGEV )@@G@@RX0,AGRL1 'NO' . DO DBLE ADD MAGN. @E@@@F GFLOAT OPDFAN,EW )@@G@@AGRL2,AGRL1 'NO' . GET POS. RESULT @B@@@F GINST OPTN,AGRX0,AGEX )@@G@@RL1 'NO' . @E@@@F GFLOAT OPDFA,AGRL2,AGRL1 . GET POS. RESULEY )@@G@@T @^@@@F GLABEL AGLBL .@C@@@E GAPPN BFMOB4 . EZ )@@G@@ POP STACK @#@@@E GFIN . @E@F@EBFMOF4 GLBL . FA )@@G@@ HERE TO FILL IN JUMPS @D@F@E GMARK A3 . FB )@@G@@ GET ADDR OF CODE @D@F@E SUB A3,1,I . POINT TFC )@@G@@O JUMP INST @E@F@E LOAD A4,W1U+8,A3 . POINT TO AROUND CODFD )@@G@@E @D@F@E STORE A4,W1H2,A3 . SET ADDR FOR JUMP @D@F@EFE )@@G@@ LJMP . RETURN TO ICODE @ @@@E/. CONFF )@@G@@STANTS NEEDED @[@@@E. @[@@@E. @^@@@EDCBCSM SFW 0 . FG )@@G@@@B@@@E +SGDEXP++SD0ART,SDDCBN,0,17 . @A@@@EDCBCLN SFW 0 . SFH )@@G@@TACK ELT FOR 35,0 @D@@@E +SGDEXP++SD0ART,SDDCBN,0,35 . WHY SGDEXFI )@@G@@P? @[@@@E. @ @@@E. WORDS FOR NONPL1 MSGS@[@@@E. @C@F@EFJ )@@G@@DCBRND INSERT 4,'RAN,'D ' . RAND USED @C@@@FDCBRND INSERT 4FK )@@G@@,'RAN','D ' . RAND USED @C@@@EERXGRN EQU 52 . NON STANDFL )@@G@@ARD PL1 USED@B@@@EEXERB1 EQU 51 . REAL PART USED@G@@@EEXROUNFM )@@G@@ EQU 0200 . ARG TO ROUND OUT OF BOUNDS. ONE USED @D@@@EFN )@@G@@ERRG08 EQU 41 . NON-CONSTANT. 10 USED @C@@@EERRG10 EQUFO )@@G@@ 42 . REAL PART USED @F@@@EERRG09 EQU 43 . FP )@@G@@ SMALL INTEGER NEEDED, NOT FOUND @D@@@EIGPLUS EQU 02000 . FQ )@@G@@ FLAG FOR MIN & MAX @F@@@EIGMPDV EQU 01000 . MULTIPLFR )@@G@@Y OR DIVIDE IN ROUND @E@@@EIGZERO EQU 01000 . FLAG FOFS )@@G@@R ZERO SHIFT COUNT@#@@@E CEND . @#@@@E END . ___@@EFT )@@G@@ GFLOAT OPDFA,AGRL1,AGRA3 . ADD IF POS NUM @B@@@E GGOFU )@@G@@TO CBXFDP . -> TRUNCAT*[S@@[*SDFF*@F@@@D 0)^@)CTJE[TELDC9CE))AC9A85^[]FV )@@G@@FC)E(IDDQC(METDE-T^[JC0)D([ELTD-[D1^@[@@@D 0)^@)@H@@@D 0)^@)EDPC(NE-DD9IFW )@@G@@ES)CTJD1#C(MD1DD1B^[OD[DES)ETCD9PD-^^[]C*)C-DEL CTOC(^^[OD8'@[@@@D 0)^@)FX )@@G@@@B@@@D 0)^@)^@)^@)^[HCDME1DD0)E0,^[UC(GDTJE9DE-U@E@@@D 0)^@)^@)^@)^[^C(KFY )@@G@@CDME-HC(IE))D9A^[#D9HE[PE- EK)ET#DD D1#C*)@C@@@D 0)^@)^@)^@)^[PD1DE1 ELNFZ )@@G@@DDOFC)D9A^[HCDMFDGCDIC))@E@@@D 0)^@)^@)^@)^[#D9GD- C9 ^[KCDMDS?^[HCDMFDGGA )@@G@@CDIC))AK0A84AK)^@)@[@@@D 0)^@)@M@@@D 0)^@)^@)^@)^[KC(MD(DETNDDJD0)E-J^[PGB )@@G@@ET ^[OD[ ET ^[GDDNE-DD1BES)CDIC))E-CC*)CTJD(KE(OC(M^[KELJC9MCDHES)E-CC(TGC )@@G@@@I@@@D 0)^@)EL E[MC(NC(IE))DDN^[BEL[D1OC(^^[PD1^C(M^[OD[ ^[AD9GD-JE9DD1BGD )@@G@@^[#D9IC-DE-DD9IES'@[@@@D 0)^@)@L@@@D 0)^@)^@)^@)^@1 0)E(ID-DD(DE- C))E(NGE )@@G@@C*)D([FC)CL ^[HCD^C*)D9A^[OD[ ^[KELJC9MCDHES)EL E[MC(NC(IE- C))CLT@M@@@DGF )@@G@@ 0)^@)E-CC(NC*)D-DETODDIC9N^[KELJE1DC- C))E-CCDO^[OD[ ^[ICDHC*)E[GE(H^[JGG )@@G@@EK)E(IDDQC(METDE-T^[JC0)D([ELTD-[D1^@J@@@D 0)^@)E[G 81^[#D9HE[DD- EK)EL GH )@@G@@D([DDIES)CDNETJCTDCDOC(^^[RDDOD@)E-CC(NC*)E[MD9BEL[D(N 0)^@)@[@@@D 0)^@)GI )@@G@@@K@@@D 0)^@)^@)^@)^@2 0)D(JC-DC1DCT[E-DD9IES)D([FC)CL ^[HCD^C*)E-J^[OD[ GJ )@@G@@^[GDDNE-DD1BES)E[MD9QDD^C(^BK)@[@@@D 0)^@)@M@@@D 0)^@)^@)^@)^@*CC(^[[D1TGK )@@G@@^[MC(NE(GE-DD1B^[KELJC9MCDH ))D9M^[MC(KD9ME)?^[KCDKC(M^[JEK)C-JCTPD( D1OGL )@@G@@CDODDJD0)^@)@M@@@D 0)^@)^@)^@)^[^C(NCTMDD]DDIC8)ETPCTC^[KELJC9MCDH^[RDDGGM )@@G@@D))CTGC([ELGFC)DDIC-DCT[E- ^[OD[[E))E-CC*)E[MD9BEL[D*)@J@@@D 0)^@)^@)^@)GN )@@G@@^[DES)CC)C-DCDGC(#E))D9A^[KD-PD*)D9M^[DES)C- ELDE1 C))C1MD9H^[KD-PD*?^[[GO )@@G@@D1^^@)@[@@@D 0)^@)@L@@@D 0)^@)^@)^@)^@*CK(^[[D-G^[NE(#D@)D(JC-DC1DCT[E-DGP )@@G@@D9IES?^[JE-CC(M^[OD[[D0)E-MDDQDD[D))CTJELMC(#E-DD9IES)@K@@@D 0)^@)^@)^@)GQ )@@G@@^[JC0)C(MELJELN^[DD0)E-CC*)ETJE(MCT ^[KELJC9MCDHES?^[ND[[D-G^[]C*)EL E[JGR )@@G@@ELOC(^^[[D1^@L@@@D 0)^@)^@)^@)^[[^[]ELDC(A^[^C(NCTMDDKE-DD9I^[JC0)E-CC*)GS )@@G@@C1 CDOE(MC*)CD^C- C))ETCCDGD))CL ^[NE(]D(DE-OC(^@F@@@D 0)^@)^@)^@)^[OD8)GT )@@G@@E-CC*)E(IDDQC(METDE-T^[JC0)D([ELTD-[D1^ ))CDIC))@[@@@D 0)^@)@L@@@D 0)^@)GU )@@G@@^@)^@)^@*CS(^[ID8)E[MD9BEL[D(N^[^C(MDDQC(^^[AELJD*)E-CC(NC*)D-DETODDIC9NGV )@@G@@^[ND[[D-G^[]C*)ETJD-^^@)@M@@@D 0)^@)^@)^@)^[RDDOD[JE(O^[RELDE-OC(I^[[E[KGW )@@G@@ELJE1[D))C1MD9H^[OD[ ^[PD1DE1 ELNDDOFC)D9A^[HCDMFDGCDIC)?^[[D1^^@)@[@@@DGX )@@G@@ 0)^@)@L@@@D 0)^@)^@)^@)^@*C)(^[#D9KDD ES)D9A^[OD[ ET ^[KELJC9MCDHES)D([GY )@@G@@FC)CL ^[OEL[D1ND(DE-OC(^^[OD8)D9OD[ EK)^@)@L@@@D 0)^@)^@)^@)^[GD9#CDODDJGZ )@@G@@D1N^[KELJE1DC- C))E-CCDO^[NE(#D@)E-MCDIETHDDOE-[D-N^[#D- CDMD-T^[DD1^DD#HA )@@G@@CDOC*)@L@@@D 0)^@)^@)^@)^[RD[ E-CC(M^[OD[ ^[KELJC9MCDHES)CDMC*)C(SCD#E))HB )@@G@@CTJE[DC(N^[JC0)E-CC*)E(IDDQC(METDE-T^[JC0)@J@@@D 0)^@)^@)^@)^[HCDMFDGCDIHC )@@G@@C))E[GE(H^[#D9HE[DD- EK)D9M^[[EL ^[HD9^DDADD#CDODDJD1N^[OD8)DDO 0)@[@@@DHD )@@G@@ 0)^@)@L@@@D 0)^@)^@)^@)^@3 0)E-CC(NC*)CTJD1^DDODDJD1N^[JD1GFC)CDKE[GFC)HE )@@G@@E-J^[OD[ ^[KD-PD*)CTJD(KDDGC(M^[DE-NC(GC0?@L@@@D 0)^@)CDIC))CDMC*)D1JE))HF )@@G@@D( CDIE))E-J^[[E[KD-T^[OD8)CDIFC)E[MD9BEL[D*)E9MDDOE- D0)E(NDDIC8)E[GE(HHG )@@G@@ 0)^@)@J@@@D 0)^@)E-CC*)E[PELKD9NC*)D9A^[OD[ ET ^[#D9IC-DE-DD9IES)DDN^[OHH )@@G@@D8)CDGD-JE8)CDIFC)E(NC(M^[OD8)@L@@@D 0)^@)C(SE[ ELDD( D1O^[RDDOD@)E-CC*)HI )@@G@@CTJD(KDDGC(M^[[ES)D-JD1B^[[ES)E-CC*)EL ETPD-ODDIC8)E[MD9^E(#E))^@)@M@@@DHJ )@@G@@ 0)^@)DDN^[ID9O^[ND9GC))CDIC))CDN^[GD9IC8)CDN^[DE))DDN^[FD1JE9I^[OD[[E))HK )@@G@@E-CC*)E[MD9^E(#E))C- E1 D-JE[ C))^@)@^@@@D 0)^@)C1MD9H^[KD-PD*,^@)@[@@@DHL )@@G@@ 0)^@)@[@@@D 0)^@)@[@@@D 0)^@)@[@@@D 0)^@)@[@@@D 0)^@)@[@@@D 8,^@)@E@@@CHM )@@G@@D(NC8%^@)^@)^[KELJCS)^@%AC) 0)^@)^@)D1PD(]C(M -RD9MC-N^@,^@)@C@@@CFLH K*HN )@@G@@D(NC8*AC?AC( C)C(LE*)A)% @= (KCDME)1 C) 0)@C@@@CFLS K*D(NC8*AC?AC( C)C(LHO )@@G@@E*)^@)D(NC8*AC?AK(^@,^@)@^@@@C^@)^@)^@)^@)^[ D1^^@,^@)@^@@@CE[OAK%^@)^@)HP )@@G@@^[KELJCS) 0)@B@@@CC1H^@)^@)^@)^[AD9MD*)^@6 )1AK?A0?AC2^@,^@)@M@@@CDS)^@)HQ )@@G@@^@)^@)^[^D8)^@)^[KE)2 @1 )1 C) ))C1H^@:FLS @2 LF *2 C?FLH @2 LF *2 C?FLSHR )@@G@@ @2 LF *1 C?FLH @2 LF *1 C) 0)@^@@@C^@)^@)^@)^@)^[ D1^^@,^@)@^@@@C^@)^@)HS )@@G@@^@)^@)^[[F[M^)) 0)@^@@@C^@)^@)^@)^@)^[^CTGELB^@,@ @@@CD(NC9N^@)^@)^[#ET HT )@@G@@CTO^@3^@,^@)@^@@@CD(NC81AC%^@)^[GCD]C(G^@,@A@@@C^@)^@)^@)^@)^@:E[[ELOAK?HU )@@G@@E[[ELOAC) 0)@^@@@CE[[ELOAC)^@)D-[CL D)) 0)@ @@@C^@)^@)^@)^@)^[HETB^@)^@0HV )@@G@@ )3^@,@B@@@C^@$ET\IL2JC-^[IH94^[(H(0H->H(>H14G(=^8) 0)@ @@@C^@)^@)^@)^@)HW )@@G@@^[HETB^@)^@1 )3^@,@A@@@C^@$DD,I1-H-(G))H90I-(H9,^[@C0)^8) 0)@ @D@C^@)^@)HX )@@G@@^@)^@)^[HETB^@)^@6 )2^@,@ @D@C^@)^@)^@)^@)^[HETB^@)^@7 )2^@,@ @G@D^@)^@)HY )@@G@@^@)^@)^[!IT$^@)^@8A8?AK)@ @G@D^@)^@)^@)^@)^[!IT$^@)^@8B@?AK)@ @@@D^@)^@)HZ )@@G@@^@)^@)^[!IT$^@)^@8BC?AK)@ @@@D^@)^@)^@)^@)^[!IT$^@)^@9A@?AK)@ @@@D^@)^@)IA )@@G@@^@)^@)^[!IT$^@)^@9AC?AK)@ @@@D^@)^@)^@)^@)^[!IT$^@)^@9AK?AK)@ @@@D^@)^@)IB )@@G@@^@)^@)^[!IT$^@)^@9AS?AK)@ @@@D^@)^@)^@)^@)^[!IT$^@)^@9A)?AK)@ @@@D^@)^@)IC )@@G@@^@)^@)^[!IT$^@)^@9A0?AK)@ @@@D^@)^@)^@)^@)^[!IT$^@)^@9A8?AK)@ @@@D^@)^@)ID )@@G@@^@)^@)^[!IT$^@)^@9B@?AK)@ @@@D^@)^@)^@)^@)^[!IT$^@)^@9BC?AK)@ @@@D^@)^@)IE )@@G@@^@)^@)^[!IT$^@)^@1A@0 )2@ @@@D^@)^@)^@)^@)^[!IT$^@)^@1A@1 )2@ @@@D^@)^@)IF )@@G@@^@)^@)^[!IT$^@)^@1A@2 )2@ @@@D^@)^@)^@)^@)^[!IT$^@)^@1A@3 )2@ @@@D^@)^@)IG )@@G@@^@)^@)^[!IT$^@)^@1A@4 )2@ @@@D^@)^@)^@)^@)^[HETB^@)^@1AC5 )2@A@D@C^@)^@)IH )@@G@@^@)^@)^[HETB^@)^@7A)?AK) 0)^@)@ @@@C^@$D1\I))GD3IT(G9,G(=^@$^@,^@)@ @@@CII )@@G@@^@)^@)^@)^@)^[HETB^@)^@2 )3^@,@A@@@C^@$E-\H8)H(-H19^[!G(3IT-G9>IS)^8) 0)IJ )@@G@@@ @@@C^@)^@)^@)^@)^[HETB^@)^@3 )2^@,@^@@@C^@$DC\D8)G(2IL\IK)^8) 0)@ @@@CIK )@@G@@^@)^@)^@)^@)^[HETB^@)^@4 )3^@,@A@@@C^@$E-\H8)H(5GT*^[\I(4I[5I))^8) 0)^@)IL )@@G@@@ @@@C^@)^@)^@)^@)^[HETB^@)^@5 )3^@,@B@@@C^@$ET9H(+H9?^[4GD+H->^[\I1>IL&IM )@@G@@H-\I8)^8) 0)@ @@@D^@)^@)^@)^@)^[!IT$^@)^@6 )4^@)@E@@@D^@$D1\I))I[2H90G(2IN )@@G@@^[0GD2G(,I-*G(3HD'G(=^[IL4G(=^@$@ @@@C^@)^@)^@)^@)^[HETB^@)^@8 )5^@,IP )@@G@@@C@@@C^@$A00^[+HD4IS)I(3G(=^[&H92^[,I(!GL>IK)^8) 0)^@)@ @@@C^@)^@)^@)^@)IQ )@@G@@^[HETB^@)^@9 )5^@,@C@@@C^@$AC7^[=HD$HD4IS)I(3G(=^[&H92^[,I(!GL>IK)^8) 0)IR )@@G@@@A@@@C^@)^@)^@)^@)^[HETB^@)^@1A@?A)) 0)^@)@B@@@C^@$D15H(+G(2^[\I(4^[\G0)IS )@@G@@IL-H1$G*)^8) 0)^@)@A@@@C^@)^@)^@)^@)^[HETB^@)^@1AC?AS) 0)^@)@ @@@C^@$D1-IT )@@G@@H(>^[4H9\^[?H9,G8)^8) 0)@A@@@C^@)^@)^@)^@)^[HETB^@)^@1AK?AK) 0)^@)@ @@@CIU )@@G@@^@$DD?H->G9-H))IT9H(+H9?^@$^@,@A@@@C^@)^@)^@)^@)^[HETB^@)^@1AS?A)) 0)^@)IV )@@G@@@D@@@C^@$CT\H(!G(,I))GD^[+H95IX )@@G@@H1=GD2JC)^8) 0)^@)@A@@@C^@)^@)^@)^@)^[HETB^@)^@1A*?A)) 0)^@)@D@@@C^@$ET4IY )@@G@@IL(H1$^[-GT2H93IS)H-(H1>^[+H95H1=GD2JC)^8) 0)^@)@A@@@C^@)^@)^@)^@)^[HETBIZ )@@G@@^@)^@1A0?AK) 0)^@)@A@@@C^@$D[-IT*I--GL?G*)H96G(2G1?H97^@$^@,@A@@@C^@)^@)JA )@@G@@^@)^@)^[HETB^@)^@1A8?AC) 0)^@)@A@@@C^@)^@)^@)^@)^[HETB^@)^@2A@?AC) 0)^@)JB )@@G@@@A@@@C^@)^@)^@)^@)^[HETB^@)^@2AC?AC) 0)^@)@#@@@C^@$D15H(+G(2^@$^@,@A@@@CJC )@@G@@^@)^@)^@)^@)^[HETB^@)^@1B@?AC) 0)^@)@A@@@C^@)^@)^@)^@)^[HETB^@)^@1BC?AC)JD )@@G@@ 0)^@)@^@@@C^@$C(8I[\H1>H14^@$^@,^@)@A@@@C^@)^@)^@)^@)^[HETB^@)^@2AS?AS)JE )@@G@@ 0)^@)@ @@@C^@$CT\H-5H(,^@1^[5IT>G))^8) 0)@A@@@C^@)^@)^@)^@)^[HETB^@)^@2JF )@@G@@A)?AK) 0)^@)@^@@@C^@$DD?H->G9-H)) K\^@$^@,@A@@@C^@)^@)^@)^@)^[HETB^@)^@2JG )@@G@@A*?AK) 0)^@)@B@@@C^@$DD,GT\H(0H->I->^[>J[0IL>IT3HD\H0)^8) 0)@A@@@C^@)^@)JH )@@G@@^@)^@)^[HETB^@)^@2A0?A)) 0)^@)@C@@@C^@$D((IT3HD,G8)GD2G95H(>H14 0)AC)I(3JI )@@G@@G(=^@$^@,^@)@A@@@C^@)^@)^@)^@)^[HETB^@)^@2A8?AK) 0)^@)@ @@@C^@$D((IT3HD,JJ )@@G@@G8)GT\H(!GC)^8) 0)@A@@@C^@)^@)^@)^@)^[HETB^@)^@2B@?AK) 0)^@)@^@@@C^@$C(!JK )@@G@@I[4JC)H-(IT4^@$^@,@A@@@C^@)^@)^@)^@)^[HETB^@)^@2BC?AS) 0)^@)@B@@@C^@$C(8JL )@@G@@I-2GC)H->G14^[0GD2G(,I-*G(3HD3^@$^@,@A@@@C^@)^@)^@)^@)^[HETB^@)^@3A@?AS)JM )@@G@@ 0)^@)@C@@@C^@$D((IT3HD,G8)IL(G9*I))I[-IL>H14H[>IT(IS)^8) 0)@A@@@C^@)^@)JN )@@G@@^@)^@)^[HETB^@)^@3AC?AK) 0)^@)@ @@@C^@$DD!I[2H90G(2^[,H94^@$^@,^@)@A@@@CJO )@@G@@^@)^@)^@)^@)^[HETB^@)^@3AK?AS) 0)^@)@A@@@C^@$D1>IT4HD,G8)I-\H8)G->G(0^@$JP )@@G@@^@,^@)@A@@@C^@)^@)^@)^@)^[HETB^@)^@3AS?AS) 0)^@)@C@@@C^@$D((IT3HD,G8)H->JQ )@@G@@G14^[0GD2G(,I-*G(3HD3^@$^@,^@)@A@@@C^@)^@)^@)^@)^[HETB^@)^@3A)?AK) 0)^@)JR )@@G@@@ @@@C^@$C(8I-2GC)GT\H(!GC)^8) 0)^@)@A@@@C^@)^@)^@)^@)^[HETB^@)^@3A*?AS)JS )@@G@@ 0)^@)@A@@@C^@$CC)G1\IL!GD4^[-IT3I(!G(=^@$^@,^@)@A@@@C^@)^@)^@)^@)^[HETBJT )@@G@@^@)^@3A0?AK) 0)^@)@ @@@C^@$E[2G(&HD8^[\IL=G(2^@$^@,^@)@A@@@C^@)^@)^@)^@)JU )@@G@@^[HETB^@)^@3A8?AS) 0)^@)@ @@@C^@$D95I))H9&^[3I[-GT>^@$^@,^@)@A@@@C^@)^@)JV )@@G@@^@)^@)^[HETB^@)^@3B@?AC) 0)^@)@#@@@C^@$CT*G(JD7H92G))^8) 0)^@)@A@@@CJX )@@G@@^@)^@)^@)^@)^[HETB^@)^@4A@?AK) 0)^@)@ @@@C^@$D((IT3HD,G8)H--GL>H))^8) 0)JY )@@G@@@A@@@C^@)^@)^@)^@)^[HETB^@)^@4AC?AK) 0)^@)@A@@@C^@$ET4GD4G(!G(,I))G->H->JZ )@@G@@I->G))^8) 0)@A@@@C^@)^@)^@)^@)^[HETB^@)^@4AK?A)) 0)^@)@F@@@C^@$E(,IL>GT\KA )@@G@@G9,HD'GD+H->^[>H->H(>H14^[(H0)IT4GD4G(!G(,I))^8) 0)^@)@A@@@C^@)^@)^@)^@)KB )@@G@@^[HETB^@)^@4AS?AC) 0)^@)@ @@@C^@$E(,IL>GDH((GT\H-\H0)^8) 0)^@)KD )@@G@@@A@@@C^@)^@)^@)^@)^[HETB^@)^@4A*?AK) 0)^@)@A@@@C^@$D((IT3HD,G8)G(8I[2G(3KE )@@G@@IT(H9,^@$^@,@A@@@C^@)^@)^@)^@)^[HETB^@)^@4A0?AK) 0)^@)@ @D@C^@$D((IT3HD,KF )@@G@@G8)I-*G(,^@$^@,^@)@ @@@D^@$D((IT3HD,G8)E-CC(I^@$^@,^@)@A@@@C^@)^@)^@)^@)KG )@@G@@^[HETB^@)^@4A8?AK) 0)^@)@A@@@C^@$D((IT3HD,G8)IT>H((GT\H-\H0)^8) 0)@A@F@CKH )@@G@@^@)^@)^@)^@)^[HETB^@)^@4B@?AC) 0)^@)@A@@@F^@)^@)^@)^@)^[HETB^@)^@4B@?AC3KI )@@G@@^@,^@)@#@F@C^@$D--GL>H))^8) 0)@M@@@F^@$C(IC))H--GL>H))G-\G(3^[,H94^[!GD4KJ )@@G@@GT*^[-H19^[?GD+G(?^[\H0)C-J ))CL C9DD0?^[\IK)E[MD9#^[3I--I->H(>H14^@$^@)KK )@@G@@@A@@@C^@)^@)^@)^@)^[HETB^@)^@4BC?AS) 0)^@)@A@D@C^@)^@)^@)^@)^[HETB^@)^@6KL )@@G@@AS?AS) 0)^@)@A@@@D^@)^@)^@)^@)^[HETB^@)^@6AS?A*) 0)^@)@ @D@C^@$E-*G(,^[\KM )@@G@@IK)G(?IT>^@$^@,^@)@D@@@D^@$DD!I[2H90G(2^[OD[ D0)H92^[ D-NC*)G->H->I->G))KN )@@G@@^8)^@)@A@@@C^@)^@)^@)^@)^[HETB^@)^@5A@?AC) 0)^@)@#@@@C^@$D90I-(H9,^@$^@,KO )@@G@@@A@@@C^@)^@)^@)^@)^[HETB^@)^@5AC?AC) 0)^@)@]@D@C^@$E-\^@$^@,@]@@@D^@$E-JKP )@@G@@^@$^@,@A@@@C^@)^@)^@)^@)^[HETB^@)^@5AK?AC) 0)^@)@]@D@C^@$CL9^@$^@,@]@@@DKQ )@@G@@^@$CLT^@$^@,@A@@@C^@)^@)^@)^@)^[HETB^@)^@5AS?AC) 0)^@)@#@D@C^@$E9*HD?G*)KR )@@G@@^8) 0)@#@@@D^@$E9CDDGC*)^8) 0)@A@@@C^@)^@)^@)^@)^[HETB^@)^@5A)?AK) 0)^@)KS )@@G@@@A@D@C^@$C-\^[3I[>GT(G1(GT-I-(H9,^@$^@,^@)@A@@@D^@$C-J^[3I[>GT(G1(GT-I-(KT )@@G@@H9,^@$^@,^@)@A@@@C^@)^@)^@)^@)^[HETB^@)^@5A*?AK) 0)^@)@^@@@C^@$D((IT3HD,KU )@@G@@G8)B*)^8) 0)@A@@@C^@)^@)^@)^@)^[HETB^@)^@5A0?AK) 0)^@)@A@@@C^@$D((IT3HD,KV )@@G@@G8)I1-IL(GD+H->^@$^@,^@)@A@@@C^@)^@)^@)^@)^[HETB^@)^@5A8?AK) 0)^@)@^@@@CKW )@@G@@^@$DC\D8)I[*IL-IT>^@$^@,@A@@@C^@)^@)^@)^@)^[HETB^@)^@5B@?AC) 0)^@)@#@D@CKX )@@G@@^@$C1\IL!GD4^@$^@,@#@@@D^@$C1JELHCDO^@$^@,@A@@@C^@)^@)^@)^@)^[HETB^@)^@5KY )@@G@@BC?AK) 0)^@)@ @D@C^@$D((IT3HD,G8)G(,G))^8) 0)^@)@ @@@D^@$D((IT3HD,G8)C(IKZ )@@G@@C))^8) 0)^@)@A@@@C^@)^@)^@)^@)^[HETB^@)^@6A@?A*) 0)^@)@A@D@C^@)^@)^@)^@)LA )@@G@@^[HETB^@)^@9A8?A*) 0)^@)@D@@@C^@$D1\I))JD>I))HD!I[?G(!G(,I->G))HD,^[KD-PLB )@@G@@D*)^8) 0)^@)@A@@@C^@)^@)^@)^@)^[HETB^@)^@6AC?A)) 0)^@)@B@@@C^@$C(,I-2JC)LC )@@G@@H1\I))HD,^[0IL\GT>G-5IL>^@$^@,@A@@@C^@)^@)^@)^@)^[HETB^@)^@6AK?AK) 0)^@)LD )@@G@@@B@@@C^@$D(5H-4HD0H->^[=G(GT:^[&H92^[,H9GT:^@$^@,^@)LG )@@G@@@B@@@D^@$D1J^[#D[ CTF^[&H92^[ID9#D[ CTF^@$^@,^@)@A@@@C^@)^@)^@)^@)^[HETBLH )@@G@@^@)^@6A0?AK) 0)^@)@A@D@C^@$DD!I[2H90G(2^[6GD2JD(H1$^@$^@,^@)@A@@@D^@$DD!LI )@@G@@I[2H90G(2^[QCDMFDDD1B^@$^@,^@)@A@@@C^@)^@)^@)^@)^[HETB^@)^@6A8?AS) 0)^@)LJ )@@G@@@C@@@C^@$D((IT3HD,G8)G(8I->IL,GD?^[0IL\GT>G-5IL>^@$^@,@A@@@C^@)^@)^@)^@)LK )@@G@@^[HETB^@)^@6B@?AS) 0)^@)@B@D@C^@$D((IT3HD,G8)I[2H9LP )@@G@@G1(J@)^8)^@)@A@@@C^@)^@)^@)^@)^[HETB^@)^@7AC?AK) 0)^@)@B@@@C^@$E[-IL-H(>LQ )@@G@@I->IK)GD4I-2HD+I(4G*)^8) 0)^@)@A@@@C^@)^@)^@)^@)^[HETB^@)^@7AK?AC) 0)^@)LR )@@G@@@#@D@C^@$C(,I-2JC)^8) 0)@#@@@D^@$C(IE-MFC)^8) 0)@A@@@C^@)^@)^@)^@)^[HETBLS )@@G@@^@)^@7AS?A)) 0)^@)@B@@@C^@$C(8I->IL,GD?^[,GD!G*)I-\H8)H-\H1$^@$^@,@A@@@DLT )@@G@@^@)^@)^@)^@)^[!IT$^@)^@7A)?AS) 0)^@)@D@@@D^@$E[2H9$IL-H*)HD,IT5G1&HDLU )@@G@@H14H-9^[H14G(=^@$@A@@@C^@)^@)^@)^@)^[HETB^@)^@7A*?AK) 0)^@)@ @@@CLV )@@G@@^@$DD!I[2H90G(2^[3GT-H->^@$^@,@A@@@C^@)^@)^@)^@)^[HETB^@)^@7A0?AK) 0)^@)LW )@@G@@@A@@@C^@$DD!I[2H90G(2^[0IL>GT(IT(H9,^@$^@,@A@@@C^@)^@)^@)^@)^[HETB^@)^@7LX )@@G@@A8?AS) 0)^@)@B@@@C^@$E-\H8)H(-H19^[(G->H14HD&HD>IL3^@$^@,^@)@A@@@C^@)^@)LY )@@G@@^@)^@)^[HETB^@)^@7B@?AS) 0)^@)@C@@@C^@$DD!I[2H90G(2^[3I-2I(^[?G(6LZ )@@G@@G(?^@$^@,^@)@A@F@C^@)^@)^@)^@)^[HETB^@)^@7BC?AC) 0)^@)@A@@@F^@)^@)^@)^@)MA )@@G@@^[HETB^@)^@7BC?B@) 0)^@)@^@F@C^@$CD4I-2HD+I(4G*)^8) 0)@L@@@F^@$CD4I-2HD+MB )@@G@@I(4G*)HD3^[(H1I1(H95IS)GD4I-2HD+I(4G(3^[&H92MC )@@G@@^[6GD2HD-GL?G*)^8)@A@@@C^@)^@)^@)^@)^[HETB^@)^@8A@?AC) 0)^@)@^@@@C^@$C-(MD )@@G@@H(>H13HD\H0)^8) 0)@A@@@C^@)^@)^@)^@)^[HETB^@)^@8AC?AC) 0)^@)@^@@@C^@$CT\ME )@@G@@H16G(2IT(H9,^@$^@,@A@@@C^@)^@)^@)^@)^[HETB^@)^@8AK?AC) 0)^@)@#@@@C^@$C1-MF )@@G@@GT4H92^@$^@,@A@@@C^@)^@)^@)^@)^[HETB^@)^@8AS?A)) 0)^@)@E@@@C^@$DD!I[2H90MG )@@G@@G(2^[-I-4IL(GL5I->^[(H0)IT4IL5GT4I(2G*)^8) 0)^@)@A@@@C^@)^@)^@)^@)^[HETBMH )@@G@@^@)^@8A)?AK) 0)^@)@^@@@C^@$C(8I-2GC) C)^8) 0)^@)@A@@@C^@)^@)^@)^@)^[HETBMI )@@G@@^@)^@8A*?AK) 0)^@)@A@D@C^@$DD!I[2H90G(2^[(H1(I-(GD?^8) 0)^@)@A@@@D^@$DD!MJ )@@G@@I[2H90G(2^[DD1DE-DCDG^@$^@,^@)@ @@@D^@)^@)^@)^@)^[HETB^@)^@8A0?A8)@G@@@DMK )@@G@@^@$DDIDDODD[D))G1\IK)GD2IL-JD3^[5IT>G))I9(I-*^[3GT-H--IK)I1-IL(GD+H->^@$ML )@@G@@@ @@@G^@)^@)^@)^@)^[HETB^@)^@8A8?A*)@E@@@G^@$D((IT3HD,G8)GD4I-2HD+I(4G(3MM )@@G@@^[(H0)EL E-PELIES)H-(IT4^@$^@)@ @@@G^@)^@)^@)^@)^[HETB^@)^@8B@?A0)@D@@@GMN )@@G@@^@$DD?H->G9-H))IT4GD4G(!G(,I))GD3^[-H0)D9I^[5H1(I))^8)@ @@@D^@)^@)^@)^@)MO )@@G@@^[!IT$^@)^@9A*?AK)@A@@@D^@$ET5GL3GT2HD0I->G))H--GL>H))^8)^@)@A@D@C^@)^@)MP )@@G@@^@)^@)^[HETB^@)^@8A0?A8) 0)^@)@E@D@C^@$F-P^[(IS)GD!GL(G95H95IS,^[JH1>^[-MQ )@@G@@I))F1O^[5IT>G))^8) 0)^@)@A@D@C^@)^@)^@)^@)^[HETB^@)^@8A8?A)) 0)^@)@A@D@CMR )@@G@@^@$^(PG-\G(3^[,H94^[2G(3H9?I1>^@$^@,@A@D@C^@)^@)^@)^@)^[HETB^@)^@8B@?AC)MS )@@G@@ 0)^@)@#@D@C^@$E-9I[>^@$^@,^@)@A@D@C^@)^@)^@)^@)^[HETB^@)^@8BC?AC) 0)^@)MT )@@G@@@^@D@C^@$D90G(2GD,G))^8) 0)^@)@A@D@C^@)^@)^@)^@)^[HETB^@)^@9A@?AS) 0)^@)MU )@@G@@@C@D@C^@$ET4IL5GT4I(2G(3^[,H94^[(H(0H->H(>H14G(=^@$^@,@A@D@C^@)^@)^@)^@)MV )@@G@@^[HETB^@)^@9AC?AK) 0)^@)@A@D@C^@)^@)^@)^@)^[HETB^@)^@9AS?AK) 0)^@)@ @D@CMW )@@G@@^@$CT\H(0HD?G(2 0)ET D([^@$^@,@A@D@C^@)^@)^@)^@)^[HETB^@)^@9AK?A)) 0)^@)MX )@@G@@@D@D@C^@$D15H(+G(2^[\G0)GD2G95H(>H14IS)HD,GT\IL2G(H(-^[4GD+H->^[\I1>IL&H-\I8)^8)MZ )@@G@@ 0)^@)@A@D@C^@)^@)^@)^@)^[HETB^@)^@9A*?AK) 0)^@)@A@D@C^@$ET5GL3GT2HD0I->NA )@@G@@G))H--GL>H))^8) 0)@A@D@C^@)^@)^@)^@)^[HETB^@)^@9A0?A*) 0)^@)@D@D@C^@$F-QNB )@@G@@I(3G(=^[&H92^[(H16GD?HD=^[>J[0IL>IT3HD\H0)^8) 0)@A@D@C^@)^@)^@)^@)^[HETBNC )@@G@@^@)^@9B@?A)) 0)^@)@A@D@C^@$F-PI(3G(=^[-IS)GD2IL-JC)^8) 0)^@)@A@D@C^@)^@)ND )@@G@@^@)^@)^[HETB^@)^@9BC?BC) 0)^@)@J@D@C^@$D1\I))I[2H90G(2^[,I(!GL>IK)H9&^[-NE )@@G@@IL$I(!G(,I-3^[\IK)IT5GL3GT2HD0I-3^[&H92^[WE*)^8) 0)^@)@A@D@C^@)^@)^@)^@)NF )@@G@@^[HETB^@)^@1A@0 )3^@,^@)@C@D@C^@$DD?H->G9-H))GT\H(0H->J@)GT\H(0GD2G*)^8)NG )@@G@@ 0)^@)@A@D@C^@)^@)^@)^@)^[HETB^@)^@1A@1 )3^@,^@)@C@D@C^@$CD$G92G($GD4G*)NH )@@G@@G(8I[2G(3IT(H9,^[>IL2H92^@$^@,@A@D@C^@)^@)^@)^@)^[HETB^@)^@1A@2 )7^@,^@)NI )@@G@@@J@D@C^@$CD2IL-JC)G-(H(>H13HD\H13^[,H94^[NJ )@@G@@J[0IL>IT3HD\H0)^8) 0)^@)@A@D@C^@)^@)^@)^@)^[HETB^@)^@1A@3 )6^@,^@)@F@D@CNK )@@G@@^@$CD3IT(G9,HD,G8)GD2IL-JC)I-\^[-^[3GT-H--IK)I1-IL(GD+H->^@$^@,^@)@A@D@CNL )@@G@@^@)^@)^@)^@)^[HETB^@)^@1A@4 )4^@,^@)@C@D@C^@$DD,I1-H-(G))I[-IL-H(>I->IK)NM )@@G@@G1\IK)F-P^@$^@,^@)@A@@@C^@)^@)^@)^@)^[HETB^@)^@1A@5 )2^@,^@)@ @@@C^@$D((NN )@@G@@IT3HD,G8)G(2IL\IK)^8) 0)@A@@@C^@)^@)^@)^@)^[HETB^@)^@1A@6 )2^@,^@)@A@@@CNO )@@G@@^@$DD,I1-H-(G))IT5GL3GT2HD0I))^8) 0)@A@@@C^@)^@)^@)^@)^[HETB^@)^@1A@7 )7NP )@@G@@^@,^@)@G@@@C^@$CL5HD?I-(H0)G15H1G))GD3^[0IT>I(=H8)I1-IL(NQ )@@G@@GD+H->^@$^@,@A@@@C^@)^@)^@)^@)^[HETB^@)^@1A@8 )5^@,^@)@B@D@C^@$F-PHD3^[,NR )@@G@@H94^[4JD0G*)I[\HD,I->IK)^8) 0)@B@@@D^@$F-PHD3^[,H94^[4JD0G*)E[JDDIE- EK)NS )@@G@@^8) 0)@A@@@C^@)^@)^@)^@)^[HETB^@)^@1A@9 )7^@,^@)@E@D@C^@$CT-H1,H94^[?G(-NT )@@G@@I1>^[-^[+G($HD,^[\IK)I[2H9<^[+H-\GT:^@$^@,@E@@@D^@$CT-H1,H94^[?G(-I1>^[-NU )@@G@@^[]C(BDDI^[\IK)E[MD9#^[+H-\GT:^@$^@,@A@@@C^@)^@)^@)^@)^[HETB^@)^@1AC0 )5NV )@@G@@^@,^@)@C@D@C^@$D--GL>H))H1\I))H9,^[(I->IL-I-(I1>^[=H8)^8) 0)@C@@@D^@$D--NW )@@G@@GL>H))H1\I))H9,^[(I->IL-I-(I1>^[^D8)^8) 0)@A@@@C^@)^@)^@)^@)^[HETB^@)^@1NX )@@G@@AC1 )3^@,^@)@A@D@C^@$CT-IT>^[0IL>G1(J@)G(2IL\IK)^8) 0)@A@@@D^@$CT[ET ^[0NY )@@G@@IL>G1(J@)G(2IL\IK)^8) 0)@ @@@D^@)^@)^@)^@)^[HETB^@)^@1AC2 )4@D@@@D^@$DD,NZ )@@G@@I1-H-(G))GT\H1=HD4HD\H0,^[ ELMD9M^[5IT>G))^8)^@)@ @@@D^@)^@)^@)^@)^[HETBOA )@@G@@^@)^@1AC3 )7@J@@@D^@$C-(IT-GL?G(=^[G))^8)@ @@@D^@)^@)^@)^@)^[HETB^@)^@1AC4 )5OC )@@G@@@F@@@D^@$DD,I1-H-(G))H92^[=I(0H-(GT-I->^[G1(J@)^8)^@)OD )@@G@@@A@@@F^@)^@)^@)^@)^[!IT$^@)^@1AK2 )1A@)^@)@K@@@F^@$DD4G(!IS)HD,^[DD1DE-DOE )@@G@@CDG^[?HD3I))G-\^[,H94^[!GD4GT*^[-I-4IL(GL5I->IS)H9&^[6GD2HD-GL?G*)^8)^@)OF )@@G@@@ @@@F^@)^@)^@)^@)^[!IT$^@)^@1AK3 )4@D@@@F^@$ETOCDODD#^[-I-4IL(GL5I->^[,OG )@@G@@H94^[0G(2H((I-4G(=^@$^@)@ @@@F^@)^@)^@)^@)^[!IT$^@)^@1AK4 )6@D@@@F^@$CT[OH )@@G@@ET ^[0IL>G1(J[>IS)H(-JC)H1\I))GL>^[?GD+G(?G(=^@$@^@@@CE[[ELOAK)^@)^[GCD]OI )@@G@@C(G^@,@ @D@C^@)^@)^@)^@)^[KE)2^@)^@5A0) 0)@ @F@D^@)^@)^@)^@)^[KE)2^@)^@5OJ )@@G@@B@) 0)@ @@@F^@)^@)^@)^@)^[KE)2^@)^@6AS) 0)@^@@@C^@)^@)^@)^@)^[ D1^^@,^@)OK )@@G@@___^@)@A@@@E^@)^@)^@)^@)*[S@@@*SDFF*@A@@@@CASETOOCTAL:PROC OPTIONS(MAIN)OL )@@G@@; @A@@@[DCL INFILEEOF BIT(1) INIT('1'B); @C@@@[ON ENDFILE(INFILE)OM )@@G@@ BEGIN; INFILEEOF='0'B; END; @G@@@@/* ON )@@G@@ */ @G@@@@/* THIS PROGRAM TRANSLATES FROO )@@G@@OM UPPER/LOWER CASE CHARECTER STRINGS */ @G@@@@/* INTO THE OCTAL OP )@@G@@CONSTANTS THAT THE ASSEMBLER CAN UNDERSTAND */ @G@@@@/* OQ )@@G@@ */ @G@@@@/* OR )@@G@@ */ @G@@@@/* TOOS )@@G@@ USE: */ @G@@@@OT )@@G@@/* GIVE THE NAME OF THE INPUT FILE,AND THE NAME OF THE OUTPUT */ OU )@@G@@@G@@@@/* ELEMENT (INCLUDE VERSION NAMES) WHEN PROMPTED BY THE PROGOV )@@G@@RAM*/ @G@@@@/* OW )@@G@@ */ @^@@@@MAKECARD:PROC(CHARS); @G@@@@ /* OX )@@G@@ */ @G@@@@ /* THIS PROC POY )@@G@@RINTS OUT THE OCTAL FOR THE 4 CHAR STRING PASSED */ @G@@@@ /* PASOZ )@@G@@SED IN TO IT */ @G@@@@ /*PA )@@G@@ */ @^@@@@PB )@@G@@ DCL CHARS CHAR(*), @ @@@@ J FIXED BIN(35,0); @F@@@@ PUPC )@@G@@T FILE(OUTFILE) EDIT('+0',(OCTAL(INDEX(COLLATE,SUBSTR(CHARS,@D@@@@ PD )@@G@@ J,1))-1) DO J=1 TO 4),' .','''',CHARS,'''') @B@@@@ (COLPE )@@G@@(10),6(A),COL(36),3(A));@^@@@@ END /* MAKECARD */; @@@@@@@@@@@@@@@@@@PF )@@G@@@B@@@@OCTAL:PROC(NUMBER) RETURNS (CHAR(3)); @G@@@@ /* PG )@@G@@ */ @G@@@@ /* THIS PH )@@G@@PROC RETURNS THE THREE CHARACTERS OCTAL STRING THAT */ @G@@@@ /*PI )@@G@@ REPERSENTS THE NUMBER PASSED IN TO IT */ @G@@@@PJ )@@G@@ /* */ PK )@@G@@@B@@@@ DCL (NUMBER,K) FIXED BINARY(35,0), @A@@@@ ANSWER CHPL )@@G@@AR(3) INIT('000');@B@@@@ DO K=3 TO 1 BY -1 WHILE(NUMBER>0); @F@@@@PM )@@G@@ SUBSTR(ANSWER,K,1)=SUBSTR('01234567',MOD(NUMBER,8)+1,1); @ @@@@PN )@@G@@ NUMBER=NUMBER/8; @A@@@@ END /* CONVERSION LOOP */; PO )@@G@@@^@@@@ RETURN(ANSWER); @^@@@@ END /* OCTAL */; @@@@@@@@@@@@PP )@@G@@@@@@@@@ @@@@DCL CARD CHAR(80) VARYING, @^@@@@ I FIXED BIN(35,0), PQ )@@G@@@^@@@@ INFILE FILE INPUT, @^@@@@ OUTFILE FILE OUTPUT,@#@@@@ PAPR )@@G@@SS CHAR(4); @G@@@@PUT SKIP EDIT('WHERE ASKED FOR AN ELEMENT NAME, BE SURPS )@@G@@E TO INCLUDE' !! @B@@@@' THE FILENAME AND KEYS AS NEEDED')(A); @H@@@@PT )@@G@@PUT SKIP(2) EDIT('WHAT IS THE ELEMENT THAT THE INPUT IS TO COME FROM?')(PU )@@G@@A); @]@@@@PUT SKIP; @ @@@@GET EDIT(CARD)(COL(1),A(80)); @#@@@@CARD=TPV )@@G@@RIM(CARD); @A@@@@OPEN FILE(INFILE) TITLE(CARD) INPUT;@H@@@@PUT SKIP EDIPW )@@G@@T('WHAT ELEMENT DO YOU WANT THE ASSEMBLED RELOCATABLE IN?')(A); @]@@@@PX )@@G@@PUT SKIP; @ @@@@GET EDIT(CARD)(COL(1),A(80)); @H@@@@CARD=TRIM(REVERSE(PY )@@G@@TRIM(REVERSE(CARD)))); /* REMOVE BLANKS FROM ENDS OF CARD */@A@@@@OPEN FPZ )@@G@@ILE(OUTFILE) TITLE('O$U$T$.');@H@@@@PUT FILE(OUTFILE) EDIT('@SUSPEND','@QA )@@G@@HDG,P ***** '!! AFTER(CARD,'.')!!' *****',@A@@@@'@ASM,IL X,' !! CARD)(COQB )@@G@@L(1),A); @G@@@@GET FILE(INFILE) EDIT(CARD)(COL(1),A(80)); /* INITIALQC )@@G@@IZE FOR ENDFILE*/ @ @[@@DO WHILE(^ENDFILE(INFILE)); @^@@@[DO WHILE(INFQD )@@G@@ILEEOF); @G@@@@ /* IF THE CARD DOESN'T HAVE A QUOTE ON IT THEN JUSQE )@@G@@T PASS */ @G@@@@ /* IT ALONG QF )@@G@@ */ @ @@@@ IF INDEX(CARD,'''')=0 THEN@C@@@@ QG )@@G@@ PUT FILE(OUTFILE) EDIT(CARD)(COL(1),A);@#@@@@ ELSE @G@@@@QH )@@G@@ /* IF IT DOES HAVE A QUOTE ON IT THEN PRINT IT AS A COMMENT */ QI )@@G@@@G@@@@ /* AND BREAK IT UP INTO 4 CHARACTER GROUPS, CONVERT THE QJ )@@G@@ */ @G@@@@ /* GROUPS INTO THEIR OCTAL REPRESENTATIONS,AND QK )@@G@@ */ @G@@@@ /* PRINT THEM INTO THE OUTPUT FILE QL )@@G@@ */ @G@@@@ /* QM )@@G@@ */ @G@@@@ /* I HOPE THAT NONE OF THE SQN )@@G@@TRINGS START WITH "' " */ @G@@@@ /* QO )@@G@@ */ @#@@@@ DO; @F@@@@ QP )@@G@@ PUT FILE(OUTFILE) EDIT('.',CARD)(COL(1),A,A); @G@@@@ QQ )@@G@@ DO I=INDEX(CARD,'''')+1 TO INDEX(CARD,''' ')-1 BY 4; @F@@@@QR )@@G@@ PASS=TRANSLATE(SUBSTR(CARD,I,4),' ','''');@C@@@@QS )@@G@@ CALL MAKECARD(PASS); @D@@@@ QT )@@G@@ END /* LOOP THRU STRING ON CARD */;@C@@@@ END /* DO TO EXTQU )@@G@@END THE ELSE */; @G@@@@ GET FILE(INFILE) EDIT(CARD)(COL(1),A(80)); /QV )@@G@@*MOVE ON TO NEXT CARD*/ @^@@@@END /* ENDFILE LOOP */; @C@@@@PUT FILE(OUTQW )@@G@@FILE) EDIT('@RESUME,H')(COL(1),A); @^@@@@CLOSE FILE(OUTFILE); @#@@@@QX )@@G@@PUT SKIP EDIT( @G@@@@'THE FILE ''O$U$T$.'' MAY BE ''@ADDED'' TO ASSEMQY )@@G@@BLE YOUR ELEMENT,', @F@@@@'AND CONTAINS ''@SUSPEND'' AND ''@RESUME,HQZ )@@G@@'' CARDS!')(A,SKIP); @^@@@@END /* CASETOOCTAL */; ___ /* CASETOOCTALRA )@@G@@*[S@@@*SDFF*@C@@@N. COPYRIGHT 1975 BY UNIVERSITY OF MARYLAND @[@@@NRB )@@G@@. @D@@@N. QUESTIONS CONCERNING THIS SHOULD BE DIRECTED TO: @[@@@NRC )@@G@@. @ @@@N. MARVIN V. ZELKOWITZ @B@@@N. DEPARTMENT OF CRD )@@G@@OMPUTER SCIENCE @A@@@N. UNIVERSITY OF MARYLAND @B@@@N. RE )@@G@@ COLLEGE PARK, MARYLAND 20742 @[@@@N. @G@@@N. PERMISSIORF )@@G@@N TO USE THESE LISTINGS AND THE COMPUTER PROGRAMS THEY@E@@@N. REPRESENRG )@@G@@T IS GRANTED UNDER THE FOLLOWING CONDITIONS: @[@@@N. @G@@@N. RH )@@G@@ 1. UNLIMITED USE MAY BE MADE OF THE PROGRAMS REPRESENTED BY @G@@@NRI )@@G@@. THESE LISTINGS PROVIDED THAT THE NAME PLUM OR UNIVERSITY OF MARYLANDRJ )@@G@@@E@@@N. PL/1 COMPILER REMAINS ASSOCIATED WITH THESE PROGRAMS. @[@@@NRK )@@G@@. @F@@@N. 2. MODIFICATIONS MAY BE MADE TO THE LISTINGS PROVIDRL )@@G@@ED: @[@@@N. @G@@@N. (A) ANY RESULTING PROGRAM, OR REPORT, PRM )@@G@@APER OR DOCUMENTATION @G@@@N. DESCRIBING SUCH PROGRAM WILL CLEARN )@@G@@RLY INDICATE THAT THE PROGRAM @E@@@N. IS A DIALECT OF PLUM OR IS RO )@@G@@DERIVED FROM PLUM, AND @[@@@N. @G@@@N. (B) ALL SUCH MODIFICARP )@@G@@TIONS, OTHER THAN TRIVIAL CORRECTIONS @F@@@N. OF ERRORS IN THRQ )@@G@@E SOURCE PROGRAMS, SHALL BE REPORTED AND @G@@@N. A BRIEF DESCRIPRR )@@G@@TION OF THE FEATURE ADDED SHALL BE SUBMITTED @C@@@N. TO THE UNRS )@@G@@IVERSITY OF MARYLAND, AND @[@@@N. @F@@@N. (C) NO PROGRAMSRT )@@G@@ DERIVED FROM THESE LISTINGS SHALL BE SOLD@G@@@N. WITHOUT WRITTENRU )@@G@@ APPROVAL FROM THE UNIVERSITY OF MARYLAND, AND @[@@@N. @F@@@N. RV )@@G@@ (D) COPIES OF THESE PROGRAMS MAY BE TRANSMITTED TO OTHER @G@@@N. RW )@@G@@ LOCATIONS PROVIDED THAT SUCH TRANSMITTALS CLEARLY INDICATE @G@@@NRX )@@G@@. WHETHER THE PROGRAMS ARE EXACT COPIES OF THE UNIVERSITY OF RY )@@G@@@E@@@N. MARYLAND PLUM COMPILER OR ARE MODIFICATIONS TO IT. @[@@@NRZ )@@G@@. @G@@@N. 3. THESE CONDITIONS ONLY APPLY TO THE PLUM COMPILERSA )@@G@@ ITSELF, @F@@@N. AND ARE NOT MEANT TO APPLY TO ANY PROGRAM WRITTEN SB )@@G@@USING PLUM. @E@@@N. THE PURPOSE OF THESE CONDITIONS IS TO ALLOW ANY USSC )@@G@@ER TO @F@@@N. EXPERIMENT WITH THE COMPILER AS LONG AS THE RESULTING PRSD )@@G@@ODUCT @G@@@N. IS NOT SOLD AND AS LONG AS IT IS KNOWN THAT THE PRODUCT SE )@@G@@DEVELOPED @#@@@N. FROM PLUM. @[@@@N. @[@@@N. @[@@@N. SF )@@G@@@[@@@N. @[@@@N. @[@@@N/. @#@@@M AXR$ . @#@@@M SG )@@G@@ DCLRG . @C@@@M UNLIST . TURN OFF LISTING @#@@@MSH )@@G@@@ADD,P PLTVDS @#@@@M. @ADD,P PLCGST @#@@@M. @ADD,P PLDSAW @#@@@MSI )@@G@@ LIST . @#@@@M PLWORD . @#@@@M. PLAC . @#@@@MSJ )@@G@@. PLCGD .@#@@@M. PLSD . @#@@@M. PLIG . @D@@@MSK )@@G@@. PLAR . ESTABLISH ACTIVATION RECORD DSECTS @#@@@M CENSL )@@G@@D . @^@@@M/XGCG CSECT 3 . @F@N@MDXGXBS EQU ADDIT+7+FH2 SM )@@G@@ . $ DDGDOSAV + 6 * 4 = DXGXBASE @]@@@M. **TABLES @ @@@M . SN )@@G@@ OPERATOR TABLE @F@@@M. USED BY XGEN TO BRANCH TO APPROPRIATE TABLE INSO )@@G@@ CGOA OR CGOS @A@@@M. WHEN OPERATOR IS TO BE PROCESSED @#@@@MXGTBL1SP )@@G@@* LABEL . @C@@@MFILL(1) SAC EXORB,XGORTB . BIT STR. OR @C@@@MSQ )@@G@@FILL(1) SAC EXANDB,XGANTB . BIT STR. AND @[@@@M. @F@@@M. SR )@@G@@ THE FOLLOWING ARE FOR COMPARES THAT PRODUCE BIT STRINGS@E@@@M. SS )@@G@@ THE FIRST HALF WORD IS THE OP CODE FOR THE @B@@@M. ST )@@G@@ PROPER TEST INSTRUCTION @[@@@M. @D@@@MFILL(1) SAC 0600000,XGSU )@@G@@CMBA . GE >= CODE FOR TP @D@@@MFILL(1) SAC 0610000,XGCMAB . GT SV )@@G@@> CODE FOR TN @D@@@MFILL(1) SAC 0600000,XGCMAB . NG \> CODE FORSW )@@G@@ TP @D@@@MFILL(1) SAC 0510000,XGCMAB . NE \= CODE FOR TNZ @D@@@MSX )@@G@@FILL(1) SAC 0610000,XGCMBA . LT < CODE FOR TN @D@@@MFILL(1) SAC SY )@@G@@ 0600000,XGCMBA . NL \< CODE FOR TP @D@@@MFILL(1) SAC 0600000,XGSZ )@@G@@CMAB . LE <= CODE FOR TP @D@@@MFILL(1) SAC 0500000,XGCMAB . EQ TA )@@G@@ = CODE FOR TZ @D@@@MFILL(1) SAC EXCONC,XGCATT . !! CONCATENATIOTB )@@G@@N @C@@@MFILL(1) SAC 000000,XGBPLT . + BINARY PLUS @C@@@MFILL(1TC )@@G@@) SAC 000000,XGBMNT . - BINARY MINUS @D@@@MFILL(1) SAC RCFLTM,XGMTD )@@G@@LTB . * MULTIPLICATION @C@@@MFILL(1) SAC RCFLTD,XGDVTB . / DTE )@@G@@IVISION @C@N@MFILL(1) SAC EXNOT,XGNOTT . (UNARY) NOT @D@N@MTF )@@G@@FILL(1) SAC 000000,XGEXPN . ** EXPONENTIAIION @C@N@MFILL(1) SAC TG )@@G@@ 000000,XGUPLT . + UNARY PLUS @C@N@MFILL(1) SAC 000000,XGUMNT TH )@@G@@. - UNARY MINUS @D@@@NFILL(1) SAC 000000,XGEXPN . ** EXPONENTIAIITI )@@G@@ON @[@@@M. @E@@@M. THE FOLLOWING ARE ONLY SEEN ON AN IF-THTJ )@@G@@EN-ELSE @G@@@M. TYPE OF COMPARE IF THE EXPR IS SIMPLYTK )@@G@@ A RELATION TEST @[@@@M. @G@@@M. THE FIRST QUARTER WTL )@@G@@ORD IS THE J-FIELD OF THE JUMP INST @G@@@M. THAT THE DO WTM )@@G@@ITH SPECS USES...IT IS THE JUMP ON TRUE @D@@@M. TO THE TN )@@G@@START OF THE USER'S DO GROUP @[@@@M. @F@@@M. THE SECTO )@@G@@OND QUATER WORD IS THE J-FIELD OF THE JUMP@F@@@M. INST THTP )@@G@@AT THE IF TEST GENERATES...IT IS THE JUMP @D@@@M. ON FALSTQ )@@G@@E THAT IS GENERATED HERE... @[@@@M. @F@@@M. IN BOTHTR )@@G@@ CASES THE PROBLEMS WITH ZEROS ARE TAKEN @F@@@M. OUT BY TS )@@G@@CHANGEING THE ORDER OF THE SUBTRACTION @[@@@M. @D@@@MFILL(1) SAC TT )@@G@@ 002003,XGRCBA . GE >= CODE FOR JN @D@@@MFILL(1) SAC 003002,XGRTU )@@G@@CAB . GT > CODE FOR JP @D@@@MFILL(1) SAC 002003,XGRCAB . NG \TV )@@G@@> CODE FOR JN @D@@@MFILL(1) SAC 001000,XGRCAB . NE \= CODE FOR TW )@@G@@JZ @D@@@MFILL(1) SAC 003002,XGRCBA . LT < CODE FOR JP @D@@@MTX )@@G@@FILL(1) SAC 002003,XGRCBA . NL \< CODE FOR JN @D@@@MFILL(1) SAC TY )@@G@@ 002003,XGRCAB . LE <= CODE FOR JN @D@@@MFILL(1) SAC 000001,XGRTZ )@@G@@CAB . EQ = CODE FOR JNZ @E@O@NFILL(1) SAC 000000,000000 . PUA )@@G@@OINTER NOT FILLED IN NOW@B@@@OFILL(1) SAC 000000,XGRPTR . POINTERUB )@@G@@@C@@@NFILL(1) SAC EXNOT,XGNOTT . (UNARY) NOT @C@@@NFILL(1) SAC UC )@@G@@ 000000,XGUPLT . + UNARY PLUS @C@@@NFILL(1) SAC 000000,XGUMNT UD )@@G@@. - UNARY MINUS @[@@@M. @A@@@M/ . BUILTIN FUNCTION TABLE UE )@@G@@@[@@@M. @A@@@M. H1= EXECUTION ROUTINE @B@@@M. H2=UF )@@G@@ CODE GENERATION ACTION TABLE@[@@@M. @[@@@M. @#@@@MXGTBL2* LABEUG )@@G@@L . @E@@@MFILL(1) SAC 000000,FGABST . BIF ABS(X) ABSOLUTE VALUE UH )@@G@@@D@@@MFILL(1) SAC 000000,FGMAXT . BIF MAX(X,Y) MAXIMUM@D@@@MFILL(1UI )@@G@@) SAC 000000,FGMINT . BIF MIN(X,Y) MINIMUM@D@N@MFILL(1) SAC BFMOUJ )@@G@@DT,FGMODT . BIF MOD(X,Y) X MOD Y @D@@@NFILL(1) SAC 000000,FGMODT UK )@@G@@. BIF MOD(X,Y) X MOD Y @D@@@MFILL(1) SAC 000000,FGSIGN . BIF SIGN(UL )@@G@@X) SIGN OF X@D@@@MFILL(1) SAC 000000,FGFLRT . BIF FLOOR(X) FLOOR UM )@@G@@@D@@@MFILL(1) SAC 000000,FGCEIL . BIF CEIL(X) CEILING@D@@@MFILL(1UN )@@G@@) SAC 000000,FGROUN . BIF ROUND(X) ROUND @E@@@MFILL(1) SAC 0000UO )@@G@@00,FGTRUN . BIF TRUNC(X) TRUNCATE @E@@@MFILL(1) SAC 000000,FGCUP )@@G@@PLE . BIF COMPLEX(X,Y) COMPLEX @E@@@MFILL(1) SAC 000000,FGCONJ UQ )@@G@@. BIF CONJG(X) CONJUGATE @E@@@MFILL(1) SAC 000000,FGIMAG . BIF UR )@@G@@IMAG(X) IMAGINARY @D@@@MFILL(1) SAC 000000,FGREAL . BIF REAL(XUS )@@G@@) REAL @D@@@MFILL(1) SAC BFEXPT,FGEXPT . BIF EXP(X) E ** X UT )@@G@@@E@@@MFILL(1) SAC BFLOGT,FGLOGT . BIF LOG(X) LOG BASE E @E@@@MUU )@@G@@FILL(1) SAC BFLOG1,FGLOG1 . BIF LOG10(X) LOG BASE 10 @E@@@MFILL(1UV )@@G@@) SAC BFLOG2,FGLOG2 . BIF LOG2(X) LOG BASE 2 @F@@@MFILL(1) SAC UW )@@G@@ BFATND,FGATND . BIF ATAND(X) ARC TAN (DEGREES) @D@@@MFILL(1) SAC UX )@@G@@ BFATAN,FGATAN . BIF ATAN(X) ARC TAN@F@@@MFILL(1) SAC BFTAND,FGTUY )@@G@@AND . BIF TAND(X) TANGENT (DEGREES) @D@@@MFILL(1) SAC BFTANT,FGTUZ )@@G@@ANT . BIF TAN(X) TANGENT@D@@@MFILL(1) SAC 000000,XGBADD . BIF VA )@@G@@ADD(X,Y,P,Q) ADD @D@@@MFILL(1) SAC BFAFTR,FGAFTR . BIF AFTER(X,Y) VB )@@G@@AFTER @E@@@MFILL(1) SAC BFSIND,FGSIND . BIF SIND(X) SIN (DEGREES)VC )@@G@@@D@@@MFILL(1) SAC BFSINT,FGSINT . BIF SIN(X) SIN @E@@@MFILL(1VD )@@G@@) SAC BFBFOR,FGBFOR . BIF BEFORE(X,Y) BEFORE @F@@@MFILL(1) SAC VE )@@G@@ BFCOSD,FGCOSD . BIF COSD(X) COSINE (DEGREES) @D@@@MFILL(1) SAC VF )@@G@@ BFCOST,FGCOST . BIF COS(X) COSINE @D@@@MFILL(1) SAC BFBOOL,FGBVG )@@G@@OOL . BIF BOOL(X,Y,Z) BOOL @F@@@MFILL(1) SAC BFCLAT,FGCLAT . BIF VH )@@G@@COLLATE COLLATING SEQUENCE@F@@@MFILL(1) SAC BFCOPY,FGCOPY . BIF VI )@@G@@COPY(X,P) COPY (REPEAT) @E@@@MFILL(1) SAC BFSQRT,FGSQRT . BIF VJ )@@G@@SQRT(X) SQUARE ROOT @C@@@MFILL(1) SAC BFSBPV,FGSBPV . PSEUDOVAR VK )@@G@@SUBSTR@D@@@MFILL(1) SAC BFINDX,FGINDX . BIF INDEX(X,Y) INDEX@D@@@MVL )@@G@@FILL(1) SAC BFLNTH,FGLNTH . BIF LENGTH(X) LENGTH@D@@@MFILL(1) SAC VM )@@G@@ BFHIGH,FGHIGH . HIGH(N) HIGH @D@@@MFILL(1) SAC BFLOWT,FGLVN )@@G@@OWT . LOW (N) LOW @D@@@MFILL(1) SAC BFDCAT,FGDCAT . DECAVO )@@G@@T(X,Y,Z) DECAT @E@@@MFILL(1) SAC BFLBND,FGLBND . LBOUND(A,N) VP )@@G@@LOWER BOUND @F@@@MFILL(1) SAC BFHBND,FGHBND . BIF HBOUND(A,N) UPPEVQ )@@G@@R BOUND @E@@@MFILL(1) SAC BFDIMT,FGDIMT . BIF DIM DIMENSVR )@@G@@ION @D@@@MFILL(1) SAC BFDATE,FGDATE . BIF DATE DATE @D@@@MVS )@@G@@FILL(1) SAC BFTIME,FGTIME . BIF TIME TIME @B@@@MFILL(1) SAC VT )@@G@@ BFBINT,FGBINT . BIF BINARY@B@@@MFILL(1) SAC BFBITT,FGBITT . BIF VU )@@G@@BIT @B@@@MFILL(1) SAC BFCHAR,FGCHAR . BIF CHAR @C@@@MFILL(1) SAC VV )@@G@@ BFDECT,FGDECT . BIF DECIMAL @B@@@MFILL(1) SAC BFFIXD,FGFIXD VW )@@G@@. BIF FIXED @B@@@MFILL(1) SAC BFFLTT,FGFLTT . BIF FLOAT @C@@@MFILL(1VX )@@G@@) SAC BFPREC,FGPREC . BIF PRECISION @F@@@MFILL(1) SAC BFSBST,FGSVY )@@G@@BST . BIF SUBSTR(X,Y[,Z]) SUBSTRING @C@@@MFILL(1) SAC 000000,FGRVZ )@@G@@LPV . PSEUDOVAR REAL @C@@@MFILL(1) SAC 000000,FGIMPV . PSEUDOVAR WA )@@G@@IMAG @D@N@MFILL(1) SAC BFPNPV,FGPNPV . PSEUDOVAR PAGENO. @D@@@NWB )@@G@@FILL(1) SAC 000000,FGPNPV . PSEUDOVAR PAGENO. @C@@@MFILL(1) SAC WC )@@G@@ BFTRNS,FGTRNS . BIF TRANSLATE @B@@@MFILL(1) SAC BFVERY,FGVERY WD )@@G@@. BIF VERIFY@B@@@MFILL(1) SAC BFSTRT,FGSTRT . BIF STRING@C@@@MFILL(1WE )@@G@@) SAC BFSTPV,FGSTPV . PSEUDOVAR STRING@B@@@MFILL(1) SAC 000000,XGBWF )@@G@@DIV . BIF DIVIDE@B@@@MFILL(1) SAC BFDOTT,FGDOTT . BIF DOT @C@@@MWG )@@G@@FILL(1) SAC INEVRY,EVRYIN-XGTBL2 . BIF EVERY @B@@@MFILL(1) SAC BFLIWH )@@G@@NO,FGLINO . BIF LINENO@B@@@MFILL(1) SAC 000000,XGBMUL . BIF MULT WI )@@G@@@B@@@MFILL(1) SAC BFPANO,FGPANO . BIF PAGENO@C@@@MFILL(1) SAC INPRWJ )@@G@@OD,PRODIN-XGTBL2 . BIF PROD @C@@@MFILL(1) SAC BFRVSE,FGRVSE . BIF WK )@@G@@REVERSE @C@@@MFILL(1) SAC INSOME,SOMEIN-XGTBL2 . BIF SOME @C@@@MWL )@@G@@FILL(1) SAC 000000,XGBSUB . BIF SUBTRACT @C@@@MFILL(1) SAC INSUWM )@@G@@MT,SUMTIN-XGTBL2 . BIF SUM @B@@@MFILL(1) SAC BFRAND,FGRAND . BIF WN )@@G@@RAND @B@N@MFILL(1) SAC BFENDT,FGENDT . ENDFILE @B@@@NFILL(1) SAC WO )@@G@@ 000000,FGONCD . ONCODE BIF@B@@@MFILL(1) SAC BFUNSP,FGUNSP . BIF WP )@@G@@UNSPEC@D@@@MFILL(1) SAC BFUNPV,FGUNPV . BIF UNSPEC PSEUDOVAR @B@@@MWQ )@@G@@FILL(1) SAC BFCLCK,FGCLCK . BIF CLOCK @C@N@MFILL(1) SAC BFCLPV,FGCWR )@@G@@LPV . PSEUDOVAR CLOCK @C@@@NFILL(1) SAC 000000,FGCLPV . PSEUDOVAR WS )@@G@@CLOCK @B@@@MFILL(1) SAC BFCSF$,FGCSF$ . CSF$ BIF @C@Q@NFILL(1) SACWT )@@G@@ 000000,000000 . ADDR BIF @C@@@QFILL(1) SAC BFADDR,FGADDRWU )@@G@@ . ADDR BIF @D@Q@NFILL(1) SAC 000000,000000 . ALLOCATION BIWV )@@G@@F @D@@@QFILL(1) SAC BFALLC,FGALLC . ALLOCATION BIF @C@Q@NWW )@@G@@FILL(1) SAC 000000,000000 . NULL BIF @C@@@QFILL(1) SAC 0WX )@@G@@00000,FGNULL . NULL BIF @C@@@NFILL(1) SAC 000000,000000 . EWY )@@G@@MTPY BIF @E@@@NFILL(1) SAC BFTRIM,FGTRIM . TRIM BUILT IN FUNCTWZ )@@G@@ION @A@@@NFILL(1) SAC 0,0 . NULL0@B@@@NFILL(1) SAC 0,FXA )@@G@@GONST . ONSTMT @B@@@NFILL(1) SAC 0,FGONCB . ONCHAR BIF XB )@@G@@@B@P@NFILL(1) SAC 0,FGONCP . ONCHAR PV @B@@@PFILL(1) SAC 0,0XC )@@G@@ . ONCHAR PV @C@@@NFILL(1) SAC 0,FGONSB . ONSOURCE BIXD )@@G@@F @B@P@NFILL(1) SAC 0,FGONSP . ONSOURCE PV@B@@@PFILL(1) SACXE )@@G@@ 0,0 . ONSOURCE PV@B@@@OFILL(1) SAC 0,FGONFD . OXF )@@G@@NFIELD@B@@@OFILL(1) SAC 0,FGONFL . ONFILE @B@@@OFILL(1) SACXG )@@G@@ 0,FGONLC . ONLOC @B@@@MEVRYIN +BFEVRY,FGEVRY . BIF XH )@@G@@EVERY @F@@@MPRODIN +RCFLTM,XGMLTB . BIF PROD (USE MULTIPLY OPERAXI )@@G@@TOR) @B@@@MSOMEIN +BFSOME,FGSOME .BIF SOME @B@@@MSUMTIN XJ )@@G@@ +000000,XGBPLT . BIF SUM @D@@@M/ . UTILITY SUBROUTINES TO MANXK )@@G@@AGE METACODE PTR @[@@@M. @[@@@M. @[@@@M. @[@@@M. @D@@@MXL )@@G@@BCKPGC* LLOC . ROUTINE BACKS UP GETC ONE TOKEN @E@@@M . XM )@@G@@ WITHOUT DOING A GETC @C@@@M TE A1,KXN )@@G@@LCH2W . SEE IF H1 OR H2 @E@@@M LOOP A1,LJMP . ->NE, RXO )@@G@@ETURN POINTING TO H1 @C@@@M ADD A1,1,I . RESET HALF PXP )@@G@@OINTER@E@@@M LOOP X1,LJMP . ->EQ, RETURN POINTING TO H2 XQ )@@G@@@#@@@MSCGSBC* LLOC . @D@@@M . USE POINTER IN A8 TO SET GETC ANDXR )@@G@@ DO GETC @D@@@M SSC A8,1 . RIGHT JUSTIFY OFFSET XS )@@G@@@E@@@M ADD A8,ADPBCM-FH2+FXH2 . COMPUTE CODE ADDRESS @E@@@MXT )@@G@@ LOADXM X1,A8 . NEW WORD ADDRESS LESS SIGN BIT @C@@@M XU )@@G@@ LOAD A1,KLCH2W . PREPARE TO READ H1 @F@@@M TP A8 . XV )@@G@@ SKIP IF HIGH ORDER BIT NOT SET (H1) @D@@@M ADD A1,1,I XW )@@G@@. CODE IS IN H2 SO SKIP H1 @E@@@M GETC . FETCH TXX )@@G@@HE CURRENT CODE INTO A8 @C@@@M LJMP . -> RETURN TO XY )@@G@@CALLER@E@@@MSXGBC* LLOC . MAKE BETA CODE POINTER IN A3 XZ )@@G@@@F@@@M LOAD A3,W1XU,X1 . GET ADDRESS OF NEXT WORD TO GETC YA )@@G@@@G@@@M SUB A3,ADPBCM-FH2+FXH2 . REMOVE OFFSET FOR MOVING B-CODYB )@@G@@E @^@@@M SLB A3,1 . @B@@@M TE A1,KLCH2W . SYC )@@G@@KIP IF H1 @B@@@M ADD A3,1,I . ADD 1 IF H2 @#@@@M YD )@@G@@ LJMP . @#@@@MBPTRDC* LLOC . @F@@@M . ROUTINE TAKES POINTER IN LOYE )@@G@@WER BYTE OF A8 TO RESET GETC ROUTINE@G@@@M . LOWEST BIT DETERMINES H1 ORYF )@@G@@ H2 WHILE BITS 8 - 1 DETERMINE OFFSET @#@@@M . FROM DXGXBS @D@@@MYG )@@G@@ . DESTROYS A9 RESETS X1, A1 TO NEW VALUES @A@@@M . OUTPUT YH )@@G@@TOKEN FROM GETC IS IN A8@G@@@M AND,U A8,0777 . GET DESIRED BYI )@@G@@ITS ******** @I@@@M SSC A9,1 . SHIFT AYJ )@@G@@WAY H1 AND H2 BIT FROM THE OFFSET * @F@@@M ADD A9,YK )@@G@@W1U,X1 . INCLUDE ADDRESS OF EXPRESSION START @D@@@M LOADXM X1YL )@@G@@,A9 . RESET GETC WORD POINTER @D@@@M TP A9 . SYM )@@G@@KIP ONE GETC IF EVEN @#@@@M GETC . @#@@@M GETC . YN )@@G@@@C@@@M LJMP . -> RETURN TO CALLER@G@@@M ENDYO )@@G@@ . CODE GENERATION SERVICE ROUTINES AND TABLES___FTIME,FGTYP )@@G@@IME . BIF TIME TIME @B@@@MFILL(1) SAC BFBINT,FGBINT . BIF YQ )@@G@@BINARY@B@@@MFILL(1) SAC *[S@@[*SDFF*@F@@@# 0)^@)CTJE[TELDC9CE))AC9A85^[]YR )@@G@@FC)E(IDDQC(METDE-T^[JC0)D([ELTD-[D1^@[@@@# 0)^@)@H@@@# 0)^@)EDPC(NE-DD9IYS )@@G@@ES)CTJD1#C(MD1DD1B^[OD[DES)ETCD9PD-^^[]C*)C-DEL CTOC(^^[OD8'@[@@@# 0)^@)YT )@@G@@@B@@@# 0)^@)^@)^@)^[HCDME1DD0)E0,^[UC(GDTJE9DE-U@E@@@# 0)^@)^@)^@)^[^C(KYU )@@G@@CDME-HC(IE))D9A^[#D9HE[PE- EK)ET#DD D1#C*)@C@@@# 0)^@)^@)^@)^[PD1DE1 ELNYV )@@G@@DDOFC)D9A^[HCDMFDGCDIC))@E@@@# 0)^@)^@)^@)^[#D9GD- C9 ^[KCDMDS?^[HCDMFDGYW )@@G@@CDIC))AK0A84AK)^@)@[@@@# 0)^@)@M@@@# 0)^@)^@)^@)^[KC(MD(DETNDDJD0)E-J^[PYX )@@G@@ET ^[OD[ ET ^[GDDNE-DD1BES)CDIC))E-CC*)CTJD(KE(OC(M^[KELJC9MCDHES)E-CC(TYY )@@G@@@I@@@# 0)^@)EL E[MC(NC(IE))DDN^[BEL[D1OC(^^[PD1^C(M^[OD[ ^[AD9GD-JE9DD1BYZ )@@G@@^[#D9IC-DE-DD9IES'@[@@@# 0)^@)@L@@@# 0)^@)^@)^@)^@1 0)E(ID-DD(DE- C))E(NZA )@@G@@C*)D([FC)CL ^[HCD^C*)D9A^[OD[ ^[KELJC9MCDHES)EL E[MC(NC(IE- C))CLT@M@@@#ZB )@@G@@ 0)^@)E-CC(NC*)D-DETODDIC9N^[KELJE1DC- C))E-CCDO^[OD[ ^[ICDHC*)E[GE(H^[JZC )@@G@@EK)E(IDDQC(METDE-T^[JC0)D([ELTD-[D1^@J@@@# 0)^@)E[G 81^[#D9HE[DD- EK)EL ZD )@@G@@D([DDIES)CDNETJCTDCDOC(^^[RDDOD@)E-CC(NC*)E[MD9BEL[D(N 0)^@)@[@@@# 0)^@)ZE )@@G@@@K@@@# 0)^@)^@)^@)^@2 0)D(JC-DC1DCT[E-DD9IES)D([FC)CL ^[HCD^C*)E-J^[OD[ ZF )@@G@@^[GDDNE-DD1BES)E[MD9QDD^C(^BK)@[@@@# 0)^@)@M@@@# 0)^@)^@)^@)^@*CC(^[[D1TZG )@@G@@^[MC(NE(GE-DD1B^[KELJC9MCDH ))D9M^[MC(KD9ME)?^[KCDKC(M^[JEK)C-JCTPD( D1OZH )@@G@@CDODDJD0)^@)@M@@@# 0)^@)^@)^@)^[^C(NCTMDD]DDIC8)ETPCTC^[KELJC9MCDH^[RDDGZI )@@G@@D))CTGC([ELGFC)DDIC-DCT[E- ^[OD[[E))E-CC*)E[MD9BEL[D*)@J@@@# 0)^@)^@)^@)ZJ )@@G@@^[DES)CC)C-DCDGC(#E))D9A^[KD-PD*)D9M^[DES)C- ELDE1 C))C1MD9H^[KD-PD*?^[[ZK )@@G@@D1^^@)@[@@@# 0)^@)@L@@@# 0)^@)^@)^@)^@*CK(^[[D-G^[NE(#D@)D(JC-DC1DCT[E-DZL )@@G@@D9IES?^[JE-CC(M^[OD[[D0)E-MDDQDD[D))CTJELMC(#E-DD9IES)@K@@@# 0)^@)^@)^@)ZM )@@G@@^[JC0)C(MELJELN^[DD0)E-CC*)ETJE(MCT ^[KELJC9MCDHES?^[ND[[D-G^[]C*)EL E[JZN )@@G@@ELOC(^^[[D1^@L@@@# 0)^@)^@)^@)^[[^[]ELDC(A^[^C(NCTMDDKE-DD9I^[JC0)E-CC*)ZO )@@G@@C1 CDOE(MC*)CD^C- C))ETCCDGD))CL ^[NE(]D(DE-OC(^@F@@@# 0)^@)^@)^@)^[OD8)ZP )@@G@@E-CC*)E(IDDQC(METDE-T^[JC0)D([ELTD-[D1^ ))CDIC))@[@@@# 0)^@)@L@@@# 0)^@)ZQ )@@G@@^@)^@)^@*CS(^[ID8)E[MD9BEL[D(N^[^C(MDDQC(^^[AELJD*)E-CC(NC*)D-DETODDIC9NZR )@@G@@^[ND[[D-G^[]C*)ETJD-^^@)@M@@@# 0)^@)^@)^@)^[RDDOD[JE(O^[RELDE-OC(I^[[E[KZS )@@G@@ELJE1[D))C1MD9H^[OD[ ^[PD1DE1 ELNDDOFC)D9A^[HCDMFDGCDIC)?^[[D1^^@)@[@@@#ZT )@@G@@ 0)^@)@L@@@# 0)^@)^@)^@)^@*C)(^[#D9KDD ES)D9A^[OD[ ET ^[KELJC9MCDHES)D([ZU )@@G@@FC)CL ^[OEL[D1ND(DE-OC(^^[OD8)D9OD[ EK)^@)@L@@@# 0)^@)^@)^@)^[GD9#CDODDJZV )@@G@@D1N^[KELJE1DC- C))E-CCDO^[NE(#D@)E-MCDIETHDDOE-[D-N^[#D- CDMD-T^[DD1^DD#ZW )@@G@@CDOC*)@L@@@# 0)^@)^@)^@)^[RD[ E-CC(M^[OD[ ^[KELJC9MCDHES)CDMC*)C(SCD#E))ZX )@@G@@CTJE[DC(N^[JC0)E-CC*)E(IDDQC(METDE-T^[JC0)@J@@@# 0)^@)^@)^@)^[HCDMFDGCDIZY )@@G@@C))E[GE(H^[#D9HE[DD- EK)D9M^[[EL ^[HD9^DDADD#CDODDJD1N^[OD8)DDO 0)@[@@@#ZZ )@@G@@ 0)^@)@L@@@# 0)^@)^@)^@)^@3 0)E-CC(NC*)CTJD1^DDODDJD1N^[JD1GFC)CDKE[GFC)AA )@@G@@E-J^[OD[ ^[KD-PD*)CTJD(KDDGC(M^[DE-NC(GC0?@L@@@# 0)^@)CDIC))CDMC*)D1JE))AB )@@G@@D( CDIE))E-J^[[E[KD-T^[OD8)CDIFC)E[MD9BEL[D*)E9MDDOE- D0)E(NDDIC8)E[GE(HAC )@@G@@ 0)^@)@J@@@# 0)^@)E-CC*)E[PELKD9NC*)D9A^[OD[ ET ^[#D9IC-DE-DD9IES)DDN^[OAD )@@G@@D8)CDGD-JE8)CDIFC)E(NC(M^[OD8)@L@@@# 0)^@)C(SE[ ELDD( D1O^[RDDOD@)E-CC*)AE )@@G@@CTJD(KDDGC(M^[[ES)D-JD1B^[[ES)E-CC*)EL ETPD-ODDIC8)E[MD9^E(#E))^@)@M@@@#AF )@@G@@ 0)^@)DDN^[ID9O^[ND9GC))CDIC))CDN^[GD9IC8)CDN^[DE))DDN^[FD1JE9I^[OD[[E))AG )@@G@@E-CC*)E[MD9^E(#E))C- E1 D-JE[ C))^@)@^@@@# 0)^@)C1MD9H^[KD-PD*,^@)@[@@@#AH )@@G@@ 0)^@)@[@@@# 0)^@)@[@@@# 0)^@)@[@@@# 0)^@)@[@@@# 0)^@)@[@@@# 8,^@)@ @@@]AI )@@G@@D(NC8%^@)^@)^[KELJCS)^@%AC) 0)@C@@@]FLH K*D(NC8*AC?AC( C)C(LE*)A)% @= (KAJ )@@G@@CDME)1 C) 0)@B@@@]FLS K*D(NC8*AC?AC( C)C(LE*)D(NC8*AC?AK(^@,@^@@@]^@)^@)AK )@@G@@^@)^@)^[ D1^^@,^@)@^@@@]E[OAK%^@)^@)^[KELJCS) 0)@B@@@]C1H^@)^@)^@)^[AD9MAL )@@G@@D*)^@6 )1AK?A0?AC2^@,^@)@M@@@]DS)^@)^@)^@)^[^D8)^@)^[KE)2 @1 )1 C) ))C1HAM )@@G@@^@:FLS @2 LF *2 C?FLH @2 LF *2 C?FLS @2 LF *1 C?FLH @2 LF *1 C) 0)@^@@@]AN )@@G@@^@)^@)^@)^@)^[ D1^^@,^@)@^@@@]^@)^@)^@)^@)^[[F[M^)) 0)@^@@@]^@)^@)^@)^@)AO )@@G@@^[^CTGELB^@,@ @@@]D(NC9N^@)^@)^[#ET CTO^@3^@,^@)@^@@@]D(NC83AC%^@)^[GCD]AP )@@G@@C(G^@,@A@@@]^@)^@)^@)^@)^@:E[[ELOAK?E[[ELOAC) 0)@^@@@]E[[ELOAC)^@)^[GCD]AQ )@@G@@C(G^@,@ @@@]^@)^@)^@)^@)^[HETB^@)^@0 )4^@,@A@@@]^@)^@)^@)^@)^[HETB^@)^@3AR )@@G@@AS?A)) 0)^@)@C@@@]^@$ET\IL2JC-^[IH94^[9G(4^[(H(0H->H(>H14G(=^@$^@,@ @@@]AS )@@G@@^@)^@)^@)^@)^[HETB^@)^@1 )2^@,@ @@@]^@)^@)^@)^@)^[HETB^@)^@5 )2^@,@ @@@]AT )@@G@@^@)^@)^@)^@)^[HETB^@)^@6 )2^@,@ @@@]^@)^@)^@)^@)^[HETB^@)^@7 )2^@,@ @@@]AU )@@G@@^@)^@)^@)^@)^[HETB^@)^@8 )2^@,@ @@@]^@)^@)^@)^@)^[HETB^@)^@9 )2^@,@A@@@]AV )@@G@@^@)^@)^@)^@)^[HETB^@)^@1A@?AK) 0)^@)@A@@@]^@)^@)^@)^@)^[HETB^@)^@1AC?AK)AW )@@G@@ 0)^@)@A@@@]^@)^@)^@)^@)^[HETB^@)^@1AK?AK) 0)^@)@A@@@]^@)^@)^@)^@)^[HETBAX )@@G@@^@)^@1AS?AK) 0)^@)@A@@@]^@)^@)^@)^@)^[HETB^@)^@1A)?AK) 0)^@)@A@@@]^@)^@)AY )@@G@@^@)^@)^[HETB^@)^@1A*?AK) 0)^@)@A@@@]^@)^@)^@)^@)^[HETB^@)^@1A0?AK) 0)^@)AZ )@@G@@@A@@@]^@)^@)^@)^@)^[HETB^@)^@1A8?AK) 0)^@)@A@#@]^@)^@)^@)^@)^[HETB^@)^@1BA )@@G@@B@?AK) 0)^@)@A@#@]^@)^@)^@)^@)^[HETB^@)^@1BC?AK) 0)^@)@A@^@]^@)^@)^@)^@)BB )@@G@@^[HETB^@)^@3BC?AK) 0)^@)@ @@@]^@$D1\I))GD3IT(G9,G(=^@$^@,^@)@ @@@]^@)^@)BC )@@G@@^@)^@)^[HETB^@)^@2 )3^@,@A@@@]^@$E-\H8)H(-H19^[!G(3IT-G9>IS)^8) 0)@ @@@]BD )@@G@@^@)^@)^@)^@)^[HETB^@)^@3 )2^@,@^@@@]^@$DC\D8)G(2IL\IK)^8) 0)@ @@@]^@)^@)BE )@@G@@^@)^@)^[HETB^@)^@4 )2^@,@ @@@]^@$D(-J[(H(5H*)H95I-0I(4^@$^@,@ @@@#^@)^@)BF )@@G@@^@)^@)^[HETB^@1B@?AC1^@)@J@@@#^@$CD2G95H(>H14^[(IS)C1DF[ C))GL5I))H1\^[3BG )@@G@@GT-H->^[(IS)G9(I1>H0?^[2G(3I(?I))HD3^[AD-JCDO^@$@ @@@#^@)^@)^@)^@)^[HETBBH )@@G@@^@1BC?AC0^@)@J@@@#^@$CD2G95H(>H14^[(IS)C1GD9[E))GL5I))ITIT5H-4^[(IS)C1DF[ C))^8)^@)@A@@@]^@)^@)^@)^@)^[HETB^@)^@2A@?AS)BJ )@@G@@ 0)^@)@B@@@]^@$CT\H(0HD?G(2^[>IL2H92 0)CTBCDR^@$^@,^@)@A@@@]^@)^@)^@)^@)BK )@@G@@^[HETB^@)^@2AC?AS) 0)^@)@B@@@]^@$CT\H(0HD?G(2^[>IL2H92 0)CTBCL^^@$^@,^@)BL )@@G@@@A@@@]^@)^@)^@)^@)^[HETB^@)^@2AK?AS) 0)^@)@B@#@]^@$E--GL?G*)H96G(2G1?H97BM )@@G@@ 0)CT\G->^@$^@,^@)@B@@@#^@$E--GL?G*)H96G(2G1?H97 0)CTJC- ^@$^@,^@)@A@@@]BN )@@G@@^@)^@)^@)^@)^[HETB^@)^@2AS?AS) 0)^@)@B@#@]^@$E--GL?G*)H96G(2G1?H97 0)CT$BO )@@G@@IT4HS)^8) 0)@B@@@#^@$E--GL?G*)H96G(2G1?H97 0)CTBETODS)^8) 0)@A@@@]^@)^@)BP )@@G@@^@)^@)^[HETB^@)^@2A)?A*) 0)^@)@G@#@]^@$ET9IT(H0\IT9IT0IL(H14^[-IT3I(!G(=BQ )@@G@@^[(H0)HC\H8)IT4GD4G(!G(,I-3^@$^@,^@)@G@@@#^@$ETTETDD0\ETTETKELDD1O^[-IT3BR )@@G@@I(!G(=^[(H0)DC\D8)IT4GD4G(!G(,I-3^@$^@,^@)@A@@@]^@)^@)^@)^@)^[HETB^@)^@2BS )@@G@@A*?A0) 0)^@)@D@#@]^@$D1\^[=GD4GC)G1\IL!GD4^[(H0)G1\IL!GD4^[&HD>H-=^@$^@,BT )@@G@@@D@@@#^@$D1\^[=GD4GC)G1\IL!GD4^[(H0)C1JELHCDO^[&HD>H-=^@$^@,@A@@@]^@)^@)BU )@@G@@^@)^@)^[HETB^@)^@2A0?A*) 0)^@)@D@#@]^@$C1\IL!GD4^[7HD?H))GL>^[>J[>GT5I->BV )@@G@@G))H9,GT> 0)^8) 0)@D@@@#^@$C1JELHCDO^[7HD?H))GL>^[>J[>GT5I->G))H9,GT> 0)BW )@@G@@^8) 0)@A@@@]^@)^@)^@)^@)^[HETB^@)^@2A8?A)) 0)^@)@B@@@]^@$E[-IL-H(>I->IK)BX )@@G@@HD,^[D 9J^[?HD3I))^8) 0)@A@@@]^@)^@)^@)^@)^[HETB^@)^@2B@?A0) 0)^@)@D@@@]BY )@@G@@^@$D->H1$I-*^[\G0)F-AH1>G9-I-(I1> 0)B@0^[5IT>G))^8) 0)@A@@@]^@)^@)^@)^@)BZ )@@G@@^[HETB^@)^@2BC?AC1^@,^@)@J@@@]^@$CL\I(,G-3^[&H92^[3I(+ITG))^8) 0)@A@@@]^@)^@)^@)^@)^[HETBCB )@@G@@^@)^@3A@?AC0^@,^@)@H@@@]^@$DD,^[3I(+ITIK)GL\I(,CC )@@G@@G))B0)I(0I[>IK)GL\I(,G))^8) 0)@A@@@]^@)^@)^@)^@)^[HETB^@)^@3AC?AC0^@,^@)CD )@@G@@@F@@@]^@$F-AHD3^[4H9\^[?GD2G9> 0)D-\I9>IK)GL\I(,G))HD,^[YC))HD3^@0^@$^@,CE )@@G@@@A@@@]^@)^@)^@)^@)^[HETB^@)^@3AK?AC1^@,^@)@H@@@]^@$F-AHD3^[4H9\^[?GD2G9>CF )@@G@@ 0)E(0I[>IK)GL\I(,G))HD,^[YC).^[?H97G(2^[+H95H1=^@$^@,@A@@@]^@)^@)^@)^@)CG )@@G@@^[HETB^@)^@3A)?A8) 0)^@)@D@@@]^@$F-AH[-IS)GD4I-2HD+I(4G*)H9&^@% 0)AC0^[5CH )@@G@@IT>G))^8) 0)@A@@@]^@)^@)^@)^@)^[HETB^@)^@3A*?A*) 0)^@)@B@@@]^@$F-AH[-IS)CI )@@G@@GC)H1\H0! K)GL\I(,G))^8) 0)^@)@A@@@]^@)^@)^@)^@)^[HETB^@)^@3A0?A*) 0)^@)CJ )@@G@@@C@@@]^@$D->H1$I-*^[4H9\^[+HD$ 0)AC0^[5IT>G))^8) 0)^@)@A@@@]^@)^@)^@)^@)CK )@@G@@^[HETB^@)^@3A8?AS) 0)^@)@B@@@]^@$CT\H(0HD?G(2^[>IL2H92 0)CTBCLF^@$^@,^@)CL )@@G@@@A@@@]^@)^@)^@)^@)^[HETB^@)^@3B@?AK) 0)^@)@A@@@]^@$DD!I[2H90G(2^[0IL>GT(CM )@@G@@IT(H9,^@$^@,@A@^@]^@)^@)^@)^@)^[HETB^@)^@4A@?AS) 0)^@)@A@@@^^@)^@)^@)^@)CN )@@G@@^[HETB^@)^@3BC?BC) 0)^@)@K@@@^^@$CL C9DD0)GL?H9CO )@@G@@G))I1-IL(GD+H->IS?^[^D8;^[(IS)I[2G(&G(2IL>G))^8) 0)^@)@A@@@^^@)^@)^@)^@)CP )@@G@@^[HETB^@)^@4A@?AS) 0)^@)@B@#@]^@$C-5I[?HD^[0IL>G1(J@)^8) 0)CQ )@@G@@@B@@@#^@$C-5I[?HDG1(J@)^8) 0)@A@@@]^@)^@)^@)^@)^[HETBCR )@@G@@^@)^@4AC?A*) 0)^@)@E@@@]^@$D1\H0!GT\H13I--H14^[-IL$I(!G(,I),^@1A@)HD3^[5CS )@@G@@IT>G))^8) 0)@A@@@]^@)^@)^@)^@)^[HETB^@)^@4AK?A*) 0)^@)@F@@@]^@$D1\H0!IL>CT )@@G@@GD?^[-IL$I(!G(,I),^[DH(-G9(H1-IL9^[0GD2I))I(3G(=^@$^@,@A@@@]^@)^@)^@)^@)CU )@@G@@^[HETB^@)^@4AS?A*) 0)^@)@D@@@]^@$CD+IS*GD2G95H(>H14 C)B0)A05A*3A*,^@1A@)CV )@@G@@I(3G(=^@$^@,@A@@@]^@)^@)^@)^@)^[HETB^@)^@4A)?A)) 0)^@)@A@@@]^@$ET^[-I-4IL(GL5I->IS)H9,^[2G(4I(2H1>G))I1-H-5G*)^8) 0)CY )@@G@@@A@@@]^@)^@)^@)^@)^[HETB^@)^@4A0?AS) 0)^@)@B@@@]^@$CT\H(0HD?G(2^[>IL2H92CZ )@@G@@ 0)CTBC-M^@$^@,^@)@A@@@]^@)^@)^@)^@)^[HETB^@)^@4A8?BC) 0)^@)@G@#@]^@$F-ADA )@@G@@HD3^[(H-?G($GD?^[(H0)IT4GD4HD<^[6GD2HD-GL?G*,^[WC((IS)I(3G(=^@$^@,@G@@@#DB )@@G@@^@$F-AHD3^[(H-?G($GD?^[(H0)ETOCDODD#^[6GD2HD-GL?G*,^[WC((IS)I(3G(=^@$^@,DC )@@G@@@A@@@]^@)^@)^@)^@)^[HETB^@)^@4B@?B@) 0)^@)@H@#@]^@$F-AHD3^[,H94^[^@$^@,^@)@H@@@#^@$F-AHD3^[,DE )@@G@@H94^[^@$^@,^@)@A@#@]DF )@@G@@^@)^@)^@)^@)^[HETB^@)^@4BC?B@) 0)^@)@A@@@#^@)^@)^@)^@)^[HETB^@)^@4BC?AC3DG )@@G@@^@,^@)@H@#@]^@$CT\H16G(2IT(H9,^[2G(1I((IL>G))I-\^[!GD4GT*^[0GD2GD!G(4G(2DH )@@G@@^[WC1\G0)F-#^@$^@,@O@@@#^@$CT\H16G(2IT(H9,^[2G(1I((IL>G))I-\^[!GD4GT*^[0DI )@@G@@GD2GD!G(4G(2^[WC1\G0)F-#^@,^[[IL$I(!G(,I))I[-IT3G(=^[+JC)I1-H-5G*)^8) 0)DJ )@@G@@@A@@@]^@)^@)^@)^@)^[HETB^@)^@5A@?A0) 0)^@)@I@@@]^@$ETI->IK)^8) 0)^@)@A@@@]^@)^@)DL )@@G@@^@)^@)^[HETB^@)^@5AC?AC1^@,^@)@N@@@]^@$C15H1IS)IL>GD?DM )@@G@@^[-IL$I(!G(,I),^[MG(-H))I[-IL4^[\G0)GT\H(0H->J@)GD2G95H(>H14^[(IS)I(3G(=DN )@@G@@^@$^@,@A@@@]^@)^@)^@)^@)^[HETB^@)^@5AK?A)) 0)^@)@B@@@]^@$C[PHD3^[,H9, (3DO )@@G@@I--H1=GD2G))E[G 81^@$^@,@A@@@]^@)^@)^@)^@)^[HETB^@)^@5AS?BC) 0)^@)@G@#@]DP )@@G@@^@$CD2G95H(>H14^[4H8)IL\I(,G))H95I))H9&^[2GD,G9> 0)A@)HD3^[5IT>G))^8) 0)DQ )@@G@@@G@@@#^@$CD2G95H(>H14^[4H8)ELJE(IC))H95I))H9&^[2GD,G9> 0)A@)HD3^[5IT>G))DR )@@G@@^8) 0)@ @@@ ^@)^@)^@)^@)^[!IT$^@)^@5A)?AC3@O@@@ ^@$CD2G95H(>H14^[WC-4H8)DS )@@G@@G15H1IK)G-(G9(I-3^[-IL>^[?H93I))G-5G*)I-\^[=HD6HD3DV )@@G@@HD\H0)H90G(2GD4HD\H0)^8) 0)^@)@^@@@]E[[ELOAK)^@)^[GCD]C(G^@,@ @ @]^@)^@)DW )@@G@@^@)^@)^[KE)2^@)^@2A8) 0)@ @@@ ^@)^@)^@)^@)^[KE)2^@)^@2B@) 0)@^@@@#^@)^@)DX )@@G@@^@)^@)^[ D1^^@,^@)___AK) 0)^@)@A@^@]^@)^@)^@)^@)^[HETB^@)^@3BC?AK) 0)^@)DY )@@G@@*[S@@@*SDFF*@C@C@B. COPYRIGHT 1975 BY UNIVERSITY OF MARYLAND @C@@@CDZ )@@G@@. COPYRIGHT 1976 BY UNIVERSITY OF MARYLAND @[@@@B. @D@@@B. QUEA )@@G@@ESTIONS CONCERNING THIS SHOULD BE DIRECTED TO: @[@@@B. @ @@@B. EB )@@G@@ MARVIN V. ZELKOWITZ @B@@@B. DEPARTMENT OF COMPUTER SCIENCE EC )@@G@@@A@@@B. UNIVERSITY OF MARYLAND @B@@@B. COLLEGE PARK, MED )@@G@@ARYLAND 20742 @[@@@B. @G@@@B. PERMISSION TO USE THESE LISEE )@@G@@TINGS AND THE COMPUTER PROGRAMS THEY@E@@@B. REPRESENT IS GRANTED UNDEREF )@@G@@ THE FOLLOWING CONDITIONS: @[@@@B. @G@@@B. 1. UNLIMITED USEG )@@G@@E MAY BE MADE OF THE PROGRAMS REPRESENTED BY @G@@@B. THESE LISTINGSEH )@@G@@ PROVIDED THAT THE NAME PLUM OR UNIVERSITY OF MARYLAND@E@@@B. PL/1 COMEI )@@G@@PILER REMAINS ASSOCIATED WITH THESE PROGRAMS. @[@@@B. @F@@@B. EJ )@@G@@ 2. MODIFICATIONS MAY BE MADE TO THE LISTINGS PROVIDED: @[@@@B. EK )@@G@@@G@@@B. (A) ANY RESULTING PROGRAM, OR REPORT, PAPER OR DOCUMENTATEL )@@G@@ION @G@@@B. DESCRIBING SUCH PROGRAM WILL CLEARLY INDICATE THAT EM )@@G@@THE PROGRAM @E@@@B. IS A DIALECT OF PLUM OR IS DERIVED FROM PLUM,EN )@@G@@ AND @[@@@B. @G@@@B. (B) ALL SUCH MODIFICATIONS, OTHER THAN EO )@@G@@TRIVIAL CORRECTIONS @F@@@B. OF ERRORS IN THE SOURCE PROGRAMS,EP )@@G@@ SHALL BE REPORTED AND @G@@@B. A BRIEF DESCRIPTION OF THE FEATUREQ )@@G@@E ADDED SHALL BE SUBMITTED @C@@@B. TO THE UNIVERSITY OF MARYLAER )@@G@@ND, AND @[@@@B. @F@@@B. (C) NO PROGRAMS DERIVED FROM THESES )@@G@@E LISTINGS SHALL BE SOLD@G@@@B. WITHOUT WRITTEN APPROVAL FROM THEET )@@G@@ UNIVERSITY OF MARYLAND, AND @[@@@B. @F@@@B. (D) COPIES OF TEU )@@G@@HESE PROGRAMS MAY BE TRANSMITTED TO OTHER @G@@@B. LOCATIONS PROVIEV )@@G@@DED THAT SUCH TRANSMITTALS CLEARLY INDICATE @G@@@B. WHETHER TEW )@@G@@HE PROGRAMS ARE EXACT COPIES OF THE UNIVERSITY OF @E@@@B. MAREX )@@G@@YLAND PLUM COMPILER OR ARE MODIFICATIONS TO IT. @[@@@B. @G@@@B. EY )@@G@@ 3. THESE CONDITIONS ONLY APPLY TO THE PLUM COMPILER ITSELF, @F@@@BEZ )@@G@@. AND ARE NOT MEANT TO APPLY TO ANY PROGRAM WRITTEN USING PLUM. @E@@@BFA )@@G@@. THE PURPOSE OF THESE CONDITIONS IS TO ALLOW ANY USER TO @F@@@B. EXFB )@@G@@PERIMENT WITH THE COMPILER AS LONG AS THE RESULTING PRODUCT @G@@@B. ISFC )@@G@@ NOT SOLD AND AS LONG AS IT IS KNOWN THAT THE PRODUCT DEVELOPED @#@@@BFD )@@G@@. FROM PLUM. @[@@@B. @[@@@B. @[@@@B. @[@@@B. @[@@@BFE )@@G@@. @[@@@B/. @#@@@B AXR$ . @#@@@B DCLRG . @#@@@BFF )@@G@@ UNLIST . @#@@@B@ADD,P PLTVDS . @#@@@B@ADD,P PLCGST . @#@@@BFG )@@G@@@ADD,P PLDSAW . @#@@@B LIST . @#@@@B PLWORD .@#@@@BFH )@@G@@ PLCGD . @#@@@B PLSD . @#@@@B PLAC . @#@@@BFI )@@G@@ PLIG . @#@@@BCGBF CSECT 3. @[@C@B. @]@C@BFGLOG1* FJ )@@G@@@]@C@BFGLOG2* @]@C@BFGSIND* @]@C@BFGCOSD* @]@C@BFGTAND* FK )@@G@@@[@C@B. @[@C@B. @ @C@BFILL(1) SAC GGTNOP,CBB1RL .@^@C@BFILL(1FL )@@G@@) SAC CBBNOP,0 @[@C@B. @C@C@B. RAND FUNCTION - NON- PL/1 SFM )@@G@@TANDARD @[@C@B. @[@C@B. @ @C@BFGRAND* SAC GGTNOP,CBRAND FN )@@G@@@^@C@BFILL(1) SAC CBBNOP,0 . @[@C@B. @[@C@B. @[@C@B. @]@C@BFO )@@G@@FGEXPT* @]@C@BFGLOGT* @]@C@BFGTANT* @]@C@BFGSINT* @]@C@BFP )@@G@@FGCOST* @]@C@BFGSQRT* @[@C@B. @[@C@B. @[@C@B. @ @C@BFQ )@@G@@FILL(1) SAC GGTNOP,CBB1RC @^@C@BFILL(1) SAC CBBNOP,0 @[@C@B. FR )@@G@@@[@C@B. @B@C@BFGATAN* . ARC TAN@[@C@B. FS )@@G@@@[@C@B. @ @C@BFILL(1) SAC GGTNOP,CBBATN @^@C@BFILL(1) SAC CBBFT )@@G@@NOP,0 @[@C@B. @[@C@B. @D@C@BFGATND* . AFU )@@G@@RC TAN DEGREES @[@C@B. @[@C@B. @ @C@BFILL(1) SAC GGTNOP,CBFV )@@G@@BATD @^@C@BFILL(1) SAC CBBNOP,0 @[@C@B. @B@C@B. FW )@@G@@ FLOOR @[@C@B. @]@C@BFGFLRT* @ @C@BFILL(1) SACFX )@@G@@ CBSIGN,CBSFLR @D@C@BFILL(1) SAC CBXFLF,CBXFNP . FLOAT , FIXEDFY )@@G@@ Q = 0@D@C@BFILL(1) SAC CBXFLQ,CBXFDQ . FB Q<0, FD Q<0 @D@C@BFZ )@@G@@FILL(1) SAC CBXFLR,CBXFFF . FB Q>0, FD Q>0 @[@C@B. @[@C@BGA )@@G@@. @B@C@B. CEIL @[@C@B. @]@C@BGB )@@G@@FGCEIL* @ @C@BFILL(1) SAC CBSIGN,CBSCEL @ @C@BFILL(1) SAC CBXGC )@@G@@FLC,CBXFNP @ @C@BFILL(1) SAC CBXFLQ,CBXFDQ @ @C@BFILL(1) SAC CBXGD )@@G@@CEL,CBXFFC @[@C@B. @[@C@B. @B@C@B. GE )@@G@@ TRUNC @]@C@BFGTRUN* @ @C@BFILL(1) SAC CBSIGN,CBSTRN @ @C@BGF )@@G@@FILL(1) SAC CBXFTQ,CBXFNP @ @C@BFILL(1) SAC CBXFLQ,CBXFDQ @ @C@BGG )@@G@@FILL(1) SAC CBXTRN,CBXFDP @[@C@B. @[@C@B. @[@C@B. @B@C@BGH )@@G@@FGROUN* . ROUND @G@C@BFILL(1) SAC GGTNOP,GI )@@G@@CBSRON . ALL OF THE WORK IS DONE AT STAGEING @ @C@BFILL(1) SAC CGJ )@@G@@BBNOP,0 . @[@C@B. @[@C@B. @[@C@B. @B@C@BFGMAXT* . GK )@@G@@ MAX @[@C@B. @[@C@B. @ @C@BFILL(1) SAC GGTGL )@@G@@ARI,BFSMAX .@ @C@BFILL(1) SAC BFFMIN,CBBNOP @ @C@BFILL(1) SAC BFBGM )@@G@@MIN,CBBNOP @[@C@B. @[@C@B. @B@C@BFGMINT* . GN )@@G@@ MIN @[@C@B. @[@C@B. @ @C@BFILL(1) SAC GGTARI,BFSMIN GO )@@G@@@ @C@BFILL(1) SAC BFFMIN,CBBNOP @ @C@BFILL(1) SAC BFBMIN,CBBNOP GP )@@G@@@[@C@B. @[@C@B. @B@C@BFGMODT* . MOD BIFGQ )@@G@@@[@C@B. @[@C@B. @ @C@BFILL(1) SAC BFTMOD,BFSMOD @ @C@BFILL(1GR )@@G@@) SAC BFMODF,CBBNOP @ @C@BFILL(1) SAC BFMODB,CBBNOP @[@C@B. GS )@@G@@@[@C@B. @C@C@BFGABST* . ABSOLUTE VAL @[@C@BGT )@@G@@. @[@C@B. @ @C@BFILL(1) SAC CBTABS,CBSABS @ @C@BFILL(1) SACGU )@@G@@ CBABFR,CBBNOP .@H@C@BFILL(1) SAC CBABBR,CBBNOP . REAL ARE CODEGV )@@G@@, COMPLEX DONE AT STAGING @[@C@B. @[@C@B. @C@C@BFGSIGN* . GW )@@G@@ SIGN BIF @[@C@B. @[@C@B. @A@C@BFILL(1GX )@@G@@) SAC CBSIGN,CSSIGN . @A@C@BFILL(1) SAC CBSGFR,CBBNOP . GY )@@G@@@A@C@BFILL(1) SAC CBSGBR,CBBNOP . @[@C@B. @[@C@B. @E@C@BGZ )@@G@@. INLINE DATA TYPE BIF'S @B@C@BFGBINTHA )@@G@@* . BINARY @B@C@BFGDECT* . HB )@@G@@ DECIMAL@B@C@BFGFIXD* . FIXED @B@C@BFGFLTTHC )@@G@@* . FLOAT @C@C@BFGPREC* . HD )@@G@@ PRECISION @[@C@B. @[@C@B. @ @C@BFILL(1) SAC CBCONV,GGHE )@@G@@SNOP .@ @C@BFILL(1) SAC CBBNOP,0 . @[@C@B. @[@C@B. @E@C@BHF )@@G@@. REAL IMAG BIFS AND P.V. @[@C@B. HG )@@G@@@]@C@BFGCPLE* @[@C@B. @[@C@B. @C@C@BFILL(1) SAC BFTMOD,GGHH )@@G@@SADS . COMPLEX BIF @ @C@BFILL(1) SAC CBCPLF,CBCPLF .@ @C@BFILL(1HI )@@G@@) SAC CBCPLB,CBCPLB .@[@C@B. @[@C@B. @C@C@BFGCONJ* . HJ )@@G@@ CONJUGATE @[@C@B. @[@C@B. @ @C@BFILL(1) SACHK )@@G@@ CBTABS,GGSNOP .@ @C@BFILL(1) SAC CBCJGR,CBCJGF @ @C@BFILL(1) SACHL )@@G@@ CBCJGR,CBCJGB @[@C@B. @[@C@B. @C@C@BFGIMAG* . HM )@@G@@ IMAG BIF @[@C@B. @[@C@B. @ @C@BFILL(1) SAC CBTHN )@@G@@REL,GGSNOP .@^@C@BFILL(1) SAC CBIMG,0 .@[@C@B. @[@C@B. @B@C@BHO )@@G@@FGRLPV* . REAL PV@C@C@BFGREAL* . HP )@@G@@ REAL BIF @[@C@B. @[@C@B. @ @C@BFILL(1) SAC CBTHQ )@@G@@REL,GGSNOP .@^@C@BFILL(1) SAC CBREL,0 .@[@C@B. @[@C@B. @B@C@BHR )@@G@@FGIMPV* . IMAG PV@[@C@B. @[@C@B. @ @C@BHS )@@G@@FILL(1) SAC CBTREL,GGSNOP .@ @C@BFILL(1) SAC CBIMAG,0 . @[@C@BHT )@@G@@. @[@C@B. @A@C@B. HBOUND, LBOUND AND DIM @]@C@BFGDIMTHU )@@G@@* @]@C@BFGHBND* @]@C@BFGLBND* @[@C@B. @[@C@B. @ @C@BHV )@@G@@FILL(1) SAC CBTDIM,GGSNOP @^@C@BFILL(1) SAC CBDIM,0 @[@C@B. HW )@@G@@@[@C@B. @A@C@B/ . MATHEMATICAL FUNCTIONS @[@C@B. @B@C@BHX )@@G@@. FUNCTIONS WITH 1 REAL ARGUMENT @[@C@B. @[@C@B. @^@C@BHY )@@G@@. GENERATED CODE @[@C@B. @A@C@B. DL A3,REAL ARGUMENHZ )@@G@@T @ @C@B. LMJ X11,FUNCTION @B@C@B. DS A3,TEMPORIA )@@G@@ARY FOR RESULT @[@C@B. @[@C@B. @D@C@B. STAGING (TARGETIB )@@G@@ING AND CODE GEN ARE NO-OPS) @[@C@B. @[@C@B. @#@C@BCBRAND LABIC )@@G@@EL . @D@C@B GNTR 2. RAND ENTRY POINT @E@C@BID )@@G@@ NONPL1 XGFRND,DCBRND,CBBRL1 . RAND NOT STANDARD @F@C@B IE )@@G@@ GOTO CBBRL1 . MERGE WITH REAL ARG ROUTINES @#@C@BCBB1RLIF )@@G@@ LABEL . @#@C@B GNTR 2 .@#@C@BCBBRL1 LABEL . @F@C@B IG )@@G@@ IF SDRLCX,OFF,SGDCLS THEN,CBBRL2 . -> REAL ARGUMENT @D@C@B IH )@@G@@ SET SDRLCX,OFF,SGDCLS . USE REAL PART ONLY @C@C@B EXERR EXEII )@@G@@RB1 LEVEL,2 . 'REAL PART USED'@]@C@B GEN@^@C@B GFREE AGIIJ )@@G@@M1 @#@C@BCBBRL2 LABEL . @#@C@BCBBRL3 LABEL . @D@C@B LOAIK )@@G@@DA X2,SGDAID+DCGSLT . POINT TO RESULT @D@C@B MOVE SGDAID+DCIL )@@G@@GSLT,SGDAID . SET RESULT AIDC @G@C@B SET SGDSGN,OFF,SGDAID+DIM )@@G@@CGSLT . TURN OFF UNARY MINUS IN OPND@D@C@B LINK CBSFLT . IN )@@G@@ SET RESULT TO FLOAT@#@C@BCBBRL5 LABEL . @E@C@B IF SDRIO )@@G@@LCX,OFF,SGDCLS THEN,CBBRL6 . ->REAL ARG. @#@C@B GEN . @C@C@BIP )@@G@@ GDBLE OPDL,AGRA1,AGIM1 . LOAD IMAG PART@#@C@BCBBRL6 LABEL . IQ )@@G@@@#@C@B GENM . @A@C@B GDBLE OPDL,AGRA3,AGRL1 . @#@C@BIR )@@G@@CBBRL7 GLBL . @^@C@B GSUB 'BILTN' @E@C@BCBBNOP GLBL . IS )@@G@@ USED FOR NO-OP ICODE @#@C@B GFIN . @E@C@BIT )@@G@@ IF SDRLCX,OFF,SGDCLS THEN,CBBRL8 . RESULT REAL @#@C@B IU )@@G@@ GENM @E@C@B GGETGR AGIM2,2 . GET REGISTERS FOR RIV )@@G@@ESULT @B@C@B GDBLE OPDS,AGRA1,AGIM2 'NO' . @#@C@B GFIIW )@@G@@N . @#@C@BCBBRL8 LABEL . @#@C@B GENM @E@C@B GGEIX )@@G@@TGR AGRL2,2 . GET A TWO WORD REGISTER @B@C@B GDBLE OPDIY )@@G@@S,AGRA3,AGRL2 'NO' . @#@C@B GFIN . @D@C@B XGPOP . IZ )@@G@@ POP OFF STACK ELT @#@C@BCBBRL4* LABEL . @A@C@B JA )@@G@@ MOVE SGDID,SD0ART+SGDEXP,I@C@C@B LOAD X4,0,I . SJB )@@G@@ET ICODE @^@C@B GOTO GGTRET . @[@C@B/. @E@C@B. MATJC )@@G@@HEMATICAL FUNCTIONS WITH 1 ARG (REAL OR COMPLEX)@[@C@B. @[@C@B. JD )@@G@@@^@C@B. CODE GENERATED @[@C@B. @ @C@B. DL A1,COMPLEJE )@@G@@X RG @ @C@B. DL A3,REAL ARG @B@C@B. LMJ X11,FUNCTJF )@@G@@ION (REAL ARG) @C@C@B. LMJ X11,FUNCTION+1 (COMPLEX ARG) JG )@@G@@@ @C@B. DS A3,REAL RESULT @A@C@B. DS A1,COMPLEX RESUJH )@@G@@LT @[@C@B. @H@C@BCBB1RC LABEL . STAGEING FOR JI )@@G@@ONE ARG (REAL OR COMPLEX) @#@C@B GNTR 2 .@#@C@BCBBRC1 LABJJ )@@G@@EL . @E@C@B IF SDRLCX,OFF,SGDCLS THEN,CBBRL2 . -> REAL ARG JK )@@G@@@C@C@B LOAD A7,DXGARG . COMPLEX ARG @^@C@B ADDJL )@@G@@ A7,1,I . @ @C@B STORE A7,DXGARG . @E@C@B GOTO CBBJM )@@G@@RL3 . PROCESS AS IN REAL PART @[@C@B. @B@C@B. FUNJN )@@G@@CTION TO CONVRT ARG TO FLOAT @[@C@B. @#@C@BCBSFLT LLOC . @ @C@BJO )@@G@@ USING SGDSCT,X2 . @D@C@B MOVE SGDSCL,0,I . NJP )@@G@@O SCALE FOR FLOAT @C@C@B LOAD A3,SGDCLS,X7 . GET CLASS JQ )@@G@@@D@C@B OR,U A3,SDFXFL . TURN ON FLOAT BIT @ @C@B JR )@@G@@ STORE A4,SGDCLS,X2 . @E@C@BCBSFL2 LOCAL . ALTERNAJS )@@G@@TE ENTZY POINT @D@C@B CGCONV R,X2 R,X7 . CONVERT TO FLJT )@@G@@OAT @D@C@B SET SGDSGN,OFF,SGDCLS . RESULT NOT NEG. @ @C@BJU )@@G@@ USING SGDSCT,X7 . @#@C@B JMP . @[@C@B. @^@C@BJV )@@G@@. ARC TANGENT @[@C@B. @D@C@B. ATAN 1 REAL OR COMPLEJW )@@G@@X ARG OR 2 REAL ARGS @[@C@B. @ @C@B. ENTRY POINT 1 = 1 ARGJX )@@G@@@ @C@B. ENTRY POINT 2 = 2 ARG@[@C@B. @C@C@BCBBATD LABEL . JY )@@G@@ ATAND ENTRY @#@C@B GNTR 2 .@C@C@B LOAJZ )@@G@@D A7,DXGNAR . SEE IF 2 ARGS@E@C@B IF A7,EQ,DCGSLT,I KA )@@G@@THEN,CBBRL1 . -> I REAL ARG @D@C@B LOAD A7,DXGARG . SKB )@@G@@ET ENTRY POINT 2 @^@C@B ADD A7,1,I . @#@C@BCBATD1 LABEL . KC )@@G@@@ @C@B STORE A7,DXGARG . @E@C@B IF SDRLCX,OFF,SGDCKD )@@G@@LS THEN,CBATD2 . -> ARG 2 REAL@A@C@B SET SDRLCX,OFF,SGDCLS . KE )@@G@@@C@C@B EXERR EXERB1 LEVEL,2 . 'REALPART USED' @]@C@B GENKF )@@G@@@^@C@B GFREE AGIM1 @#@C@BCBATD2 LABEL . @F@C@B IF KG )@@G@@ SDRLCX,OFF,SGDCLS+DCGSLT THEN,CBATD3 . ->ARG 1 REAL@B@C@B SETKH )@@G@@ SDRLCX,OFF,SGDCLS+DCGSLT . @C@C@B EXERR EXERB1 LEVEL,2 . 'REAKI )@@G@@L PART USED'@#@C@B GEN . @^@C@B GFREE AGIM2 . @#@C@BKJ )@@G@@CBATD3 LABEL . @F@C@B MOVE SGDPRE+2*DCGSLT,SGDPRE . ARG 2 ISKK )@@G@@ RESULTING PREC @I@C@B LOADA X2,SGDAID+2*DCGSLT . KL )@@G@@ CONVERT ARG TO RESULTING @^@C@B LINK CBSFLT . @D@C@BKM )@@G@@ XGPOP . POP ARG 2 FOR NOW @C@C@B LOAKN )@@G@@DA X2,SGDAID+DCGSLT . CONVERT ARG 1@^@C@B LINK CBSFL2 . @D@C@BKO )@@G@@ SUB X7,DCGSLT,I . GET ARG 2 BACK @#@C@B GENKP )@@G@@M . @A@C@B GDBLE OPDL,AGRA3,AGRL2 . @A@C@B GDBLE OPKQ )@@G@@DL,AGRA1,AGRL1 . @^@C@B GSUB 'BILTN' @D@C@B GGETGR AKR )@@G@@GRL2+DCGSLT,2 . GET REAL REGISTER @F@C@B GDBLE OPDS,AGRA3,AGRKS )@@G@@L2+DCGSLT 'NO' . SET RESULT @#@C@B GFIN . @D@C@B KT )@@G@@ XGPOP 'SIZE',2*DCGSLT . POP OFF TWO ARGS. @C@C@B GOTO CBBKU )@@G@@RL4 . ->RETURN @[@C@B. @#@C@B. ARCTAN @^@C@BKV )@@G@@. EP1=1 REAL @^@C@B. EP2=1 COMPLEX @^@C@B. EP3KW )@@G@@=2 REAL @[@C@B. @#@C@BCBBATN LABEL . @#@C@B GNTR 2 .KX )@@G@@@D@C@B LOAD A7,DXGNAR . SEE HOW MANY ARGS @D@C@B KY )@@G@@ IF A7,EQ,DCGSLT,I THEN,CBBRC1 . -> 1 ARG @ @C@B LOAD A7,KZ )@@G@@DXGARG . @C@C@B ADD A7,2,I . ENTRY POINT 3@D@C@BLA )@@G@@ GOTO CBATD1 . ->MERGE WITH ATAND @ @C@B/ . LB )@@G@@ INLINE BIF'S@[@C@B. @^@C@B. ABSOLUTE VALUE @[@C@B. LC )@@G@@@C@C@BCBTABS LABEL . TARGETING @#@C@B GNTLD )@@G@@R 2 . @A@C@B CGCONV R,X7 R,X7 . SET X4 @I@C@B MOVE SGDLE )@@G@@AID+DCGSLT,SGDAID . RESULTING TYPE IS TYPE OF @^@C@BLF )@@G@@ GOTO GGTRET . @[@C@B. @[@C@B. @[@C@B. @C@C@BCBSABSLG )@@G@@ LLOC . STAGEING @D@C@B IF SDRLCX,OFLH )@@G@@F,SGDCLS THEN,LJMP . -> REAL @^@C@B GNTR 2 . @E@C@B LI )@@G@@ LOADA X2,SGDAID+DCGSLT . POINT TO ELT. FOR BIF @E@C@B MOVLJ )@@G@@E SGDAID+DCGSLT,SGDAID . COPY ATTRIBUTES @D@C@B LINK CLK )@@G@@BSFLT . CONVERT TO FLOAT @E@C@B GENM . LL )@@G@@ COMPUTE (X**2+Y**2)**1/2 @D@C@B GIFR CBSAB1,AGRL1 . ILM )@@G@@S REAL IN REG? @D@C@B GIFR CBSAB2,AGIM1 . IS IMAG IN RELN )@@G@@G? @C@C@B GLOAD AGIM1,2 . GET INTO REG @D@C@BCBSAB2LO )@@G@@ GLBL . IMAG IN REG HERE @D@C@B GFLOAT OLP )@@G@@PDFM,AGIM1,AGIM1 'NO' . GET Y**2 @E@C@B GDBLE OPDL,AGRA3,AGLQ )@@G@@RL1 . GET REAL INTO A3-A4 @D@C@B GFLOAT OPDFM,AGRA3,AGRA3 'NLR )@@G@@O' . GET X**2 @C@C@B GFLOAT OPDFA,AGRA3,AGIM1 . GET SUM LS )@@G@@@C@C@B GGOTO CBSAB3 . GO CALL SQRT @D@C@BCBSAB1 GLBLT )@@G@@L . REAL PART IS IN REG@D@C@B GFLOAT OPDFM,ALU )@@G@@GRL1,AGRL1 'NO' . GET X**2 @E@C@B GDBLE OPDL,AGRA3,AGIM1 . LV )@@G@@GET IMAG INTO A3-A4 @D@C@B GFLOAT OPDFM,AGRA3,AGRA3 'NO' . LW )@@G@@GET Y**2 @C@C@B GFLOAT OPDFA,AGRA3,AGRL1 . GET SUM @D@C@BLX )@@G@@CBSAB3 GLBL . HERE TO CALL SQRT @C@C@B GSULY )@@G@@B BFSQRT . COMPUTE SQRT @D@C@B GGETGR AGRL2,2 . LZ )@@G@@ GET REG FOR RESULT @C@C@B GDBLE OPDS,AGRA3,AGRL2 . SAVE RMA )@@G@@ESULT @#@C@B GFIN . @D@C@B XGPOP . PMB )@@G@@OP OFF ARGUEMENT @F@C@B SET SDRLCX+SGDSGN,OFF,SGDCLS . SAY MC )@@G@@RESULT IS REAL @D@C@B GOTO GGTRET . RETURN TO XGEMD )@@G@@N @[@C@B. @^@C@B. SIGN(N) BIF @[@C@B. @B@C@BCBSIGNME )@@G@@ LABEL . TARGETING FOR SIGN BIF @#@C@B GNTR 2 .@F@C@B MF )@@G@@ LINK CBRLCX . CONVERT ARG TO REAL, IF IMAG @#@C@BCBSGN2MG )@@G@@ LABEL . @B@C@B CGCONV R,X7 R,X7 . SET X4 @#@C@BCBSGN3MH )@@G@@ LABEL . @B@C@B GOTO GGTRET . DONE @[@C@B. MI )@@G@@@F@C@B. COMPLEX INPUT TO SIGN, GIVE ERROR AND USE ONLY REAL PARTMJ )@@G@@@[@C@B. @#@C@BCBRLCX LLOC . @E@C@B IF SDRLCX,OFF,SGDCMK )@@G@@LS THEN,LJMP . ->REAL ALREADY @#@C@B LOCAL . @E@C@B SETML )@@G@@ SDRLCX,OFF,SGDCLS . USE ONLY REAL PART @#@C@B GEN . MM )@@G@@@^@C@B GFREE AGIM1 .@D@C@B EXERR EXERB1 LEVEL,2 . MN )@@G@@'REAL PART USED' @C@C@B JMP . ->RETURN MO )@@G@@@[@C@B. @[@C@B. @[@C@B. @B@C@BCSSIGN LABEL . STAGGING FORMP )@@G@@ SIGN BIF @^@C@B GNTR 2 . @G@C@B MOVE SGDAID+MQ )@@G@@DCGSLT,DCBCLN . SET RESULT TO FIXED BIN 35,0 @B@C@B GOTO GMR )@@G@@GTRET . EXIT @ @C@B/ . HBOUND LBOUND AND DIM@[@C@B. MS )@@G@@@[@C@B. @#@C@BCBTDIM LLOC . @#@C@B GNTR 2. @F@C@B MT )@@G@@ CGCONV DCBCSM R,X7 . CONVERTT TO FIXED BIN(17,0) @E@C@B MU )@@G@@ LOADA X3,SGDRBS . SAVE ADDR OF ARG. 2 @E@C@B STOMV )@@G@@RE X3,DCGSV2+8 . SAVE FOR RETURN TO XGEN @#@C@B XGPOP . MW )@@G@@@D@C@B LOAD X2,SGDIBS+1 . DIMENSIONALITY @E@C@B MX )@@G@@ STORE X2,DCGSV2+3 . SAVE FOR RETURN TO XGEN @E@C@B MOVMY )@@G@@E SGDAID+DCGSLT,DCBCSM . SET RESULT DATA TYPE @^@C@B LOAD X4,MZ )@@G@@0,I . @C@C@B GOTO GGTRET . RETURN @A@C@B/ . NA )@@G@@ MAX MIN AND MOD BIF'S@[@C@B. @D@C@BBFSMAX LLOC . NB )@@G@@ STAGING FOR MAX @F@C@B SET IGPLUS,ON,DGFLGZ . SENC )@@G@@T FLAG FOR 'JP' INSTRUCTION @D@C@B GOTO BFSMNG . COND )@@G@@NTINUE STAGING @F@C@BBFSMIN LLOC . ENTRY POINT FONE )@@G@@R STAGING FOR MIN @F@C@B SET IGPLUS,OFF,DGFLGZ . SET FLAG FOR NF )@@G@@'JN' INSTRUCTION @#@C@BBFSMNG LABEL . @#@C@B GNTR 2 .@C@C@BNG )@@G@@ LOAD X4,0,I . CLEAR X4 @D@C@B MOVE AGLNH )@@G@@BL,0,I . CLEAR AW FOR JUMPS @C@C@B LOADA X3,AGLBL . NI )@@G@@ SET AW TO USE@D@C@B STORE X3,DCGSV2+8 . SET ICODE REGNJ )@@G@@ X3 @C@C@B LINK CBRLCX . MAKE ARG REAL@F@C@B NK )@@G@@ ADD X7,DCGSLT,I . MOVE DOWN ONE STACK ELEMENT @D@C@B NL )@@G@@ LINK CBRLCX . MAKE ARG 2 REAL @C@C@B SUB X7,NM )@@G@@DCGSLT,I . RECOVER STACK@D@C@B IF SDFXFL,ON,SGDCLS THENNN )@@G@@,GGSAD5 . ->FLOAT @^@C@B LOAD X2,SGDPRE@F@C@B SUB X2,NO )@@G@@1,I . STAGING PREC 1 LESS THAN + PREC@ @C@B STORE X2,NP )@@G@@SGDPRE . @A@C@B LOAD X2,SGDPRE+DCGSLT . @^@C@B SUBNQ )@@G@@ X2,1,I . @A@C@B STORE X2,SGDPRE+DCGSLT . @ @C@B STONR )@@G@@RE X2,DGGPRE . @^@C@B GOTO GGSAD5 . @^@C@B/. MOD TARGENS )@@G@@TTING @[@C@B. @[@C@B. @[@C@B. @#@C@BBFTMOD LLOC . @#@C@BNT )@@G@@ GNTR 2 .@C@C@B LINK CBRLCX . MAKE ARG REALNU )@@G@@@F@C@B ADD X7,DCGSLT,I . MOVE DOWN ONE STACK ELEMENT NV )@@G@@@D@C@B LINK CBRLCX . MAKE ARG 2 REAL @C@C@B NW )@@G@@ SUB X7,DCGSLT,I . RECOVER STACK@B@C@B GOTO GGTAR2 . NX )@@G@@ ->MERGE@[@C@B. @[@C@B. @[@C@B. @^@C@B. MODNY )@@G@@ STAGING @#@C@BBFSMOD LLOC . @#@C@B GNTR 2 .@C@C@B NZ )@@G@@ LOAD A8,0,I . ASSUME FLOAT @C@C@B IF SDFXFL,ONOA )@@G@@ THEN,BFSMO1 . ->FLOAT @D@C@B LINK GGSSCL . SCALE TOB )@@G@@O SAME SCALE@D@C@B LOAD A8,DGGSCP . GET SCALE AND PRE OC )@@G@@@D@C@B SSA A8,9 . GET SIGNED SCALE @D@C@BBFSMO1OD )@@G@@ LABEL . MERGE WITH FLOAT @D@C@B ADD AOE )@@G@@8,SGDPRE . GET P2+MAX(Q1,Q2) @D@C@B LOAD A9,18,I . OF )@@G@@ ASSUME DECIMAL @D@C@B IF SDDCBN,OFF THEN,BFSMO2 . IS ITOG )@@G@@ DECIMAL @D@C@B LOAD A9,60,I . ASSUME FLOAT BIN OH )@@G@@@D@C@B IF SDFXFL,ON THEN,BFSMO2 . IS IT FLOAT BIN @D@C@B OI )@@G@@ LOAD A9,35,I . IT IS FIXED BIN @F@C@BBFSMO2 LABEL . OJ )@@G@@ MERGE HERE WITH MAX PRE IN A9 @E@C@B IF A9,GE,OK )@@G@@A8 THEN,BFSMO3 . IS COMPUTED PRE TOO BIG? @D@C@B LOAD A8,A9 .OL )@@G@@ YES,USE MAX PRE @#@C@BBFSMO3 LABEL . @E@C@B MOVOM )@@G@@E SGDAID+2*DCGSLT,SGDAID+DCGSLT . SET RESULT @D@C@B STORE AON )@@G@@8,SGDPRE+2*DCGSLT . SET NEW PRE @D@C@B MOVE SGDSCL+2*DCGSOO )@@G@@LT,DGGSCL . SET SCALE @E@C@B MOVE AGLBL,0,I . CLEAR WOP )@@G@@ORD FOR JUMPS @D@C@B GRTN 2 . RETURN TO XGEOQ )@@G@@N @E@C@B/ . CONVERSION BIF'S (BIN, DEC, FIX, FLT, PREC) OR )@@G@@@#@C@BCBCONV LABEL . @#@C@B GNTR 2 .@D@C@B LOAD A2,OS )@@G@@0,I . SET PRECISION TO 0 @B@C@B STORE A2,DGGSCP . OT )@@G@@ Q=0 @D@C@B LOAD A3,DXGNAR . GET NUMBER OF ARGS OU )@@G@@@E@C@B DIV A2,DCGSLT,I . DIVIDE BY STACK SIZE @D@C@BOV )@@G@@ LOAD X5,A2 . SAVE NUMBER OF ARGS@D@C@B GOTOW )@@G@@O *$,A2 . A2 IS AT LEAST 1 @C@C@B +CBCNV1 . OX )@@G@@ 1 ARG (X) @C@C@B +CBCNV2 . 2 ARGS OY )@@G@@(X,P) @D@C@B +CBCNV3 . 3 ARGS (X,P,Q) @[@C@BOZ )@@G@@. @[@C@B. @#@C@BCBCNV3 LABEL . @D@C@B LINK CBCNST . PA )@@G@@ GET CONSTANT Q @ @C@B STORE A8,DGGSCL . @#@C@BPB )@@G@@CBCNV2 LABEL . @D@C@B LINK CBCNST . GET CONSTANTTPC )@@G@@ P @B@C@B STORE A8,DGGPRE . SET P @#@C@BCBCNV1 LABPD )@@G@@EL . @D@C@B MOVE DGGCLS,SGDCLS . GET ATTR. OF X @D@C@BPE )@@G@@ LOAD X4,X5 . SAVE NUMBER OF ARGS@F@C@B ADDPF )@@G@@ X5,DXGARG . GET ADDRESS OF BRANCH TABLE @ @C@B LOAPG )@@G@@D X11,0,X5 . @^@C@B LINK 0,X11 . @I@C@B. PH )@@G@@ RETURN FROM SETTING PROPER DATA TYPE FOR RESU @D@C@BPI )@@G@@ CGCONV DGGSTK R,X7 . CONVERT ARGUMENT @#@C@B GENPJ )@@G@@ . @^@C@B GMOVE 2,1 . @#@C@B XGPOP . @D@C@B PK )@@G@@ LOAD X4,0,I . SET NO ICODE TOGEN @E@C@B GOTO GGTPL )@@G@@RET . SET RESULT STACK ENTRY @[@C@B. @[@C@B. @[@C@BPM )@@G@@. @[@C@B. @[@C@B. @D@C@BBFDECT* EQU $-1 . DPN )@@G@@ECIMAL ROUTINES @C@C@B +FGDEC1 . DECIMAL (X) PO )@@G@@@C@C@B +FGDEC1 . DECIMAL(X,P) @D@C@B +FGPP )@@G@@DEC1 . DECIMAL(X,P,Q) @[@C@B. @^@C@BBFBINT* EQUPQ )@@G@@ $-1 . @C@C@B +FGBIN1 . BINARY (X) @C@C@BPR )@@G@@ +FGBIN1 . BINARY (X,P) @C@C@B +FGBIN1 .PS )@@G@@ BINARY(X,P,Q)@[@C@B. @^@C@BBFFLTT* EQU $-1 . PT )@@G@@@C@C@B +FGFLT1 . FLOAT (X) @C@C@B +FGPU )@@G@@FLT2 . FLOAT (X,P) @E@C@B. +FGFLT3 . PV )@@G@@ FLOAT(X,P,Q) ILLEGAL @[@C@B. @^@C@BBFFIXD* EQU $-1 . PW )@@G@@@C@C@B +FGFIX1 . FIXED (X) @C@C@B +FGPX )@@G@@FIX2 . FIXED (X,P) @C@C@B +FGFIX2 . PY )@@G@@ FIXED (X,P,Q)@[@C@B. @^@C@BBFPREC* EQU $-1 . @C@C@B PZ )@@G@@ +FGPRC1 . PRECISION(X) @D@C@B +FGPRC2 . QA )@@G@@ PRECISION(X,P) @D@C@B +FGPRC3 . PQB )@@G@@RECISION(X,P,Q) @[@C@B. @#@C@BFGDEC1 LABEL . @E@C@B SETQC )@@G@@ SDDCBN,OFF,DGGCLS . SET RESULT TO DECIMAL @D@C@B GOTO *BFQD )@@G@@PREC,X4 . DO PRECISION PART @[@C@B. @#@C@BFGBIN1 LABEL . QE )@@G@@@E@C@B SET SDDCBN,ON,DGGCLS . SET RESULT TO BINARY @C@C@BQF )@@G@@ GOTO *BFPREC,X4 . DO PRECISION @[@C@B. @#@C@BFGFLT1QG )@@G@@ LABEL . @B@C@B LOAD A7,6,I . SET P=6@E@C@B QH )@@G@@ IF SDDCBN,OFF,DGGCLS THEN,FGFLT1X . ->NOT BINARY@F@C@B LOAQI )@@G@@D A7,27,I . SET FLOAT BINARY PRECCSION @#@C@BFGFLT1X LABQJ )@@G@@EL . @B@C@B STORE A7,DGGPRE . SET P @#@C@BFGFLT2 LABQK )@@G@@EL . @A@C@B SET SDFXFL,ON,DGGCLS . @C@C@B LJMP . QL )@@G@@ ->RETURN @[@C@B. @[@C@B. @#@C@BFGFIX1 LABQM )@@G@@EL . @D@C@B LOAD A7,5,I . SET FIXED DEC P @C@C@BQN )@@G@@ IF SDDCBN,OFF,DGGCLS THEN,FGTFX2 . @D@C@B LOAD A7,QO )@@G@@35,I . SET FIXED BIN PP @#@C@BFGTFX2 LABEL . @ @C@B QP )@@G@@ STORE A7,DGGPRE . @#@C@BFGFIX2 LABEL . @A@C@B SET SDFQQ )@@G@@XFL,OFF,DGGCLS . @C@C@B LJMP . ->RETURN QR )@@G@@@[@C@B. @#@C@BFGPRC3 LABEL . @E@C@B IF SDFXFL,OFF,DGGCQS )@@G@@LS THEN,LJMP . ->FIXED RESULT @[@C@B. @F@C@B. Q SHOULD NOT BE EXPRESQT )@@G@@SED FOR FLOAT (EXCEPT IF ZERO)! ERROR? @[@C@B. @D@C@B MOVQU )@@G@@E DGGSCL,0,I . IGNORE Q FOR FLOAT @#@C@BFGPRC2 LABEL . @#@C@BQV )@@G@@FGPRC1 LABEL . @#@C@B LJMP . @[@C@B. @[@C@B. @[@C@BQW )@@G@@. @E@C@B. ROUTINE TO GET CONSTANT VALUE FROM STACK QX )@@G@@@[@C@B. @#@C@BCBCNST LOCAL . @G@C@B IF SDVRCN,ON,SGDCLQY )@@G@@S THEN,CBCNS8 . -> CONSTANT, SO FAR OK @E@C@B EXERR ERRG08 LEQZ )@@G@@VEL,2 . ARG SHOULD BE CONSTANTT @B@C@B. RA )@@G@@ 10 USED@#@C@BCBCNS6 LABEL . @D@C@B LOAD A8,10,I . RB )@@G@@ SET DEFAULT OF 10 @^@C@B GOTO CBCNS7 . @F@C@BCBCNS8 LABRC )@@G@@EL . SET IS SMALL INTEGER CONSTANT @F@C@B IF RD )@@G@@ SDRLCX,OFF,SGDCLS THEN,CBCNS1 . ->REAL CONSTTNT @C@C@B EXERE )@@G@@RR ERRG10 LEVEL,1 . USE REAL PART @]@C@B GEN@ @C@B GSERF )@@G@@T AGRL1,AGIM1 . @#@C@BCBCNS1 LABEL . @ @C@B USING SDSECT,X4RG )@@G@@ . @ @C@B LSDP X4,SGDRSD . @ @C@B LOAD A2,SDLCOFRH )@@G@@,X4 . @^@C@B USING WORD,A2 .@E@C@B IF SDFXFL,ON,SDCLSRI )@@G@@1 THEN,CBCNS9 . -> FLOAT CONST@^@C@B SUB A2,2,I . @F@C@B RJ )@@G@@ IF W1,NZERO THEN,CBCNS9 . -> NOT FIXED BINARYCONST @E@C@B RK )@@G@@ ADD A2,1,I . POINT TO FIXED BINARY @G@C@B IF RL )@@G@@ SGDSCL,NZERO THEN,CBCNS3 . ->NOT INTEGER FIXED BINARY @F@C@B RM )@@G@@ LOAD A8,W1 . FINALLY GET FIXEDDBINARY VALUE @^@C@B RN )@@G@@ GOTO CBCNS4 . @#@C@BCBCNS9 LABEL . @D@C@B EXERR ERRG09 LERO )@@G@@VEL,2 . NON INTEGER VALUE @D@C@B GOTO CBCNS6 , SRP )@@G@@ET DEFAULT OF 10 @#@C@BCBCNS3 LABEL . @C@C@B LOAD A8,W1 . RQ )@@G@@ GET VALUE @C@C@B LOAD A3,SGDSCL . SET SCARR )@@G@@LE @D@C@B SSA A8,0,A3 . SCALE TO INTEGER @D@C@BRS )@@G@@CBCNS4 LABEL . CHECK VALID VALUE @E@C@B IF RT )@@G@@ A8,GT,0177777,I THEN,CBCNS9 . ->NO GOOD VALUE@E@C@B IF SGDRU )@@G@@SGN,OFF,SGDCLS THEN,CBCNS7 . ->NOT COMPL. @C@C@B LOADN A8,A8 .RV )@@G@@ SWITCH SIGN @D@C@BCBCNS7 LABEL . SET RETRW )@@G@@URN VALUE @#@C@B GENM @^@C@B GFREE AGRL1 . @^@C@BRX )@@G@@ GFIN 'POP' @G@C@B JMP . ->RETURRY )@@G@@N, VALUE IN A8, STACK POPPED @B@C@B/ . REAL AND IMAGINARY BIF'S ANRZ )@@G@@D PV'S@[@C@B. @[@C@B. @#@C@BCBTREL LABEL . @#@C@B GNTSA )@@G@@R 2. @E@C@B MOVE DGFLGZ,SGDCLS . SET FLAGS FOR ICODER SB )@@G@@@A@C@B SET SDRLCX,OFF,SGDCLS @D@C@B LOAD X4,0,I . SC )@@G@@ SET ICODE TYPE @^@C@B GOTO GGTRET . @#@C@B/. SD )@@G@@ ROUND @[@C@B. @[@C@B. @#@C@BCBSRON LABEL . @^@C@B SE )@@G@@ GNTR 2 . @E@C@B LINK CBRLCX . SET CONSTANT SF )@@G@@TO REAL @D@C@B LINK CBCNST . GET THE CONSTANT SG )@@G@@@E@C@B CGCONV R,X7 R,X7 . SET CONSTANTS STRAIGHT @C@C@BSH )@@G@@ LOAD A7,SGDSCP . GET SCALE,PRE@E@C@B SSA ASI )@@G@@7,9 . GET SIGN EXTENDED SCALE @G@C@B ANU A8,A7 .SJ )@@G@@ GET N-Q INTO A9 ************ @C@C@B LOADM ASK )@@G@@8,A8 . GET ABS(N) @D@C@B LOAD A6,SGDPRE . GSL )@@G@@ET PRE FOR TESTING@D@C@B ADD A6,1,I . ROUND UPS THESM )@@G@@ PRE @G@C@B SET IGPLUS++IGRLCX++IGMPDV,OFF,DGFLGZ . ASSUME REALSN )@@G@@ AND SCALING@E@C@B IF SDRLCX,OFF,SGDCLS THEN,CBSRO1 . IS IT REALSO )@@G@@? @C@C@B SET IGRLCX,ON,DGFLGZ . SAY COMPLEX @#@C@BCBSRO1SP )@@G@@ LABEL . @E@C@B IF SDDCBN,OFF,SGDCLS THEN,RONDF1 . IS IT DECISQ )@@G@@MAL? @E@C@B IF SDFXFL,ON,SGDCLS THEN,RONBF1 . IS IT FLOAT BIN? SR )@@G@@@[@C@B. @^@C@B. BIN FIXED HERE @G@C@B. COMPUTESS )@@G@@: TRUNC(A*2^(N-Q-1)+1/2)/2^(N-Q-1) @F@C@B. ST )@@G@@ =TRUNC(A*2^(N-Q)+1)/2^(N-Q) @[@C@B. @D@C@B SU )@@G@@ LOAD A3,34,I . SET UP FOR CHECKING@D@C@B LINK RSV )@@G@@ONCHK . CHECK IF ARG OK @C@C@B LOADN A9,A9 . SW )@@G@@ GET -(N-Q) @E@C@B IF A9,LT,0,I THEN,RONEND . ROUND AT EXISX )@@G@@STING DIGIT?@F@C@B IF A9,NE,0,I THEN,RONBX3 . INITIAL SHIFTING TSY )@@G@@O BE DONE @E@C@B SET IGPLUS,ON,DGFLGZ . SAY NO INITIAL SHISZ )@@G@@FT @D@C@BRONBX3 LABEL . SET UP SHIFT COUNTS@E@C@BTA )@@G@@ STORE A9,AGX0OF . SET INITIAL SHIFT COUNT @E@C@B TB )@@G@@ MOVE AGXTMP,AGXR0 . SET TEMP ADDRESS WORD @E@C@B ADDTC )@@G@@ A9,1,I . SHIFT BACK ONE EXTRA @E@C@B STORE ATD )@@G@@9,AGX0OF . SET SHIFT BACK COUNT @#@C@B GENM . @D@C@BTE )@@G@@ GBOFF RONBX6,IGRLCX . IS IT COMPLEX? @D@C@B GIFTF )@@G@@R RONBX4,AGIM1 . IS IMAG IN REG? @D@C@B GLOAD AGIM1,ITG )@@G@@ . GET IMAG INTO REG @#@C@BRONBX4 GLBL . @E@C@B GBOTH )@@G@@N RONBX5,IGPLUS . INITIAL SHIFT TO BE DONE?@E@C@B GSHIN OTI )@@G@@PSSA,AGIM1,AGXTMP 'NO' . SHIFT TO SCALE @E@C@BRONBX5 GLBL . TJ )@@G@@ HERE IF NO INITIAL SHIFT @D@C@B GINST OPLA,AGRA3,AGTK )@@G@@RR12 'NO' . GET A ONE @D@C@B GINST OPTP,AGRX0,AGIM1 'NO' .SETL )@@G@@E IF POS @E@C@B GINST OPLNA,AGRA3,AGRA3 'NO' . GET -1 IF NETM )@@G@@G @D@C@B GINST OPAA,AGIM1,AGRA3 'NO' . ADD IN +- 1/2@C@C@BTN )@@G@@ GSHIN OPSSA,AGIM1,1,I 'NO' . TRUNCATE@D@C@B GSHIN OTO )@@G@@PLSSC,AGIM1,AGXR0 'NO' . RESCALE @A@C@BRONBX6 GLBL . HERE FOR REALTP )@@G@@ PART @D@C@B GIFR RONBX7,AGRL1 . IS REAL PART IN REG@D@C@BTQ )@@G@@ GLOAD AGRL1,1 . GET IT INTO REG @B@C@BRONBX7 GLBTR )@@G@@L . REAL PART NOW IN REG @G@C@B GBON RONBX8,IGPLUS . ITS )@@G@@NITIAL SHIFT NEEDED FOR REAL PART? @C@C@B GSHIN OPSSA,AGRL1,ATT )@@G@@GXTMP 'NO' . SCALE@#@C@BRONBX8 GLBL . @D@C@B GINST OPLA,AGTU )@@G@@RA3,AGRR12 'NO' . GET A ONE @E@C@B GINST OPTP,AGRX0,AGRL1 'NTV )@@G@@O' . IS REAL PART POS @C@C@B GINST OPLNA,AGRA3,AGRA3 'NO' . TW )@@G@@GET -1@C@C@B GINST OPAA,AGRL1,AGRA3 'NO' . ADD +-1@C@C@B TX )@@G@@ GSHIN OPSSA,AGRL1,1,I 'NO' . TRUNCATE@D@C@B GSHIN OPLSSC,TY )@@G@@AGRL1,AGXR0 'NO' . RESCALE @#@C@B GFIN . @A@C@BRONEND LABTZ )@@G@@EL . HERE TO FINISH UP @#@C@B GEN . @E@C@B GMOVE +UA )@@G@@2,1 . MOVE ARG ONTO BIF SGD @A@C@B XGPOP . POP OFFUB )@@G@@ STACK TOP @D@C@B LOAD X4,0,I . SET TO ONLY ICODE UC )@@G@@@B@C@B GOTO GGTRET . RETURN @D@C@BRONBF1 LABEL . UD )@@G@@ FLOAT BIN HERE @[@C@B. @G@C@B. COMPUTE: UE )@@G@@ TRUNC(A*2^(N-Q-1)+1/2)/2^(N-Q-1) @[@C@B. @C@C@BUF )@@G@@ LOAD A3,59,I . SET FOR CHECK@C@C@B LINK RUG )@@G@@ONCHK . GO CHECK ARG @E@C@B IF A9,EQ,0,I THEN,RONDF4 . UH )@@G@@IS ANY SHIFTING NEEDED @F@C@B ADD A9,02000,I . GET EXPUI )@@G@@ONENT FOR FLOAT NUMBER @D@C@B SLB A9,1 . MAKE ROUJ )@@G@@OM FOR 1 @D@C@B ADD A9,1,I . GET SET FOR 020004 UK )@@G@@@F@C@B STORE A9,AGX0OF . PUT IT WHERE IT CAN BE GOTTEN UL )@@G@@@#@C@B GENM . @F@C@B GINST OPLA,AGRA2,AGXR0,U 'NO' .UM )@@G@@ GET EXPONENT INTO REG @F@C@B GSHIN OPLDSL,AGRA1,59,I 'NO' . UN )@@G@@SHIFT TO PROPER POSITION@E@C@B GFIN . SCALINGUO )@@G@@ CONSTANT SET UP @C@C@B LOADA A3,A1 . POINT TO A1 UP )@@G@@@E@C@B STORE A3,AGX0OF . SET TO POINT TO CONSTANT @E@C@BUQ )@@G@@ GOTO RONDF5 . GO MERGE WITH DECIMAL @E@C@BRONDF1UR )@@G@@ LABEL . HERE FOR DECIMAL ROUNDING@[@C@B. @G@C@BUS )@@G@@. COMPUTE: TRUNC(A*10^(N-Q-1)+SIGN(A)*.5)/10^(N-Q-1) UT )@@G@@@[@C@B. @D@C@B LOAD A3,17,I . SET FOR CHECK . UU )@@G@@@C@C@B LINK RONCHK . CHECK PRE,ARG@D@C@B LOAUV )@@G@@DM A3,A9 . GET MAG OF N-Q-1 @G@C@B ADD A3,A3 .UW )@@G@@ GET 2*N-Q-1 FOR INDEX INTO TABLE @E@C@B LOADA AUX )@@G@@8,KKPW10-2,A3 . POINT TO POWER OF 10 @C@C@B STORE A8,AGX0UY )@@G@@OF . SET FOR ICODE@D@C@B IF A9,NE,0,I THEN,RONDF5 . NEED SUZ )@@G@@CALING? @D@C@BRONDF4 LABEL . HERE IF NO SCALING VA )@@G@@@D@C@B SET IGPLUS,ON,DGFLGZ . SAY NO SCALING @B@C@B VB )@@G@@ GOTO RONDF6 . MERGE @E@C@BRONDF5 LABEL . VC )@@G@@ CHOOSE DIVIDE OR MULT @D@C@B IF A9,GE,1,I THEN,RONDF6 . VD )@@G@@MUST MULTIPLY @D@C@B SET IGMPDV,ON,DGFLGZ . SAY TO DIVIDVE )@@G@@E @ @C@BRONDF6 LABEL . START CODEGEN@#@C@B GENM . @C@C@BVF )@@G@@ GBOFF RONDX1,IGRLCX . IS IT REAL? @D@C@B GIFR RVG )@@G@@ONDF7,AGIM1 . IS IMAG IN REG? @C@C@B GLOAD AGIM1,2 . VH )@@G@@ GET INTO REG @E@C@BRONDF7 GLBL . IMAG PART NOWVI )@@G@@ IN REG @D@C@B GBON RONDF9,IGPLUS . SCALING NEEDED? VJ )@@G@@@D@C@B GBON RONDF8,IGMPDV . MULTIPLY OR DIVIDE?@F@C@B VK )@@G@@ GFLOAT OPDFM,AGIM1,AGXR0 'NO' . MULTIPLY BY SCALE FACTOR@E@C@B VL )@@G@@ GGOTO RONDF9 . FINISHED FIRST SCALING @D@C@BRONDF8 GLBVM )@@G@@L . HERE TO DIVIDE @D@C@B GFLOAT OPDFD,AVN )@@G@@GIM1,AGXR0 'NO' . SCALE DOWN @D@C@BRONDF9 GLBL . HVO )@@G@@ERE TO ADD .5 @^@C@B GLIT 1 . @B@C@B DL AVP )@@G@@3,KK5000 . GET .5 @D@C@B GINST OPTP,AGRX0,AGIM1 'NO' . SVQ )@@G@@EE IF POS @D@C@B GDBLE OPDLN,AGRA3,AGRA3 'NO' . GET -.5 VR )@@G@@@C@C@B GFLOAT OPDFA,AGIM1,AGRA3 'NO' . ADD .5@D@C@B GFLVS )@@G@@OAT OPDFA,AGIM1,AGXUNZ 'NO' . TRUNCATE @D@C@B GBON RONDX1,VT )@@G@@IGPLUS . ANY SCALING NEEDED?@D@C@B GBON RONDF0,IGMPDV . MVU )@@G@@ULT OR DIVIDE? @D@C@B GFLOAT OPDFD,AGIM1,AGXR0 'NO' . UNSCALVV )@@G@@E @C@C@B GGOTO RONDX1 . NOW DO REAL @B@C@BRONDF0VW )@@G@@ GLBL . HERE TO UNDO DIVISION @D@C@B GFLOAT OPDFM,AGIM1,AVX )@@G@@GXR0 'NO' . UNSCALE @D@C@BRONDX1 GLBL . HERE FOVY )@@G@@R REAL PART @D@C@B GBAL CDXLDR . LOAD REAL INTO REG VZ )@@G@@@F@C@B GBON RONDX3,IGPLUS . ANY INITIAL SCALING NEEDED? WA )@@G@@@D@C@B GBON RONDX2,IGMPDV . MULT OR DIVIDE @C@C@B WB )@@G@@ GFLOAT OPDFM,AGRL1,AGXR0 'NO' . SCALE @ @C@B GGOTO RONDX3 WC )@@G@@. @F@C@BRONDX2 GLBL . HERE TO DIVIDE FOR SCALINWD )@@G@@G @C@C@B GFLOAT OPDFD,AGRL1,AGXR0 'NO' . SCALE @D@C@BRONDX3WE )@@G@@ GLBL . HERE TO DO TRUNC @^@C@B GLIT 1WF )@@G@@ . @B@C@B DL A3,KK5000 . GET .5 @D@C@B GINWG )@@G@@ST OPTP,AGRX0,AGRL1 'NO' . SEE IF POS @D@C@B GDBLE OPDLN,AWH )@@G@@GRA3,AGRA3 'NO' . GET -.5 @D@C@B GFLOAT OPDFA,AGRL1,AGRA3 'WI )@@G@@NO' . ADD +- .5 @D@C@B GFLOAT OPDFA,AGRL1,AGXUNZ 'NO' . TRUNCWJ )@@G@@ATE @C@C@B GBON RONDX5,IGPLUS . ALL DONE? @D@C@B WK )@@G@@ GBON RONDX4,IGMPDV . MULTIPLY OR DIVIDE?@D@C@B GFLOAT OWL )@@G@@PDFD,AGRL1,AGXR0 'NO' . UNSCALE @C@C@B GGOTO RONDX5 . WM )@@G@@ ALL DONE @E@C@BRONDX4 GLBL . HERE TO UNSCAWN )@@G@@LE DIVIDE @D@C@B GFLOAT OPDFM,AGRL1,AGXR0 'NO' . UNSCALE WO )@@G@@@E@C@BRONDX5 GLBL . MERGE HERE WHEN DONE @#@C@BWP )@@G@@ GFIN . @E@C@B GOTO RONEND . MERGE WITH BIWQ )@@G@@N FIXED @F@C@BRONCHK LLOC . HERE TO CHECK COMPUTED PRE AND WR )@@G@@ARG SIZE @ @C@B USING WORD,A3 . @D@C@B IF A6,GE,WS )@@G@@W1U+2 THEN,RONCH1 . NEW PRE TOO BIG?@D@C@B STORE A6,SGDPRE . WT )@@G@@ ROUND UPS THE PRE @#@C@BRONCH1 LABEL . @D@C@B IF A8,LE,WU )@@G@@W1U THEN,LJMP . ARG SMALL ENOUGH? @D@C@B LOCAL . WV )@@G@@ CALL FOR ERROR MSG @F@C@B EXERR EXROUN LEVEL,2 . ARG TO WW )@@G@@ROUND TOO BIG. ONE USED @D@C@B LOAD A9,1,I . GET REPWX )@@G@@LACEMENT ONE@C@C@B SUB A9,A7 . GET N-Q AGAIN@B@C@BWY )@@G@@ JMP . RETURN @A@C@B/ . FLOOR, CEWZ )@@G@@IL AND TRUNC@[@C@B. @[@C@B. @#@C@B. STAGING @[@C@B. XA )@@G@@@D@C@B. ON OUTPUT, X4 HAS THE FOLLOWING VALUES: @[@C@B. XB )@@G@@@^@C@B. X4 X Q @ @C@B. 0 FLOAT ANY @^@C@BXC )@@G@@. 1 FIXED 0 @ @C@B. 2 FIXED BIN <0 @ @C@B. XD )@@G@@ 3 FIXED DEC <0 @ @C@B. 4 FIXED BIN >0 @ @C@B. XE )@@G@@ 5 FIXED DEC >0 @[@C@B. @#@C@BCBSFLR LABEL . @#@C@BCBSCELXF )@@G@@ LABEL @#@C@BCBSTRN LABEL . @#@C@B GNTR 2 .@E@C@B XG )@@G@@ MOVE SGDAID+DCGSLT,SGDAID . SET ATTR OF RESULT @D@C@B LOAXH )@@G@@D X4,0,I . ASSUME FLOAT RETURN@D@C@B IF SDFXFL,ONXI )@@G@@,SGDCLS THEN,CBSTRX . -> FLOAT@D@C@B STORE X4,SGDSCL+DCGSLT . SXJ )@@G@@ET RESULT Q=0 @B@C@B ADD X4,1,I . X4=1 @D@C@BXK )@@G@@ IF SGDSCL,ZERO THEN,GGTRET . ->FIXED Q=0 @[@C@B. @B@C@BXL )@@G@@. COMPUTE Q=MIN(N, MAX(P-Q+1,1) ) @[@C@B. @B@C@B LOAXM )@@G@@DN A7,SGDSCP . -Q @^@C@B SSA A7,9 @B@C@B XN )@@G@@ LOAD A9,A7 . SAVE -Q@B@C@B ADD A7,SGDPRE . XO )@@G@@ P-Q @B@C@B IF A7,LT,0,I THEN,CBSCL1 . @^@C@B XP )@@G@@ LOAD A7,0,I . @C@C@BCBSCL1 LABEL . MAX(P-Q,0) XQ )@@G@@@^@C@B ADD A7,1,I . @C@C@B LOAD A8,18,I . SXR )@@G@@ET MAX P @C@C@B IF SDDCBN,OFF,SGDCLS THEN,CBSCL2 . @^@C@BXS )@@G@@ LOAD A8,35,I .@#@C@BCBSCL2 LABEL . @B@C@B IF A7,XT )@@G@@LT,A8 THEN,CBSFL5 . @^@C@B LOAD A7,A8 . @C@C@BCBSFL5 LABXU )@@G@@EL . A7=PRECISION @A@C@B STORE A7,SGDPRE+DCGSLXV )@@G@@T . @B@C@B ADD X4,1,I . X4=2 @C@C@B STOXW )@@G@@RE A9,AGX0OF . ASSUME Q<0 @F@C@B IF SDDCBN,OFF,SGDCXX )@@G@@LS THEN,CBSFL3 . ->DECIMAL DATA @B@C@B IF A9,GE,0,I THEN,XY )@@G@@GGTRET . @E@C@B STOREN A9,DCGSV2+3 . SET TO RETURN Q TO XZ )@@G@@ICODE @B@C@B ADD X4,2,I . X4=4 @C@C@B ADDYA )@@G@@ A9,36,I . GET 36-Q @D@C@B STORE A9,AGX0OF . YB )@@G@@ SET SHIFT FACTOR @^@C@B GOTO GGTRET . @#@C@BCBSFL3 LABYC )@@G@@EL . @B@C@B ADD X4,1,I . X4=3 @B@C@B IF YD )@@G@@ A9,GE,0,I THEN,CBSFL4 . Q<0@^@C@B LOADN A9,A9 . @B@C@B YE )@@G@@ ADD X4,2,I . X4=5 @#@C@BCBSFL4 LABEL . @E@C@B YF )@@G@@ LOADA A8,KKPW10-2 . POINT TO 10**(ABS(Q)) @^@C@B ADDYG )@@G@@ A8,A9 . @C@C@B ADD A8,A9 . 2*Q IS OFFSET@ @C@BYH )@@G@@ STORE A8,AGX0OF . @C@C@B GOTO GGTRET . -YI )@@G@@>RETURN @D@C@BCBSTRX LABEL . FLOAT OPERATION YJ )@@G@@@ @C@B LOADA A7,KK9999 . @ @C@B STORE A7,AGX0OF . YK )@@G@@@^@C@B GOTO GGTRET . @[@C@B. @[@C@B. @[@C@B/. @^@C@BYL )@@G@@. ICODE FOR SIGN@[@C@B. @#@C@BCBSGFR GLBL . @B@C@B YM )@@G@@ GSHIN OPDLSC,AGRA1,AGRL1 . @^@C@B GLIT 1 . @^@C@BYN )@@G@@ SSA A1,34 .@ @C@B GGETGR AGRL2,1 . @A@C@B YO )@@G@@ GINST OPLA,AGRL2,AGRA1 . @^@C@B GFIN 'POP' .@#@C@BCBSGBRYP )@@G@@ GLBL . @D@C@B GIFR CBSGB1,AGRL1 . IF RL1 IN REG? YQ )@@G@@@ @C@B GGETGR AGRL2,1 . @B@C@B GSHIN OPLSC,AGRL2,YR )@@G@@AGRL1 . @B@C@B GGOTO CBSGB2 . MERGE @C@C@BCBSGB1YS )@@G@@ GLBL . RL1 IS IN REG@B@C@B GSHIN OPLSC,AYT )@@G@@GRL1,AGRL1 'NO' . @ @C@B GSET AGRL2,AGRL1 .@#@C@BCBSGB2 GLBYU )@@G@@L . @A@C@B GSHIN OPSSA,AGRL2,34,I .@^@C@B GFIN 'YV )@@G@@POP' .@[@C@B. @^@C@B. ICODES FOR ABS@[@C@B. @C@C@B YW )@@G@@ GMODE 'M' . PACK ICODES TOGETHER @#@C@BCBABFR GLBL . @ @C@BYX )@@G@@ GIFR CBABF2,AGRL1 . @ @C@B GGETGR AGRL2,2 . @A@C@BYY )@@G@@ GDBLE OPDLM,AGRL2,AGRL1 . @^@C@B GFIN 'POP' @#@C@BYZ )@@G@@CBABF2 GLBL . @C@C@B GDBLE OPDLM,AGRL1,AGRL1 'NO' . ABS ZA )@@G@@@ @C@B GSET AGRL2,AGRL1 . @^@C@B GFIN 'POP' @[@C@BZB )@@G@@. @#@C@BCBABBR GLBL @ @C@B GIFR CBABB2,AGRL1 . @^@C@BZC )@@G@@ GGETGR AGRL2,1 @A@C@B GINST OPLMA,AGRL2,AGRL1 @^@C@BZD )@@G@@ GFIN 'POP' @#@C@BCBABB2 GLBL . @B@C@B GINST OPLZE )@@G@@MA,AGRL1,AGRL1 'NO' @ @C@B GSET AGRL2,AGRL1 .@E@C@B ZF )@@G@@ GFIN 'POP' . POP STACK AND RETURN @[@C@B. @F@C@BZG )@@G@@. ICODE FOR HBOUND,LBOUND & DIM @[@C@BZH )@@G@@. @#@C@BCBDIM GLBL . @E@C@B GINST OPLA,AGRA3,AGRL1,U ZI )@@G@@ . DV OF ARGUMENT ARRAY@C@C@B GINST OPLA,AGRA2,AGPTX3 . ARG2ZJ )@@G@@ ->A2 @^@C@B GSUB 'BILTN' @^@C@B GLITRG A9 . @^@C@BZK )@@G@@ GGETGR AGRL2 @A@C@B GINST OPLA,AGRL2,AGRA3 . @^@C@BZL )@@G@@ GFIN 'POP' @[@C@B. @D@C@B. ZM )@@G@@ ICODE FOR MAX/MIN @[@C@B. @#@C@B GMODE 'M'@#@C@BBFFMINZN )@@G@@ GLBL @C@C@B GIFR BFFMX1,AGRL2 . SET IN REG @^@C@BZO )@@G@@ GLOAD AGRL2,2 @#@C@BBFFMX1 GLBL @C@C@B GDBLE OPDZP )@@G@@L,AGRA3,AGRL2 'NO' . DL A3,Y@C@C@B GFLOAT OPDFAN,AGRA3,AGRL1 'ZQ )@@G@@NO' . A3=Y-X@F@C@B GBON BFFMX5,IGPLUS . SHOULD IT BE A 'JPZR )@@G@@' OR A 'JN'?@H@C@B GCJMP OPJN,AGRA3,AGPTX3 . GENERATE A 'JN' FOZS )@@G@@R THE 'MIN' FUNCTION @E@C@B GGOTO BFFMX6 . CONTINZT )@@G@@UE CODE GENERATION@#@C@BBFFMX5 GLBL . @H@C@B GCJMP OPJP,AGRAZU )@@G@@3,AGPTX3 . GENERATE A 'JP' FOR THE 'MAX' FUNCTION @#@C@BBFFMX6 GLBZV )@@G@@L . @D@C@B GDBLE OPDL,AGRL2,AGRL1 . SWITCH X AND Y @E@C@BZW )@@G@@ GGOTO BFFMX2 . CONTINUE CODE GENERATION @D@C@BBFBMINZX )@@G@@ GLBL . BINARY MAX AND MIN @ @C@B GIFR BFFZY )@@G@@MX3,AGRL2 @^@C@B GLOAD AGRL2,1 @#@C@BBFFMX3 GLBL @B@C@BZZ )@@G@@ GINST OPLA,AGRA3,AGRL2 'NO' . @B@C@B GINST OPANA,AGRAA )@@G@@A3,AGRL1 'NO' . @F@C@B GBON BFFMX7,IGPLUS . SHOULD IT BEAB )@@G@@ A 'JP' OR A 'JN'?@H@C@B GCJMP OPJN,AGRA3,AGPTX3 . GENERATE A 'AC )@@G@@JN' FOR THE 'MIN' FUNCTION @E@C@B GGOTO BFFMX8 . AD )@@G@@CONTINUE CODE GENERATION@#@C@BBFFMX7 GLBL . @H@C@B GCJMP OPJAE )@@G@@P,AGRA3,AGPTX3 . GENERATE A 'JP' FOR THE 'MAX' FUNCTION @#@C@BBFFMX8AF )@@G@@ GLBL . @A@C@B GINST OPLA,AGRL2,AGRL1 . @D@C@BBFFMX2 GLBAG )@@G@@L . CLEAN UP EVERYTHING@ @C@B GLABEL AGPTX3 AH )@@G@@. @F@C@B GAPPN BFMINMORE . SEE IF ANY MORE MAX AND MIN INNARAI )@@G@@G @C@C@B GSET AGRL2,AGRL1 . MOVE ANS TO SLOT @#@C@BBFFMX4AJ )@@G@@ GLBL . @^@C@B GFIN 'POP' . @H@C@BBFMINMORE GLBL . AK )@@G@@ SET IF ANY MORE IN LST @ @C@B LOAAL )@@G@@D A3,DXGNAR . @ @C@B SUB A3,DCGSLT,I . @D@C@B IF AM )@@G@@ A3,LE,DCGSLT,I THEN,BFMIN9 . --> DONE@ @C@B STORE A3,DXGNARAN )@@G@@ . @A@C@B SET DCGRPT,ON,DCGFLG . @D@C@B SETL A4,5AO )@@G@@,I . IGNORE NEXT ICODE @#@C@BBFMIN8 LABEL . @#@C@B AP )@@G@@ GETC . @^@C@B LOOP A4,BFMIN8 @#@C@B LJMP @#@C@BAQ )@@G@@BFMIN9 LABEL. @C@C@B XGPOP . RESET STACK AR )@@G@@@B@C@B MOVE SGDAID+DCGSLT,SGDAID . @#@C@B LJMP . AS )@@G@@@[@C@B. @E@C@B. REAL AND IMAG BIFS AT )@@G@@& PV'S@[@C@B. @#@C@B GMODE 'M'@#@C@BCBIMAG GLBL @C@C@BAU )@@G@@ GBON CBIMG1,SDRLCX .->COMPLEX ARG @#@C@BCBREL GLBL AV )@@G@@@B@C@B GBOFF CBREL1,SDRLCX . ->REAL @D@C@B GFREE AGIAW )@@G@@M1 . FREE IMAG PART @#@C@BCBREL1 GLBL . @^@C@B AX )@@G@@ GMOVE +2,1 . @^@C@B GFIN 'POP' . @#@C@BCBIMG GLBL AY )@@G@@@ @C@B GBON CBIMG1,SDRLCX @C@C@B GSET AGIM1,AGDZRO . AZ )@@G@@ SET IMAG TO 0@#@C@BCBIMG1 GLBL . @^@C@B GFREE AGRL1 . BA )@@G@@@ @C@B GSET AGRL1,AGIM1 . @^@C@B GGOTO CBREL1 . @[@C@BBB )@@G@@. @[@C@B. @[@C@B. @[@C@B. @#@C@BCBCPLF GLBL . @D@C@BBC )@@G@@ GIFR CBCP10,AGRL1 . IMAG PART IN REG? @ @C@B GGEBD )@@G@@TGR AGXTMP,2 . @A@C@B GDBLE OPDL,AGXTMP,AGRL1 .@#@C@BCBCP10BE )@@G@@ GLBL . @E@C@B GSET AGIM2,AGXTMP . MOVE RESULT TO STACBF )@@G@@K @ @C@B GAPPN CBPLXA . @^@C@B GMOVE +2,1 . BG )@@G@@@^@C@B GFIN 'POP' .@[@C@B. @[@C@B. @#@C@BCBCPLB GLBBH )@@G@@L . @A@C@B GIFR CBCP10,AGRL1 . @ @C@B GGETGR ABI )@@G@@GXTMP,1 . @A@C@B GINST OPLA,AGXTMP,AGRL1 .@ @C@B GGOBJ )@@G@@TO CBCP10 . @#@C@BCBPLXA GLBL . @ @C@B USING SGDSCT,X7BK )@@G@@ . @H@C@B SET SDRLCX,ON,SGDCLS+DCGSLT . SET CBL )@@G@@OMPLEX RESULT @C@C@B XGPOP . POP STACK BM )@@G@@@#@C@B LJMP . @[@C@B. @[@C@B. @[@C@B. @C@C@BCBCJGFBN )@@G@@ GLBL . CONJG BIF @ @C@B GIFR CBCJ1,AGIBO )@@G@@M1 @C@C@B GGETGR AGXTMP,2 . ALLOCATE REG @A@C@B BP )@@G@@ GDBLE OPDLN,AGXTMP,AGIM1 . @ @C@B GSET AGIM1,AGXTMP @^@C@BBQ )@@G@@ GGOTO CBCJGR . @#@C@BCBCJ1 GLBL @B@C@B GDBLE OPDBR )@@G@@LN,AGIM1,AGIM1 'NO' @^@C@B GGOTO CBCJGR . @#@C@BCBCJGB GLBBS )@@G@@L @C@C@B GIFR CBCJ2,AGIM1 . BINARY CONJG @^@C@B BT )@@G@@ GGETGR AGXTMP,1@A@C@B GINST OPLNA,AGXTMP,AGIM1 @ @C@B BU )@@G@@ GSET AGIM1,AGXTMP @^@C@B GGOTO CBCJGR @#@C@BCBCJ2 GLBBV )@@G@@L @B@C@B GINST OPLNA,AGIM1,AGIM1 'NO' @#@C@BCBCJGR GLBBW )@@G@@L @^@C@B GMOVE +2,1 . @^@C@B GFIN 'POP' @[@C@BBX )@@G@@. @[@C@B. @[@C@B. @[@C@B. @B@C@B. ICODES FOR TRUNBY )@@G@@C, FLOOR AND CEIL @[@C@B. @[@C@B. @[@C@B. @ @C@B. FIXBZ )@@G@@ED BINARY ICODES @[@C@B. @D@C@BCBXFLR GLBL . FCA )@@G@@IXED BIN+Q FLOOR @D@C@B GIFR CBXFL1,AGRL1 . PUT OP 1 IN RCB )@@G@@EG @^@C@B GLOAD AGRL1,1 .@#@C@BCBXFL1 GLBL . @H@C@B CC )@@G@@ GINST OPLA,AGRA3,AGRL1 'NO' . GET SIGN OF ARGUMENT CD )@@G@@@D@C@B GSHIN OPSSA,AGRA3,36,I . PROPAGATE SIGN @C@C@B CE )@@G@@ GSHIN OPSSL,AGRA3,AGXR0 . SHIFT BY 36-Q@C@C@B GINST OPANA,AGRCF )@@G@@L1,AGRA3 . ADD Q 1'S @^@C@B GGOTO CBXTRN @[@C@B. @D@C@BCG )@@G@@CBXCEL GLBL . FIXED BIN +Q CEIL @ @C@B GIFCH )@@G@@R CBXCL1,AGRL1 @^@C@B GLOAD AGRL1,1 @#@C@BCBXCL1 GLBL CI )@@G@@@B@C@B GINST OPLNA,AGRA3,AGRL1 'NO' @D@C@B GSHIN OCJ )@@G@@PSSA,AGRA3,36,I . PROPAGATE SIGN @A@C@B GSHIN OPSSL,AGRA3,AGXCK )@@G@@R0 @A@C@B GINST OPAA,AGRL1,AGRA3 . @[@C@B. @[@C@B. CL )@@G@@@D@C@BCBXTRN GLBL . FIXED BIN +Q TRUNC @ @C@B CM )@@G@@ GIFR CBXTR1,AGRL1 @^@C@B GLOAD AGRL1,1 @#@C@BCBXTR1 GLBCN )@@G@@L @^@C@B GAPPN CBXTR @A@C@B GSHIN OPSSA,AGRL1,AGXCO )@@G@@R0 . @F@C@BCBXFNP GLBL . FIXED Q=0 FLOOR,CEIL & TRCP )@@G@@UNC @D@C@B GSET AGRL2,AGRL1 . SET RESULT REG @^@C@BCQ )@@G@@ GFIN 'POP' @[@C@B. @#@C@BCBXTR GLBL @E@C@B CR )@@G@@ LOAD A3,DCGSV4+3 . GET Q FROM CALLING REG @ @C@B STOCS )@@G@@RE A3,AGX0OF . @#@C@B LJMP @[@C@B. @[@C@B. @F@C@BCT )@@G@@CBXFLQ GLBL . FIXED BIN -Q FLOOR,CEIL & TRUNC@ @C@BCU )@@G@@ GIFR CBXFQ1,AGRL1 @^@C@B GLOAD AGRL1,1 @#@C@BCBXFQ1CV )@@G@@ GLBL @E@C@B GSHIN OPLSSC,AGRL1,AGXR0 . WATCH FOR SIGN BITCW )@@G@@S @^@C@B GGOTO CBXFNP . @[@C@B. @[@C@B. @D@C@B. CX )@@G@@ FLOATING ARGUMENTS TO FLOOR, CEIL AND TRUNC @[@C@B. @F@C@BCBXFDQCY )@@G@@ GLBL . FIXED DEC -Q FLOOR,CEIL & TRUNC@E@C@B CZ )@@G@@ GBAL CDXLDR . MAKE SURE IT IS IN REG @H@C@B GFLDA )@@G@@OAT OPDFM,AGRL1,AGXR0 . MPY BY 10**Q (Q<0) @A@C@BDB )@@G@@ GGOTO CBXFNP . ->FINISH UP @[@C@B. @[@C@B. @D@C@BCBXFDPDC )@@G@@ GLBL . FIXED DEC +Q TRUNC @D@C@B GBAL CDXDD )@@G@@LDR . LOAD ARG INTO REG @D@C@B GFLOAT OPDFD,AGRL1,AGDE )@@G@@XR0 . SCALE BY 10**Q @C@C@BCBXFTQ GLBL . FLOAT TDF )@@G@@RUNC @C@C@B GBAL CDXLDR . LOAD ARG @#@C@BCBXFT1DG )@@G@@ GLBL . @H@C@B GFLOAT OPDFA,AGRL1,AGXUNZ . DH )@@G@@ TRUNCATE - ADD FUNNY 0 @C@C@B GGOTO CBXFNP . ->FINISDI )@@G@@H UP @[@C@B. @E@C@BCDXLDR GLBL . FLOAT LOAD INDJ )@@G@@TO REGS @C@C@B GIFR CBXLD1,AGRL1 . -> ALREADY IN REG @^@C@BDK )@@G@@ GLOAD AGRL1,2 @#@C@BCBXLD1 GLBL @#@C@B GRTRN . DL )@@G@@@[@C@B. @[@C@B. @[@C@B. @C@C@BCBXFLC GLBL . DM )@@G@@ FLOAT CEIL @^@C@B GBAL CDXLDR . @E@C@B GINST OPTDN )@@G@@N,AGRX0,AGRL1 'NO' . TEST SIGN OF NUMBER @C@C@B GFLOAT OPDFA,AGDO )@@G@@RL1,AGXR0 . ADD .99999 @^@C@B GGOTO CBXFT1 . @[@C@B. @C@C@BDP )@@G@@CBXFLF GLBL . FLOAT FLOOR @^@C@B GBAL CDXDQ )@@G@@LDR . @A@C@B GINST OPTP,AGRX0,AGRL1 'NO'@C@C@B GFLOAT OPDR )@@G@@DFAN,AGRL1,AGXR0 . ADD .99999@A@C@B GGOTO CBXFT1 . ->TRUNCATE DS )@@G@@@[@C@B. @[@C@B. @D@C@BCBXFFC GLBL . FIX DECDT )@@G@@ +Q CEIL @C@C@B GBAL CDXLDR . LOAD ARG @B@C@BDU )@@G@@ GDBLE OPDL,AGRA3,AGXR0 . 10**Q @#@C@B GLIT 1 @E@C@BDV )@@G@@ DFAN A3,KKPW10-2-(IN 63,0,1,0) . 10**Q-1=9999999 @B@C@B DW )@@G@@ GINST OPTN,AGRX0,AGRL1 'NO' . @D@C@B GFLOAT OPDFA,AGRL1,AGDX )@@G@@RA3 . ADD IF POS NUM @B@C@B GGOTO CBXFDP . -> TRUNCATE DY )@@G@@@[@C@B. @[@C@B. @D@C@BCBXFFF GLBL . FIXED DDZ )@@G@@EC +Q FLOOR @C@C@B GBAL CDXLDR . LOAD ARG @A@C@BEA )@@G@@ GDBLE OPDL,AGRA3,AGXR0 . @#@C@B GLIT 1 .@B@C@B EB )@@G@@ DFAN A3,KKPW10-2-(IN 63,0,1,0) @A@C@B GINST OPTP,AGRX0,AGRLEC )@@G@@1 'NO'@E@C@B GFLOAT OPDFAN,AGRL1,AGRA3 . SUB IF NUMBER NEG ED )@@G@@@C@C@B GGOTO CBXFDP . ->FINISH UP @[@C@B. @C@C@BEE )@@G@@. FIXED BIN MOD@[@C@B. @#@C@BBFMODBEF )@@G@@ GLBL . @D@C@B GIFR BFMOB1,AGRL2 . IS ARG1 IN REG? EG )@@G@@@D@C@B GLOAD AGRL2,1 . GET IT INTO ONE @D@C@BBFMOB1EH )@@G@@ GLBL . ARG1 NOW IN REG @D@C@B GIFR BEI )@@G@@FMOB5,AGRL1 . IS ARG2 IN REG? @D@C@B GINST OPTNZ,AGRX0,AEJ )@@G@@GRL1 'NO' . SEE IF ZERO @C@C@B GJUMP AGLBL . JUMP AREK )@@G@@OUND @B@C@B GGOTO BFMOB6 . MERGE @E@C@BBFMOB5 GLBEL )@@G@@L . HERE AGRL1 IS IN REG @F@C@B GCJMP OEM )@@G@@PJZ,AGRL1,AGLBL 'NO' . LEAVE RESULT IF ZERO @E@C@BBFMOB6 GLBL . EN )@@G@@ MERGE HERE TO CONTINUE @D@C@B GSHIN OPDSA,AEO )@@G@@GRL2,36,I 'NO' . SIGN EXTEND @C@C@B GINST OPDI,AGRL2,AGRL1 'NEP )@@G@@O' . DIVIDE @F@C@B GSHIN OPLDSL,AGRL2,36,I 'NO' . PUT BACK INTEQ )@@G@@O ODD REG @F@C@B GCJMP OPJZ,AGRL2,AGLBL . TEST POS. DOESN'T ER )@@G@@HDLE NEG. 0 @B@C@B GINST OPTP,AGRX0,AGRL2 'NO' . @E@C@B ES )@@G@@ GINST OPAMA,AGRL2,AGRL1 . GET POSITIVE RESULT @D@C@B GLAET )@@G@@BEL AGLBL . SET JUMP TO HERE @C@C@B GSET AGRL2+DEU )@@G@@CGSLT,AGRL2 . SET RESULT@D@C@B GAPPN BFMOB4 . GO POP EV )@@G@@OFF ARGS @D@C@B GFIN . ALL DONE ICODE EW )@@G@@@E@C@BBFMOB4 GLBL . HERE TO POP OFF TWO ARGS @A@C@BEX )@@G@@ XGPOP 'SIZE',2*DCGSLT . @#@C@B LJMP . @[@C@B. EY )@@G@@@F@C@B. FLOAT OR FIXED DEC MOD BIF EZ )@@G@@@[@C@B. @#@C@BBFMODF GLBL . @D@C@B GIFR BFMOF1,AGRL2 FA )@@G@@. ARG ONE IN REG? @D@C@B GLOAD AGRL2,2 . GET IT FB )@@G@@INTO ONE @D@C@BBFMOF1 GLBL . ARG ONE NOW IN REG FC )@@G@@@F@C@B GINST OPTNZ,AGRX0,AGRL1 'NO' . SEE IF DIVISOR ZERO FD )@@G@@@^@C@B GJUMP AGLBL .@F@C@B GDBLE OPDL,AGRA1,AGRL2 'NFE )@@G@@O' . LOAD INTO SCRATCH REG @C@C@B GFLOAT OPDFD,AGRA1,AGRL1 'FF )@@G@@NO' . DIVIDE@D@C@B GINST OPTP,AGRX0,AGRA1 'NO' . SEE IF POS FG )@@G@@@E@C@B GLIT 1 . NEG HERE,HELP FLOOR FUNC @ @C@BFH )@@G@@ DFAN A1,KK9999 . @D@C@B GFLOAT OPDFA,AGRA1,AGXUNZ FI )@@G@@'NO' . TRUNCATE @G@C@B GFLOAT OPDFM,AGRA1,AGRL1 'NO' . GET FLFJ )@@G@@OOR(ARG1/ARG2)*ARG2 @D@C@B GFLOAT OPDFAN,AGRL2,AGRA1 'NO' .FK )@@G@@ GET MOD @C@C@B GSET AGRL2+DCGSLT,AGRL2 . SET RESULT@D@C@BFL )@@G@@ GCJMP OPJP,AGRL2,AGLBL . IS RESULT NEG. @F@C@B GINFM )@@G@@ST OPTP,AGRX0,AGRL1 'NO' . DO DBLE ADD MAGN. @E@C@B GFLFN )@@G@@OAT OPDFAN,AGRL2,AGRL1 'NO' . GET POS. RESULT @B@C@B GINST OFO )@@G@@PTN,AGRX0,AGRL1 'NO' . @E@C@B GFLOAT OPDFA,AGRL2,AGRL1 . GEFP )@@G@@T POS. RESULT @^@C@B GLABEL AGLBL .@C@C@B GAPPN BFQ )@@G@@FMOB4 . POP STACK @#@C@B GFIN . @ @C@B/. CONFR )@@G@@STANTS NEEDED @[@C@B. @[@C@B. @^@C@BDCBCSM SFW 0 . FS )@@G@@@B@C@B +SGDEXP++SD0ART,SDDCBN,0,17 . @A@C@BDCBCLN SFW 0 . SFT )@@G@@TACK ELT FOR 35,0 @D@C@B +SGDEXP++SD0ART,SDDCBN,0,35 . WHY SGDEXFU )@@G@@P? @[@C@B. @ @C@B. WORDS FOR NONPL1 MSGS@[@C@B. @C@C@BFV )@@G@@DCBRND INSERT 4,'RAN','D ' . RAND USED @C@C@BERXGRN EQU 52 FW )@@G@@. NON STANDARD PL1 USED@B@C@BEXERB1 EQU 51 . REAL PARFX )@@G@@T USED@G@C@BEXROUN EQU 0200 . ARG TO ROUND OUT OF BOUNDFY )@@G@@S. ONE USED @D@C@BERRG08 EQU 41 . NON-CONSTANT. 10 USED FZ )@@G@@@C@C@BERRG10 EQU 42 . REAL PART USED @F@C@BERRG09 EQUGA )@@G@@ 43 . SMALL INTEGER NEEDED, NOT FOUND @D@C@BIGPLUS EQUGB )@@G@@ 02000 . FLAG FOR MIN & MAX @F@C@BIGMPDV EQU 01000 .GC )@@G@@ MULTIPLY OR DIVIDE IN ROUND @E@C@BIGZERO EQU 01000 .GD )@@G@@ FLAG FOR ZERO SHIFT COUNT@#@C@B CEND . @#@C@B GE )@@G@@ END . @A@@@C/. BASED STORAGE BUILT-IN FUNCTIONS @[@@@C. @[@@@CGF )@@G@@. @[@@@C. @]@@@CFGNULL* @ @@@CFILL(1) SAC GGTNOP,BBBNULGG )@@G@@@ @@@CFILL(1) SAC BBBNOP,0 @[@@@C. @[@@@C. @]@@@CFGALLCGH )@@G@@* @A@@@CFILL(1) SAC GGTNOP,BBBALL . @ @@@CFILL(1) SAC BGI )@@G@@BBNOP,0 . @[@@@C. @[@@@C. @]@@@CFGADDR* . @A@@@CFILL(1) SACGJ )@@G@@ GGTNOP,BBBADR . @ @@@CFILL(1) SAC BBBNOP,0 . @]@@@C/. NULGK )@@G@@L BIF @[@@@C. @[@@@C. @ @@@C USING SGDSCT,X7 . @#@@@CGL )@@G@@BBBNUL LABEL . @^@@@C GNTR 2 . @E@@@C LOADA GM )@@G@@A3,BFNULL . GET ADDR OF A NULL PTR @ @E@C STORE A3,SGDRGN )@@G@@BS . @ @@@E STORE A3,SGDRDS . @D@@@C LOADA A3,AGRGO )@@G@@X0 . MAKE ADDR OFF X0 @ @E@C STORE A3,SGDRDS . @ @@@EGP )@@G@@ STORE A3,SGDRBS . @D@@@C MOVE SGDAID,BBBPTR . SGQ )@@G@@AY IT IS A PTR @^@@@C GRTN 2 . @[@@@C. @[@@@C. GR )@@G@@@[@@@C. @[@@@C. @ @@@CBBBALL LABEL . ALLOCATON BIF@[@@@C. GS )@@G@@@^@@@C GNTR 2 . @#@@@C GENM . @F@@@C GINGT )@@G@@ST OPLA,AGRA3,AGRL1,U . LOAD ADDR OF IMPLIED PTR @ @@@C GSUGU )@@G@@B BFALLC . @^@@@C GFIN 'POP' .@E@@@C MOVE SGV )@@G@@GDAID,BBBFBC . SAY RESULT IS FIXED BIN @E@@@C LOAD A3,AGRAGW )@@G@@2 . SET TO SAY RESULT IN A2 @ @@@C STORE A3,AGRL1 . GX )@@G@@@^@@@C GRTN 2 . @[@@@C. @[@@@C. @[@@@C. @[@@@CGY )@@G@@. @ @@@CBBBADR LABEL . ADDR BIF @[@@@C. @[@@@C. @^@@@CGZ )@@G@@ GNTR 2 . @D@@@C LOAD A3,SGDRSD . GET SD HA )@@G@@OF THING @D@@@C STORE A3,AGX0OF . SET TO PASS IT HB )@@G@@@#@@@C GENM . @D@@@C GINST OPLA,AGRA1,AGXR0,U . LA,UHC )@@G@@ A1,SDADDR @E@@@C GINST OPLA,AGRA3,AGRL1,U . LA,U A3,ADDR OF HD )@@G@@THING @^@@@C GFIN 'POP' .@D@@@C GTMP 3 . HE )@@G@@ GET A TEMP PTR @D@@@C STORE A8,AGR10D . MAKE ANHF )@@G@@ AW FOR IT @ @@@C LOAD A3,AGXR10 . @E@@@C STORE AHG )@@G@@3,AGRL1 . SET TOP OF STK TO TEMP @D@@@C MOVE SGDAID,HH )@@G@@BBBPTR . MAKE STACKTOP A PTR@#@@@C GENM . @F@@@C GINHI )@@G@@ST OPLA,AGRA2,AGRL1,U . LA,U A2,ADDR OF TEMP PTR @ @@@C GSUHJ )@@G@@B BFADDR . @#@@@C GFIN . @^@@@C GRTN 2 HK )@@G@@@[@@@C. @[@@@C. @B@@@CBBBNOP GLBL . TELL XGEN TO DO NO MORE HL )@@G@@@#@@@C GFIN . @#@@@C/. CONSTANTS USED @[@@@C. @D@@@CBBBFBCHM )@@G@@ SFW 0 . FIXED BIN RESULT @ @@@C +SD0ART,SHN )@@G@@DDCBN,0,35 @C@@@CBBBPTR SFW 0 . PTR RESULT @ @F@CHO )@@G@@ +SD0PTR,SDVRCN,0,0 . @ @@@F +SD0PTR,SDDCBN,0,0 . @#@@@CHP )@@G@@ END . ___ESULT @D@C@B GLABEL AGLBL . SHQ )@@G@@ET JUMP TO HERE @C@C@B*[S@@@*SDFF*@C@@@@. COPYRIGHT 1975 BY UNIVERSIHR )@@G@@TY OF MARYLAND @[@@@@. @D@@@@. QUESTIONS CONCERNING THIS SHOULDHS )@@G@@ BE DIRECTED TO: @[@@@@. @ @@@@. MARVIN V. ZELKOWITZ @B@@@@HT )@@G@@. DEPARTMENT OF COMPUTER SCIENCE @A@@@@. UNIVERSITY OF MHU )@@G@@ARYLAND @B@@@@. COLLEGE PARK, MARYLAND 20742 @[@@@@. HV )@@G@@@G@@@@. PERMISSION TO USE THESE LISTINGS AND THE COMPUTER PROGRAMHW )@@G@@S THEY@E@@@@. REPRESENT IS GRANTED UNDER THE FOLLOWING CONDITIONS: HX )@@G@@@[@@@@. @G@@@@. 1. UNLIMITED USE MAY BE MADE OF THE PROGRAMS HY )@@G@@REPRESENTED BY @G@@@@. THESE LISTINGS PROVIDED THAT THE NAME PLUM OHZ )@@G@@R UNIVERSITY OF MARYLAND@E@@@@. PL/1 COMPILER REMAINS ASSOCIATED WITH IA )@@G@@THESE PROGRAMS. @[@@@@. @F@@@@. 2. MODIFICATIONS MAY BE MADIB )@@G@@E TO THE LISTINGS PROVIDED: @[@@@@. @G@@@@. (A) ANY RESULTIIC )@@G@@NG PROGRAM, OR REPORT, PAPER OR DOCUMENTATION @G@@@@. DESCRIBINID )@@G@@G SUCH PROGRAM WILL CLEARLY INDICATE THAT THE PROGRAM @E@@@@. IS IE )@@G@@A DIALECT OF PLUM OR IS DERIVED FROM PLUM, AND @[@@@@. @G@@@@. IF )@@G@@ (B) ALL SUCH MODIFICATIONS, OTHER THAN TRIVIAL CORRECTIONS @F@@@@IG )@@G@@. OF ERRORS IN THE SOURCE PROGRAMS, SHALL BE REPORTED AND @G@@@@IH )@@G@@. A BRIEF DESCRIPTION OF THE FEATURE ADDED SHALL BE SUBMITTED II )@@G@@@C@@@@. TO THE UNIVERSITY OF MARYLAND, AND @[@@@@. @F@@@@IJ )@@G@@. (C) NO PROGRAMS DERIVED FROM THESE LISTINGS SHALL BE SOLD@G@@@@IK )@@G@@. WITHOUT WRITTEN APPROVAL FROM THE UNIVERSITY OF MARYLAND, AND IL )@@G@@@[@@@@. @F@@@@. (D) COPIES OF THESE PROGRAMS MAY BE TRANSMITTIM )@@G@@ED TO OTHER @G@@@@. LOCATIONS PROVIDED THAT SUCH TRANSMITTALS CLEIN )@@G@@ARLY INDICATE @G@@@@. WHETHER THE PROGRAMS ARE EXACT COPIES OIO )@@G@@F THE UNIVERSITY OF @E@@@@. MARYLAND PLUM COMPILER OR ARE MODIP )@@G@@IFICATIONS TO IT. @[@@@@. @G@@@@. 3. THESE CONDITIONS ONLY APIQ )@@G@@PLY TO THE PLUM COMPILER ITSELF, @F@@@@. AND ARE NOT MEANT TO APPLYIR )@@G@@ TO ANY PROGRAM WRITTEN USING PLUM. @E@@@@. THE PURPOSE OF THESE CONDIIS )@@G@@TIONS IS TO ALLOW ANY USER TO @F@@@@. EXPERIMENT WITH THE COMPILER AS IT )@@G@@LONG AS THE RESULTING PRODUCT @G@@@@. IS NOT SOLD AND AS LONG AS IT ISIU )@@G@@ KNOWN THAT THE PRODUCT DEVELOPED @#@@@@. FROM PLUM. @[@@@@. IV )@@G@@@[@@@@. @[@@@@. @[@@@@. @[@@@@. @[@@@@/. @#@@@@/ IW )@@G@@ AXR$ . @#@@@@ DCLRG . @#@@@@@ADD,P PLTVDS @#@@@@@ADD,PIX )@@G@@ PLCGST @#@@@@@ADD,P PLDSAW @#@@@@ LIST . @#@@@@ IY )@@G@@ PLWORD . @#@@@@ PLAC . @#@@@@ PLCGD . @#@@@@ IZ )@@G@@ PLSD . @#@@@@ PLIG . @D@@@@ PLAR . ESTABLISH ACTIJA )@@G@@VATION RECORD DSECTS @#@@@@ CEND . @^@@@@/XGCG CSECT 3 JB )@@G@@. @D@@@@GSSL EQU 0400000000000 . GET SUBSCRIPT LIST @D@@@@JC )@@G@@GTMP EQU 0200000000000 . GET CROSS SECTION DV @E@@@@LIST EQUJD )@@G@@ 0100000000000 . START SCAN OF SUBSCRIPT LIST @E@@@@GTCV EQU 004JE )@@G@@0000000000 . LOCATE TALLY CELL VECTOR @F@@@@SSUB EQU 002000000JF )@@G@@0000 . FORM TALLY CELL INTO SUBSCRIPT @E@@@@SCPY EQU 001000000JG )@@G@@0000 . COPY BNDS&MULTP INTP CRSC DV @D@@@@SEND EQU 0004000000000 .JH )@@G@@ BEGIN COMMA PROCESSING @D@@@@BSSL EQU 0002000000000 . BUMP SS LISJI )@@G@@T OFFSET @E@@@@TCV0 EQU 0001000000000 . START CONSECUTIVE STAR JJ )@@G@@COUNT @D@@@@TCV1 EQU 0000400000000 . COUNT CONSECUTIVE STARS@C@@@@JK )@@G@@TCV2 EQU 0000200000000 . COUNT #SUB'S @E@@@@STFS EQU 000JL )@@G@@0100000000 . MOVE CONSECURIVE TC'S TO SSL @E@@@@SSBW EQU 000004000JM )@@G@@0000 . COMPUTE NON-* SUBSCRIPT MASK @D@@@@STUF EQU 0000020000000 .JN )@@G@@ MOVE SUBSCRIPT TO SSL @D@@@@COMP EQU 0000010000000 . ADDR <-ADDRJO )@@G@@+SS(I)*M(I) @D@@@@NEXT EQU 0000004000000 . SCAN NEXT SUBSCRIPT JP )@@G@@@C@@@@STF0 EQU 0000002000000 . (SAME AS STFS) @D@@@@LARG EQUJQ )@@G@@ 0000001000000 . GEN LA OF SSL AND DV @D@@@@TLYC EQU 000000040JR )@@G@@0000 . GEN CALL TO EXTLYC @D@@@@SUBR EQU 0000000200000 . GEN CJS )@@G@@ALL TO EXSUBR @D@@@@CRSC EQU 0000000100000 . GEN CALL TO EXCRSJT )@@G@@C @D@@@@RESA EQU 0000000040000 . SET RESULT DESCRIPTION @F@@@@JU )@@G@@RESB EQU 0000000020000 . SET RESULT DESCRIPTION(NOSUBRG) @E@@@@JV )@@G@@STV0 EQU 0000000010000 . FINISH CRSC DV CONSTRUCTION @D@@@@POPS JW )@@G@@ EQU 0000000004000 . CLEAR STACK ENTRIES @C@@@@ . DEFINITION OF AJX )@@G@@RRAY PROCESSING STATE MASKS @F@@@@XGSCLR SF +GSSL+LIST+TCV2+STUF+COMP+JY )@@G@@NEXT+LARG+SUBR+RESB+RESA+POPS @^@@@@ . ARRAY EXPRSSION MASK @F@@@@XGACCXJZ )@@G@@ SF +GSSL+LIST+GTCV+SSUB+SEND+TCV0+STUF+COMP+NEXT+SSBW; @ @@@@+LARG+KA )@@G@@TLYC+RESB+RESA+POPS . @^@@@@ . CROSS SECTION MASK @F@@@@XGCRSE SF +GKB )@@G@@SSL+GTMP+LIST+SCPY+BSSL+TCV2+SSBW+STUF+COMP+NEXT; @A@@@@+LARG+CRSC+RKC )@@G@@ESA+RESB+STV0+POPS . @F@@@@ . ONE OF THE FOLLOWING MASKS IS ANDED AGAKD )@@G@@INST ONE OF THE ABOVE @E@@@@ . MASKS TO ACCOUNT FOR THE STATUS OF THE KE )@@G@@SUBSCRIPT RANGE @#@@@@ . CONDITION. @^@@@@ . SUBSCRIPT RANGE MASK KF )@@G@@@F@@@@XGSBRG SF +GSSL+LIST+GTCV+BSSL+TCV0+TCV2+SSBW+STUF+NEXT+LARG+SUBR;KG )@@G@@@^@@@@+TLYC+CRSC+RESA+POPS . @ @@@@ . NO SUBSCRIPT RANGE MASK @G@@@@KH )@@G@@XGNBRG SF +GTMP+LIST+GTCV+SSUB+SCPY+SEND+TCV2+SSBW+COMP+NEXT+RESA+RESB; KI )@@G@@@]@@@@+STV0+POPS .@ @@@@ . MASK FOR SUBSEQUENT STARS @A@@@@XGSTAR SF +TKJ )@@G@@CV0+TCV1+STFS+STF0 . @^@@@@XGCCS2 SFW 0 . @^@@@@FILL(1) SQ KK )@@G@@ SD0STR @A@@@@FILL(1) SQ SDCHBT+SDARST+SDVRCN @#@@@@FILL(1) SQ KL )@@G@@ 0 @#@@@@FILL(1) SQ 1 @D@@@@XGCCS1 SAC AGRX0-AGRX0+AGAW,KKF1KM )@@G@@-(IN 63,0,1,0) . @D@@@@FILL(1) SAC AGRX0-AGRX0+AGAW,KKD0-(IN 63,0,1,KN )@@G@@0) . @#@@@@XGCONO SFW 0 .@B@@@@FILL(1) SQ SD0ART+SGDEXP KO )@@G@@ . @ @@@@FILL(1) SQ SDDCBN .@ @@@@FILL(1) SQ 0 KP )@@G@@ .@ @@@@FILL(1) SQ KBXMXP .@D@@@@FILL(1) SAC AGXR0-AGRKQ )@@G@@X0+AGAW,KKF0-(IN 63,0,1,0) . @#@@@@XGCON1 SFW 0 .@ @@@@FILL(1) SQ KR )@@G@@ SD0ART+SGDEXP .@^@@@@FILL(1) SQ SDDCBN . @#@@@@FILL(1) SQ 0 .KS )@@G@@@^@@@@FILL(1) SQ KSLPRE . @#@@@@XGCON2 SFW 0 .@^@@@@FILL(1) SQ KT )@@G@@ SD0ART . @^@@@@FILL(1) SQ SDDCBN . @#@@@@FILL(1) SQ 0 .@^@@@@KU )@@G@@FILL(1) SQ KBXMXP . @#@@@@XGCON3 SFW 0 .@^@@@@FILL(1) SQ SD0KV )@@G@@ART . @^@@@@FILL(1) SQ SDDCBN . @#@@@@FILL(1) SQ 0 .@^@@@@FILL(1KW )@@G@@) SQ KSLPRE . @#@@@@XGCON4 SFW 0 .@^@@@@FILL(1) SQ SD0ART . KX )@@G@@@B@@@@FILL(1) SQ SDRLCX++SDFXFL++SDDCBN . @#@@@@FILL(1) SQ 0 .KY )@@G@@@^@@@@FILL(1) SQ 60 . @B@@@@LRR1U0 SF +(LR R1,0,0,U) KZ )@@G@@ . @H@@@@DRAW34 SAC AGRX0-AGRX0+AGAW,34 . AW USED AFTER LSC IN FLA )@@G@@INDING POWERS OF 2@C@@@@R14ETY SAC AGRX0-AGRX0+AGAW,EXTLYC . LB )@@G@@@D@@@@XGMSK1 SF 0777000 . MASK USED TO CHECK Q3 OF H2 @H@@@@XGMSK2LC )@@G@@ SF 0400000000000 . MASK USED TO MARK A10 WITH BY-NAME EXPRESSION LD )@@G@@@ @@@@XGMSK3 SAC 1,0 .@G@@@@XGMSK4 SAC 0777777,000000 LE )@@G@@ . FOR MASKING OUT LOWER HALF WORD@H@@@@XGMSK5 SAC 0200000,0LF )@@G@@00000 . COMPARISON AFTER SHIFTING TO SEE IF POWER OF 2@]@@@@. **TABLES LG )@@G@@@A@@@@XGTBLE EQU +(IN 0,H2,1,$) . @A@@@@XGPCTB EQU +(IN 0,H1LH )@@G@@,1,$) . @G@@@@ . H1 IS PUNCTUATIONLI )@@G@@ BRANCHING TABLE @F@@@@ . H2 IS OPERALJ )@@G@@ND BRANCHING TABLE@H@@@@FILL(1) SAC XGNXT0,XGARST . SKIP QNSLK )@@G@@ SYMBOL, ARITHMATIC OPERAND @B@@@@FILL(1) SAC 000000,XGMLA LL )@@G@@ . @B@@@@FILL(1) SAC XGCCST,XGSART . @B@@@@FILL(1) SACLM )@@G@@ XGSTRR,XGSART . @F@@@@FILL(1) SAC XGNXT0,XGETRY LN )@@G@@ . SKIP ACNIL, ENTRY OPERAND @B@@@@FILL(1) SAC 000000,XGMLE LO )@@G@@ . @B@@@@FILL(1) SAC XGCCST,XGSTNR . @B@@@@FILL(1) SACLP )@@G@@ XGCMMA,XGSTNR . @I@@@@FILL(1) SAC XGCCST,XGSTRU LQ )@@G@@ . CHECK FOR CONDITION CODE, STRUCTURE OPER @D@@@@FILL(1) SAC XGCLR )@@G@@MMA,XGSTRU . ACCOMA FOUND @F@@@@FILL(1) SAC XGCCST,XGSTRU LS )@@G@@ . CHECK FOR CONDITION CODE @G@@@@FILL(1) SAC XGASOP,XGSTRU LT )@@G@@ . ASSIGNMENT OPERATOR OR COMMA @G@@@@FILL(1) SAC XGNXT0,XGLU )@@G@@ARST . SKIP RIGHT PAREN, STRING OPERAND@B@@@@FILL(1) SAC 000LV )@@G@@000,XGMLS . @I@@@@FILL(1) SAC XGNXT0,XGSTST . SKLW )@@G@@IP LEFT PAREN, STRING IN STATIC CHECK @B@@@@FILL(1) SAC 000000,XGLX )@@G@@STST . @I@@@@FILL(1) SAC XGCCST,XGLABL . CHECK FOLY )@@G@@R CONDITION CODE, LABEL OPERAND @B@@@@FILL(1) SAC XGRBRK,XGMLA LZ )@@G@@ . @B@@@@FILL(1) SAC XGNXT0,XGSTLA . @B@@@@FILL(1MA )@@G@@) SAC 000000,XGSTLA . @H@@@@FILL(1) SAC XGCCST,XGFILE MB )@@G@@ . CHECK FOR CONDITION CODE, FILE OPERAND@B@@@@FILL(1) SAC XGAMC )@@G@@CMA,XGMLA . @B@@@@FILL(1) SAC XGSBNX,XGSTFI . MD )@@G@@@B@@@@FILL(1) SAC 000000,XGSTFI . @G@@@@FILL(1) SAC XGNME )@@G@@XT0,XGVRBL . SKIP ACPTQ, POINTER OPERAND @B@@@@FILL(1) SACMF )@@G@@ 000000,XGMLA . @B@@@@FILL(1) SAC XGSEXP,000000 MG )@@G@@ . @B@@@@FILL(1) SAC 000000,000000 . @B@@@@FILL(1) SACMH )@@G@@ XGSEX1,000000 . @B@@@@FILL(1) SAC 000000,000000 MI )@@G@@ . @B@@@@FILL(1) SAC XGNEXP,000000 . @B@@@@FILL(1) SACMJ )@@G@@ 000000,000000 . @D@@@@ . ** BUILT-IN FUNCTION ARGUMENT BRAMK )@@G@@NCHING TABLE ** @A@@@@XGBFTB EQU +(IN 0,H1,1,$) . @ @@@@XBU ML )@@G@@ LABEL .@H@@@@FILL(1) SAC XBSSS,0 . 0 MM )@@G@@ THE LEFT HALF TELLS YOU WHICH @H@@@@XBX LABEL .MN )@@G@@ PATTERN OF EVENTS TO CHOSE FROM, @G@@@@FILL(1) SAC XBMMO )@@G@@,XGBNON . 1 . WHILE THE RIGHT HALF GIVES @G@@@@XBNS LABMP )@@G@@EL . THE PATTERNS FOR THE VARIOUS@H@@@@FILL(1MQ )@@G@@) SAC XBSSS,XGBARY . 2 . ARRANGEMENTS OF ARGS FOR BIF'S. MR )@@G@@@ @@@@XBSSS LABEL .@B@@@@FILL(1) SAC XBL,XGBVAL MS )@@G@@ . 3 . @ @@@@XBSS LABEL .@B@@@@FILL(1) SAC XBSMT )@@G@@,XGBVAL . 4 . @ @@@@XBS LABEL .@B@@@@FILL(1MU )@@G@@) SAC XBR,XGBVAL . 5 . @ @@@@XBM LABEL .MV )@@G@@@B@@@@FILL(1) SAC XBS,XGBMAT . 6 . @ @@@@XBL LABEL MW )@@G@@ .@B@@@@FILL(1) SAC XBU,XGBMAX . 7 . @ @@@@XBLLI MX )@@G@@ LABEL .@B@@@@FILL(1) SAC XBSSS,XGBMAX . 8 . MY )@@G@@@ @@@@XBLII LABEL .@B@@@@FILL(1) SAC XBLII,XGBMAX MZ )@@G@@ . 9 . @B@@@@FILL(1) SAC XBSS,XGBGNR . 10 . @ @@@@XBLR NA )@@G@@ LABEL .@B@@@@FILL(1) SAC XBLLI,XGBMAX . 11 . NB )@@G@@@ @@@@XBR LABEL .@B@@@@FILL(1) SAC XBSS,0 NC )@@G@@ . 12 . @ @@@@XBLQ LABEL .@B@@@@FILL(1) SAC XBLND )@@G@@R,XGBMAX . 13 . @B@@@@FILL(1) SAC XBA,0 . 14 . NE )@@G@@@ @@@@XBA LABEL .@B@@@@FILL(1) SAC XBM,XGITER NF )@@G@@ . 15 . @B@@@@FILL(1) SAC XBX,XGSAX . 16 . @B@@@@FILL(1NG )@@G@@) SAC XBX,XGEAX . 17 .@ @@@@XBB LABEL .NH )@@G@@@B@@@@FILL(1) SAC XBA,XGITER . 18 . @B@@@@FILL(1) SAC XBLNI )@@G@@,XGSASL . 19 . @B@@@@FILL(1) SAC XBA,XGEAXL . 20 . NJ )@@G@@@ @@@@XBP LABEL .@#@@@]XBADDR LABEL . @B@]@@FILL(1NK )@@G@@) SAC XBB,000000 . 21 . @B@@@]FILL(1) SAC XBB,XGBADR NL )@@G@@ . 21 . @B@@@@FILL(1) SAC XBP,000000 . 22 . @ @@@@XBVW NM )@@G@@ LABEL .@B@@@@FILL(1) SAC XBX,000000 . 23 . NN )@@G@@@B@@@@FILL(1) SAC XBVW,000000 . 24 . @B@@@@FILL(1) SAC XBMNO )@@G@@,000000 . 25 . @B@@@@FILL(1) SAC XBNS,000000 . 26 . NP )@@G@@@B@@@@FILL(1) SAC XBM,000000 . 27 . @B@#@@FILL(1) SAC XBXNQ )@@G@@,000000 . 28 . @C@@@#FILL(1) SAC XBADDR,000000 . 28NR )@@G@@ . @B@@@@FILL(1) SAC XBM,000000 . 29 . @^@@@@. ** ARRAY TNS )@@G@@ABLES ** @H@@@@XGATBL EQU +(IN 0,H1,1,$) . H1 IS ARRAY SUBSCRIPNT )@@G@@T LIST PROCESSING TABLE @F@@@@XGOPST EQU +(IN 0,H2,1,$) . H2 IS ENNU )@@G@@D OF SUBEXPRESSION TABLE@E@@@@FILL(1) SAC XGGSSL,XGRRAY . GNV )@@G@@ET SUBSCRIPT LIST @F@@@@FILL(1) SAC XGGTMP,XGUSCL . GET CRONW )@@G@@SS SECTION DV @E@@@@FILL(1) SAC XGLIST,XGRVAG . SCAN SUNX )@@G@@BSCRIPT LIST@F@@@@FILL(1) SAC XGGTCV,XGRTMP . GET TALLY CELNY )@@G@@L VECTOR @D@@@@FILL(1) SAC XGSSUB,XGRVR4 . MAKE TCV SUB NZ )@@G@@@F@@@@FILL(1) SAC XGSCPY,XGRBVL . BOUND + MULTPR TO CRSC OA )@@G@@@E@@@@FILL(1) SAC XGSEND,0 . SUBSCRIPT COMMA @E@@@@OB )@@G@@FILL(1) SAC XGBSSL,XGRFLL . SUBSCRIPT OFFSET @D@@@@FILL(1OC )@@G@@) SAC XGTCV0,XGRCRS . COUNT STARS @D@@@@FILL(1) SAC XGTOD )@@G@@CV1,XGRSNG . COUNT STARS @F@@@@FILL(1) SAC XGTCV2,XGRSBF OE )@@G@@ . NUMBER OF SUBSCRIPTS @G@@@@FILL(1) SAC XGSTFS,000000 OF )@@G@@ . TALLY CELL TO SUBSCRIPT LIST @D@@@@FILL(1) SAC XGSSBW,00OG )@@G@@0000 . NON STAR MASK@G@@@@FILL(1) SAC XGSTUF,000000 OH )@@G@@ . SUBSCRIPT TO SUBSCRIPT LIST @C@@@@FILL(1) SAC XGCOMP,000000 OI )@@G@@ . COMPUTE@D@@@@FILL(1) SAC XGANXT,000000 . NEXT SUBOJ )@@G@@SCRIPT@G@@@@FILL(1) SAC XGSTF0,000000 . TALLY CELL TO SUBSCOK )@@G@@RIPT LIST @F@@@@FILL(1) SAC XGLARG,000000 . LOAD SUBSCRIPOL )@@G@@T AND DV @D@@@@FILL(1) SAC XGTLYC,000000 . CALL EXTLYC OM )@@G@@@D@@@@FILL(1) SAC XGSUBR,000000 . CALL EXSUBR @D@@@@FILL(1ON )@@G@@) SAC XGCRSC,000000 . CALL EXCRSC @D@@@@FILL(1) SAC XGROO )@@G@@ESA,000000 . SET RESULT @D@@@@FILL(1) SAC XGRESB,000000 OP )@@G@@ . SET RESULT @D@@@@FILL(1) SAC XGSTV0,000000 . FOQ )@@G@@INISH CRSC @E@@@@FILL(1) SAC XGPOPS,000000 . CLEAR STACK ENOR )@@G@@TRY @B@@@@FILL(1) SAC 000000,000000 . @#@@@@ CENOS )@@G@@D @#@@@@XGSARY EQU 0 @#@@@@XGSUSC EQU 1 @#@@@@XGSVAG EQUOT )@@G@@ 2 @#@@@@XGSTP1 EQU 3 @#@@@@XGSVR4 EQU 4 @#@@@@XGSBVL EQUOU )@@G@@ 5 @C@@@@FILL(1) EQU 6 . UNUSED *** @#@@@@XGSFLLOV )@@G@@ EQU 7 @#@@@@XGSCSC EQU 8 @#@@@@XGSSNG EQU 9 @#@@@@XGSSBFOW )@@G@@ EQU 10 @#@@@@XGSETS EQU 0 @^@@@@XGSTRS EQU 3 . @^@@@@OX )@@G@@XGCOMS EQU 11 . @^@@@@XGBRKT EQU 16 . @^@@@@ . ** TEMPOROY )@@G@@ARY EQU'S **@H@@@@SDBFLM EQU 12 . $$$ PARTITIONOZ )@@G@@S SDBFCL INTO 2 SECTIONS@D@@@@DXGAXSLT EQU SGDXSD-SGDXNX+1 . AGGR STACPA )@@G@@K ENTRY SIZE@C@@@@DXGFSLT EQU 9 . FUNCTION STACK ENTRY SIZE @F@@@@PB )@@G@@AQDVMSLN EQU 1 . OFFSET OF MAX LENGTH FIELD IN STRING DV AR @E@@@@PC )@@G@@ERCGSTER EQU 47 . ILLEGAL OP IN STATIC MODE - OTHER USED @C@@@@ERCGSWPD )@@G@@ EQU 48 . ILLEGAL OP IN STATIC MODE @D@@@@KBXMXP EQU 35 . MAXPE )@@G@@IMUM FIXED BINARY PRECISION @F@@@@KSLPRE EQU 17 PF )@@G@@ . SUPPLIED LENGTH PRECISION@H@@@@ERGPRG EQU 50 . SCALEPG )@@G@@R ARGUMENT SUPPLIED TO AGGREGATE PARAMETER@ @@@@ERCGNDCL EQU 49 PH )@@G@@ .@D@@@@ERCGBSBV EQU 54 . BASED PARAMETER PASSED BY VALUE @D@@@@PI )@@G@@DCGTSLOT EQU 1 . TEMPORARY STACK WIDTH @G@@@@SUBSCR EQUPJ )@@G@@ DCONSU . SUBSCRIPT CHECKING FLAG IN DCGONF @D@@@@LFDGE PK )@@G@@ EQU +(IN 0,0,1,0) . FUDGE FOR LOCAL DATA @ @@@@AGSSL EQU SGDPL )@@G@@SLB-FH1 . @C@@@@AGMPLR EQU SGDMLR . MULTIPLIER AW @ @@@@PM )@@G@@AGTCV EQU SGDCVB-FH1 . @B@@@@AGADDR EQU SGDSLB-FH1 . ADDREPN )@@G@@SS AW @ @@@@AGBRO EQU AGARTN .@^@@@@AGDV EQU AGIM1 . PO )@@G@@@ @@@@AGALST EQU SGDFAL .@A@@@@DXGFCK EQU DCGSLT+DXGFSLT PP )@@G@@ . @I@@@@DXGFCHK2 EQU DXGFSLT+DXGAXSLT . NUMBER OF WORDS TO PQ )@@G@@MOVE FOR CHECK ENTRY @F@@@@FLITRG EQU A10+1 . GEN LITERALPR )@@G@@ STORED IN F REGISTER @]@@@@/. **XGEN** @^@@@@ USING SGDSCT,X7PS )@@G@@@#@@@@XGENFL* LLOC @D@@@@ LOAD A6,XGSVAL*01000+XGSFLL,I PT )@@G@@. LOADS 7 @A@@@@ GOTO XGBEGN .@#@@@@XGENS* LLOPU )@@G@@C . @D@@@@ LOAD A6,XGSVAL*01000+XGSSNG,I . LOADS 9 @#@@@@PV )@@G@@XGBEGN LABEL @E@@@@ GNTR 1 . STORE REGS X1-X5 AND A7-APW )@@G@@10 AND F. @#@@@@XGBGN1 LABEL . @F@@@@ STORE A6,DXGSTT . PREPX )@@G@@PARES DXGOPS IN Q3 & DXGOPN IN Q4 @ @@@@ MOVE DXGMSK,XGSCLR .PY )@@G@@@ @@@@ MOVE DXGSBG,XGSBRG @I@@@@ IF SUBSCR,ON,DCGONPZ )@@G@@F THEN,XGNEXT . -> ENABLED SUBSCRIPT CHECKING SO S @E@@@@ MOVQA )@@G@@E DXGSBG,XGNBRG . MASK FOR SUBREGISTERS @D@@@@ GOTO XGNQB )@@G@@EXT . START GENERATION @#@@@@XGNXT1 LABEL . @D@@@@ QC )@@G@@ GETC . READ TOKEN(PTR) @#@@@@XGNXT0 LABEL . QD )@@G@@@E@@@@ GETC . READ NEXT CHARACTER @#@@@@QE )@@G@@XGNEXT LABEL . @F@@@@ IF A8,GE,ACQNS,I THEN,XGSPSM . SPECIQF )@@G@@AL PUNCTUATION @E@@@@ IF A8,LT,ACOPER,I THEN,XGOPND . FOUNQG )@@G@@D OPERAND @#@@@@. **OPERATOR** @#@@@@XGOP LABEL . @F@@@@ QH )@@G@@ LOADA X5,XGTBL2 . BUILT-IN FUNCTIONS BRANCH USING XGTBL2@H@@@@ QI )@@G@@ IF A8,GE,ACABS,I THEN,XGOP0 . SKIP TO USE XGTBL2 FOR BIFUNC QJ )@@G@@@E@@@@ LINK XGBSDO . RESOLVE BASED ON OP TYPE @F@@@@QK )@@G@@ LOADA X5,XGTBL1 . REGULAR OPERATORS BRANCH USING XGTBL1 @#@@@@QL )@@G@@XGOP0 LABEL . @ @@@@ LOADA X11,XGOP3 . @#@@@@XGOP1 LOCQM )@@G@@AL . @F@@@@ LAND A8,0377,I . 8 LOW ORDER BITS IDENTIQN )@@G@@FY OP @^@@@@ ADD X5,A8 @^@@@@ USING WORD,X5 .@ @@@@QO )@@G@@ LOAD F,W1H1 . @D@@@@ STORE F,DXGARG . QP )@@G@@STORE ADDRESS @E@@@@ LOAD F,W1H2 . LOAD POINTER TO ACQQ )@@G@@TION TABLE @F@@@@ STORE F,DCGODE . SAVE POINTER TO ACTQR )@@G@@ION TABLE @E@@@@XGOP2 LABEL . IF REPEAT PERFORMED X5 IS FIRST RELOQS )@@G@@ADED @D@@@@ LOAD X5,DCGODE . MODIFY BY OFFSET @F@@@@QT )@@G@@ LOAD X6,W1H1,X5 . GET OFFSET TO TARGET ROUTING @D@@@@QU )@@G@@ LINK 0,X6 . LINK TO TARGETING@E@@@@ LOAQV )@@G@@D X6,W1H2,X5 . GET OFFSET TO STAGING @G@@@@ LINK 0,XQW )@@G@@6 . OFFSET TO PROPER GENERATION ROUTINE IN X4@ @@@@ LOAQX )@@G@@D A7,X4 .@^@@@@ SRBD A7,1 @H@@@@ ADD X5,QY )@@G@@A7 . DECODE RETURNED OFFSET INTO TABLE POSITION @ @@@@ QZ )@@G@@ LOAD X2,W1H2+1 . @B@@@@ IF A8,LT,0,I THEN,XGOP6 . RA )@@G@@@ @@@@ LOAD X2,W1H1+1 . @#@@@@XGOP6 LABEL . @^@@@@ RB )@@G@@ GENMR R,X2 . @D@@@@ JMP . RETURN ADDRESS SET INTO STACK ARC )@@G@@BOVE @#@@@@XGOP4 LABEL . @A@@@@ SET DCGRPT,OFF,DCGFLG RD )@@G@@@[@@@@. @G@@@@. KLUDGE KLUDGE KLUDGE KLUDGE KLUDGE KLUDGE RE )@@G@@ KLUDGE KLUDGE @G@@@@. KLUDGE KLUDGE KLUDGE KLUDGE KLUDGE KRF )@@G@@LUDGE KLUDGE KLUDGE @G@@@@. KLUDGE KLUDGE KLUDGE KLUDGE KLUDRG )@@G@@GE KLUDGE KLUDGE KLUDGE @[@@@@. @G@@@@ ADD A0,1,I RH )@@G@@. RESET RETURN ADDRESS ONTO STACK***** @^@@@@ GOTO XGORI )@@G@@P2 @#@@@@XGOP3 LABEL . @[@@@@. @C@@@@. THIS IS A POSSIRJ )@@G@@BLE PLACE FOR A STUDY @G@@@@. MAYBE THE CONSTANT FLAG SRK )@@G@@HOULDN'T BE TURNED OFF HERE @[@@@@. @A@@@@ SET SDVRCN,OFRL )@@G@@F,SGDCLS . @F@@@@XGCNRT* LABEL . RETURN HERE FROM UNRM )@@G@@ARY OPS @G@@@@ IF DCGRPT,ON,DCGFLG THEN,XGOP4 . BACK FOR RN )@@G@@MORE ARGUMENTS @#@@@@XGEXPR LABEL . @E@@@@ SET SGDEXP,ONRO )@@G@@,SGDID . SET EXPRESSION BIT @#@@@@XGLOOP LABEL . @G@@@@ RP )@@G@@ LOAD A8,DXGOPN . GET THE OPERAND STATE FM DXGSTT @G@@@@RQ )@@G@@ IF A8,NE,XGSSNG,I THEN,XGNXT0 . IF SINGLE OPERAND RETURN RR )@@G@@@#@@@@XGEND LABEL . @#@@@@ GRTNS 1 @ @@@@. **PROCESS SPECIARS )@@G@@L SYMBOL** @^@@@@ USING WORD,X2 .@#@@@@XGSPSM LABEL . @ @@@@RT )@@G@@ ANU,U A8,ACPRNT . @F@@@@ AND,U A9,017000 . MASKRU )@@G@@ BITS FOR BRANCHING INTO A10 @G@@@@ SRB A10,8 . RV )@@G@@ SELECT BITS WHICH IDENTIFY CODE @G@@@@ LOAD X5,A10 . X5 ISRW )@@G@@ DOUBLE WORD INDEX INTO PUNCT BRANCH TABLE@ @@@@ LOAD X2,XGPCTBRX )@@G@@,X5 .@^@@@@ GOTO 0,X2 @#@@@@XGCCST LABEL . @G@@@@ RY )@@G@@ LOAD X11,XGPCTB+1,X5 . MUST ALLOW FOR H1 JAP1/14 @G@@@@RZ )@@G@@ GOTO 0,X11 . PART OF XGPCTB JAP1/14 SA )@@G@@@A@@@@. **PROCESS META CODE IDENTIFIER** @B@@@@ . X5 (AND A8) POINT TOSB )@@G@@ SD OF OPERAND @C@@@@ . A10 HOLDS THE ADDRESS WORD TAKEN FROM THE SDSC )@@G@@@ @@@@ . A7 IS USED FOR SCRATCH @E@@@@ . X2 POINTS TO APPROPRIATE PSD )@@G@@ROCESSING MODULE IN XGTBLE @#@@@@XGOPND LABEL . @F@@@@ LINSE )@@G@@K XGPUSH . PUSH SGDSCT ONTO STACK FOR OPAND @ @@@@ USISF )@@G@@NG SGDSCT,X7 . @#@@@@XGOPN0 LABEL . @F@@@@ STORE A8,SGDRSDSG )@@G@@ . SAVE SD POINTER IN STACK @E@@@@ LSDP X5,A8 SH )@@G@@ . LOAD PNT TO SD INTO X5 @^@@@@ USING SDSECT,X5@#@@@@SI )@@G@@XGOPN1 LABEL . @D@@@@ LOAD A10,SDA1BS-FH1 . LOAD AW 1 FM SJ )@@G@@SD @#@@@@XGOPNA LABEL . @F@@@@ MOVE SGDCLS,SDCLS1 .SK )@@G@@ FILL STACK W/SD ATTRIBTURS @F@@@@ MOVE SGDEPT,SD2SP .SL )@@G@@ MOVE SCALE AND PRECISION @G@@@@ LOAD A6,SDCLS0 .SM )@@G@@ USE SD TYPE AS INDEX INTO TABLE @F@@@@ AND,U A6,15 . SN )@@G@@ REMOVE STORAGE TYPE BITS @F@@@@ STORE A7,SGDID SO )@@G@@ . SET SGD STACK ENTRY TYPE @D@@@@ IF SD0BSD++SD0CNSP )@@G@@T,OFF,SDCLS0 THEN,XGOPNB@F@@@@ SET SGDRES,ON,SGDID . SAY BSSQ )@@G@@D VAR NEEDS RESOLVING @#@@@@XGOPNB LABEL . @F@@@@ IF SDCSR )@@G@@HCK,OFF,SDCLS3 THEN,XGIND . VARIABLE CHECKED? @F@@@@ SET SGDSS )@@G@@CHR,ON,SGDID . SET VARIABLE CHECKED FLAG @#@@@@XGIND LABEL . ST )@@G@@@E@@@@ SLB A7,2 . INDEX ON FOUR WORD GROUPS @E@@@@SU )@@G@@ ADD A7,DXGOPS . ADD IN STATE FACTOR @E@@@@ SV )@@G@@ ADD A7,DXGTPS . TYPE TESTING STATE @^@@@@ LOASW )@@G@@D X2,A7 . @^@@@@ USING WORD,X2 @F@@@@ LOAD X3,XGTBLESX )@@G@@-SD0ART*4-XGSVAL,X2 . OFFSET TO MODULE @F@@@@ GOTO 0,X3 SY )@@G@@ . SPLIT TO APPROPRIATE MODULE @I@@@@ . ---------------------SZ )@@G@@-------------------------------------------------------- @B@@@@. **OPTA )@@G@@ERANDS IN MAXIMUM LENGTH MODE** @I@@@@ . ---------------------------TB )@@G@@-------------------------------------------------- @F@@@@ . MAXIMUM LTC )@@G@@ENGTH MODE OCCURS ONLY DURING THE PROCESSING OF STRING@F@@@@ . FUNCTION TD )@@G@@ARGUMENTS FOR WHICH A DUMMY ARGUMENT MUST BE CREATED. @E@@@@ . IN MAX LETE )@@G@@NGTH MODE, THE MAX LENGTH FIELDS OF STRING DV'S @F@@@@ . (INCLUDING THE TF )@@G@@TOP+1 WORD OF ARRAY DV'S AND THE DUMMY DV OF @F@@@@ . STRING RETURNINTG )@@G@@G FUNCTIONS) ARE EXAMINED TO CALCULATE THE MAX @F@@@@ . LENGTH FIELD OFTH )@@G@@ THE DV OF THE DUMMY ARGUMENT TO BE CREATED. @F@@@@ . AFTER THIS INFOTI )@@G@@RMATION IS CALCULATED THE ARGUMENT IS RESCANNED @F@@@@ . SO THAT CODE TOTJ )@@G@@ GENERATE THE TEMPORARY IS CREATED. IF EVER @F@@@@ . AUTOMATIC ARITHTK )@@G@@MATIC TO STRING CONVERSIONS ARE IMPLEMENTED @B@@@@ . SEVERE CHANGED TL )@@G@@WILL BE NEEDED HERE. @I@@@@ . ---------------------------------------TM )@@G@@-------------------------------------- @#@@@@XGMLA LABEL . @D@@@@TN )@@G@@ LINK XGIGNR . SKIP ARG/SS LIST @G@@@@ IF TO )@@G@@ A8,LT,ACGE,I THEN,XGIGNR . IGNORE G-CODE WHICH IS NOT @G@@@@ TP )@@G@@ IF A8,GE,ACCAT,I THEN,XGIGNR . A COMPARISON OP (=<> ETC) @#@@@@TQ )@@G@@XGMLA1 LABEL . @G@@@@ MOVE SGDAID,XGCONO,2 . RESULT OF COMPTR )@@G@@ARE IS STRING LENGTH @G@@@@ GMARK SGDCDE . . REMEMTS )@@G@@BER LOC OF CODE FOR OPERAND @^@@@@ GOTO XGNXT0 @D@@@@XGMLE TT )@@G@@ LABEL . ENTRY NAME IN MAX LENGTH COMPUTATION @ @@@@ USING SDSTU )@@G@@ECT,X5 . @C@@@@ IF SDARST,OFF,SDCLS1 THEN,XGMLA . @E@@@@TV )@@G@@ IF SDBLUS,ON,SDCLS1 THEN,XGMLS1 ELSE,XGBNTR . @F@@@@XGMLS TW )@@G@@ LABEL . STRING VAR OR CONST IN MAX LENGTH COMPUTATION @F@@@@ TX )@@G@@ IF SDVRCN+SDCCNC,ON,SDCLS1 THEN,XGMLSC . CONSTANT @#@@@@XGMLS1TY )@@G@@ LABEL . @F@@@@ ADD A10,AQDVMSLN,I . SET AW TO REF MATZ )@@G@@X LENGTH FLD@C@@@@ STORE A10,AGRL1 . SET AW @E@@@@UA )@@G@@XGMLS2 LABEL . ENTRY POINT FROM STRING CONSTANTS BELOW @H@@@@ UB )@@G@@ MOVE SGDAID,XGCON1 . SET STACK ID, CLS, SCALE AND PRECISION UC )@@G@@@^@@@@ LINK XGIGNR @F@@@@ GMARK SGDCDE . .UD )@@G@@ SAVE LOC OF THIS OPNS CODE @^@@@@ GOTO XGNEXT @#@@@@XGMLSCUE )@@G@@ LABEL . @E@@@@ LOADXM X6,SDLCOF . OFFSET TO CONSTANUF )@@G@@T @ @@@@ LOADXI X6,AGXR0+FH1 .@E@@@@ SUB X6,1,I UG )@@G@@ . AW POINTS TO MAX LENGTH FIELD@B@@@@ STORE X6,AGRL1 UH )@@G@@ . FORM AW@B@@@@ GOTO XGMLS2 . MERGE@I@@@@ . ---UI )@@G@@------------------------------------------------------------------------UJ )@@G@@-- @B@@@@. ** OPERANDS IN STATIC TYPE CHECK MODE** @I@@@@ . ---------UK )@@G@@-------------------------------------------------------------------- UL )@@G@@@G@@@@ . STATIC STATE IS ENTERED BY THE DRIVER (CGBK) DURING THE CREATIOUM )@@G@@N @F@@@@ . OF DOPE VECTORS FOR STATIC VARIABLES. NATURALLY IN THIS UN )@@G@@STATE @E@@@@ . ONLY STATIC VARIABLES AND CONSTANTS ARE ACCEPTABLE SINCE UO )@@G@@@B@@@@ . NO OTHER VARIABLES HAVE BEEN ALLOCATED.@B@@@@ . X4 POINTS TO SUP )@@G@@D OF POSSIBLE CORRECTION@F@@@@XGSTST LABEL . . STRINUQ )@@G@@G IN STATIC CHECK MODE @E@@@@ LOAD X4,DLXVC . SUPPLUR )@@G@@Y 1 IF IN ERROR @^@@@@ GOTO XGSTCN @G@@@@XGSART LABEL . US )@@G@@ . ARITHMETIC IN STATIC CHECK MODE @^@@@@ LOAUT )@@G@@D X4,DLXB1 @#@@@@XGSTCN LABEL . @^@@@@ USING SDSECT,X5@E@@@@UU )@@G@@ IF SDVRCN,OFF,SDCLS1 THEN,XGSTVR . NOT CONSTANT @F@@@@XGSTLWUV )@@G@@ LABEL . . CONTINUE PROCESSING OPERAND @^@@@@ UW )@@G@@ USING WORD,X2 .@F@@@@ LOADXM X3,XGTBLE-2-SD0ART*4-XGSVAL,X2 .UX )@@G@@ TO NORMAL MODULE @#@@@@ GOTO 0,X3@G@@@@XGSTVR LABEL . UY )@@G@@ . CHECK FOR POSSIBLE ST VARIABLE @H@@@@ IF SD0UZ )@@G@@STA,ON,SDCLS0 THEN,XGSTWN . -> CAN BE USED AFTER WARNING @#@@@@XGSTERVA )@@G@@ LABEL . @A@@@@ EXERR ERCGSTER LEVEL,2 @E@@@@ . SD (X5), VB )@@G@@'IS ILLEGAL IN DIMENSION, LENGTH, OR INITIAL; @D@@@@ . ATTRIBUTE OF STVC )@@G@@ATIC VARIABLE', SD (X2), ' IS USED' @^@@@@ LINK XGIGNR @D@@@@VD )@@G@@ LINK BCKPGC . BACK UP GETC ONE TOKEN @^@@@@ LOAVE )@@G@@D A8,X4 . @C@@@@ GOTO XGOPN0 . MERGE T @#@@@@VF )@@G@@XGSTWN LABEL . @B@@@@ IF A8,EQ,X4 THEN,XGSTLW . @G@@@@VG )@@G@@XGSTWA LABEL . ENTRY POINT WHEN X4 HAS NOT BEEN SET TO CORRECTION SD VH )@@G@@@A@@@@ EXERR ERCGSW LEVEL,1 . @F@@@@ . 'NON-CONSTANT OPERANDVI )@@G@@ (' SD (X5), 'IN DIMENSION, LENGTH, OR; @B@@@@ . INITIAL ATTRIBUTE OF VJ )@@G@@STATIC VARIABLE.' @^@@@@ GOTO XGSTLW . @E@@@@XGSTFI LABEL . VK )@@G@@ . FILE IN STATIC MODE @A@@@@ LOAD X4,KFOSD VL )@@G@@ . @E@@@@ IF SDPARM,ON,SDCLS2 THEN,XGSTER ELSE,XGSTLVM )@@G@@W . @#@@@@XGSTNR LABEL . @E@@@@ IF SDBLUS,ON,SDCLS1 THENVN )@@G@@,XGSTT0 . USER DEFINED @ @@@@ LOAD A9,SDBFCL . @D@@@@ VO )@@G@@ IF A9,LT,SDBFLM THEN,XGSTWA ELSE,XGSTT1 . @#@@@@XGSTT0 LABEL . VP )@@G@@@C@@@@ IF SDEXTN,OFF,SDCLS2 THEN,XGSTT1 @D@@@@ LOAVQ )@@G@@D X6,SDPLST . ARG LIST POINTER @F@@@@ GOTO XGSTT2 .VR )@@G@@ JUMP INTO LOOP TO TEST EACH PARAMETER @#@@@@XGSTT3 LABEL . @ @@@@VS )@@G@@ LOAD X6,ELWNXT,X6 .@#@@@@XGSTT2 LABEL . @B@@@@ IF VT )@@G@@ X6,ZERO THEN,XGSTWA . @ @@@@ LOAD X3,ELWSD,X6 .@ @@@@VU )@@G@@ USING SDSECT,X3 .@D@@@@ IF SD4ENT+SDSTRU,ON,SDCLSVV )@@G@@4 THEN,XGSTT1 @C@@@@ IF SDARRY,OFF,SDCLS2 THEN,XGSTT3 . VW )@@G@@@#@@@@XGSTT1 LABEL . @^@@@@ USING SDSECT,X5@E@@@@ IF VX )@@G@@ SDARST,OFF,SDCLS1 THEN,XGSART ELSE,XGSTST . @D@@@@XGSTLA LABEL VY )@@G@@ . LABEL IS STATIC @ @@@@ LOAD X4,DUVLB . VZ )@@G@@@C@@@@ IF A8,EQ,X4 THEN,XGSTLW ELSE,XGSTER @I@@@@ . ---------WA )@@G@@-------------------------------------------------------------------- WB )@@G@@@ @@@@. **OPERANDS IN VALUE MODE** @I@@@@ . ---------------------------WC )@@G@@-------------------------------------------------- @F@@@@ . VALUE MODWD )@@G@@E IS THE NORMAL STATE OF AFFAIRS FOR MOST OPERANDS. @E@@@@ . SUB BRANCWE )@@G@@HING IS MADE HERE ACCORDING TO THE TYPE OPERAND @D@@@@ . AS DETERMINED FWF )@@G@@ROM THE SD'S (SYMBOL TABLE ENTRIES).@E@@@@XGARST LABEL . CHECK IF OPEWG )@@G@@RAND IS VARIABLE OR CONSTANT @F@@@@ IF SDVRCN,ON,SDCLS1 THENWH )@@G@@,XGCNT . OPERAND IS A CONSTANT@D@@@@XGVRBL LABEL . ENTRY FWI )@@G@@ROM LABEL VARIABLE@D@@@@ IF SDARRY,ON,SDCLS2 THEN,XGARY1 . ARWJ )@@G@@RAY @G@@@@ IF SDMEMS,ON,SDCLS2 THEN,XGMEMS . SCAL MEM OF STWK )@@G@@RUCTURE @#@@@@XGOPN2 LABEL . @F@@@@ STORE A10,AGRL1 WL )@@G@@ . SET AW IN SG FOR REAL PART @#@@@@XGOPN3 LABEL . @G@@@@ WM )@@G@@ IF SDRLCX,OFF,SDCLS1 THEN,XGLOOP . REAL VARIABLE THEN DONE @F@@@@WN )@@G@@ LOAD A9,SDRTC . GET SPACE ALLOTED TO VAR @E@@@@WO )@@G@@ SRB A9,1 . USE 1/2 FOR IMAG PART @D@@@@ WP )@@G@@ ADD A10,A9 . GET IMAG ADDRESS@F@@@@ STORE A10WQ )@@G@@,AGIM1 . SET AW IN SG FOR IMAG PART @C@@@@ GOTO XGLWR )@@G@@OOP . FINISHED @#@@@@XGMEMS LABEL . @G@@@@ IF WS )@@G@@ SDARST,ON,SDCLS1 THEN,XGOPN2 . STRING HAS DOPE VECTOR @F@@@@ WT )@@G@@ STORE A10,AGARL1 . SET AUX WORD FOR REAL BASE @ @@@@ WU )@@G@@ LOADA A10,AGARL1 @F@@@@ SLB A10,18 . MOVE WV )@@G@@TO AW BASE FIELD POS @C@@@@ GOTO XGOPN2 . MERGWW )@@G@@E @#@@@@. **CONSTANTS** @#@@@@XGCNT LABEL . @G@@@@ MOVWX )@@G@@E SGDRDS,SDLCOF . MOVE SD DISPLACEMENT TO AW IN SGD @#@@@@XGCNT1WY )@@G@@ LABEL . @E@@@@ MOVE SGDRBS,AGXR0+FH1 . SET ABSOLUTE ADDRWZ )@@G@@ESS @F@@@@ SET SGDSGN,OFF,SGDCLS . MAKE SURE CONST IS POSITXA )@@G@@IVE @E@@@@ IF SDRLCX,OFF,SDCLS1 THEN,XGLOOP . FINISHED XB )@@G@@@F@@@@ MOVE AGIM1,AGRL1 . IMAG CONST SO SET IMAG PART XC )@@G@@@H@@@@ MOVE AGRL1,AGDZRO-AGRX0+(IN 63,0,1,AGAW) . SET REAL XD )@@G@@PART TO ZERO@I@@@@ GOTO XGEXPR . MAKE INTO AN EXPRXE )@@G@@ESSION-SO CONVERSIONS WORK @#@@@@XGFILE LABEL . @F@@@@ IF XF )@@G@@ SDPARM,ON,SDCLS2 THEN,XGOPN2 . PARAMETER FILE VAR @E@@@@ MOVXG )@@G@@E SGDRDS,SGDRSD . AW TO REFERENCE SD @D@@@@ MOVE SGDXH )@@G@@RBS,AGXR0+FH1 . FILL BASE FIELD @^@@@@ GOTO XGLOOP @#@@@@XI )@@G@@XGETRY LABEL . @F@@@@ . THE GAMMA CODE FOR FUNCTIONS IS AN SD POINTERXJ )@@G@@ FOR THE FUNCTION @D@@@@ . FOLLOWED BY AN ARGUMENT LIST (WHICH MAY BE NUXK )@@G@@LL OR)@D@@@@ . ACRBRK , POSTFIX EXPRESSION, ACCOMA, ... , ACLBRK. @G@@@@XL )@@G@@ . EACH ACRBRK OR ACCOMA HAS A POINTER IN ITS 2ND QUARTER (Q2 OR Q4) XM )@@G@@@F@@@@ . TO A REPRESENTATIVE SD FOR THE ARGUMENT SO THAT APPROPRIATE XN )@@G@@@C@@@@ . DUMMY DV'S OR TEMPS MAY BE SET UP AS NEEDED. @G@@@@ . AFTER PROXO )@@G@@CESSING THESE ARGUMENTS (FIRST SCANNING THE REPRESENTIVE DV @F@@@@ . ANDXP )@@G@@ THEN SCANNING THE WHOLE ARGUMENT) A CALL TO THE FUNCTION @#@@@@ . IS XQ )@@G@@GENERATED. @F@@@@ IF SDBLUS,OFF,SDCLS1 THEN,XGBNTR . BUILT XR )@@G@@IN ENTRY @A@@@@. *USER DEFINED FUNCTION REFERENCE @I@@@@ IF XS )@@G@@ SDARST,ON,SDCLS1 THEN,XGSTRY . USER DEFINED FUNCT RTNS STRING XT )@@G@@@D@@@@. **USER DEFINED FUNCTION RETURNING ARITHMETIC VALUE @B@@@@ XU )@@G@@ LOAD A3,SGDID . @A@@@@ AND,U A3,SD0ART++0760XV )@@G@@ . @B@@@@ STORE A4,SGDID . @E@@@@ LOAXW )@@G@@D A7,2,I . ASSUME TYPE REQUIRES 2 WORDS @D@@@@ IF SDFXX )@@G@@XFL,ON,SDCLS1 THEN,XGNTTM . FLOAT @E@@@@ IF SDDCBN,OFF,SDCLXY )@@G@@S1 THEN,XGNTTM . DEC-FIXED @C@@@@ LOAD A7,1,I .XZ )@@G@@ FIXED BIN @#@@@@XGNTTM LABEL . @F@@@@ LOAD A8,A7 . A7 YA )@@G@@CONTAINS THE NUMBER OF WORDS NEEDED @^@@@@ GTMP R,A8 @^@@@@YB )@@G@@ STORE A8,SGDRDS@A@@@@ MOVE SGDRBS,AGXR10+FH1 . @]@@@@YC )@@G@@ GEN@A@@@@ GINST OPLA,AGRA1,AGRL1,U @I@@@@ IF YD )@@G@@ SDRLCX,OFF,SDCLS1 THEN,XGNTY1 . SKIP GETTING MORE TEMPS FOR IMAG YE )@@G@@@G@@@@ LOAD A8,A7 . RELOAD A8 WITH # OF WRDS NEEDED FOR TEMYF )@@G@@P AW @^@@@@ GTMP R,A8 @D@@@@ GOTO XGNTY1 YG )@@G@@ . READY FOR MERGE @C@@@@. ** USER DEFINED FUNCTION RETURNING STRINYH )@@G@@G @#@@@@XGSTRY LABEL . @E@@@@ MOVE AGRL1,AGSTK . SET RESYI )@@G@@ULT TO STRING STACK @F@@@@ LOAD A3,SGDID . YJ )@@G@@ JAP1/14@F@@@@ AND,U A3,SD0STR++0760 . YK )@@G@@ JAP1/14@F@@@@ STORE A4,SGDID . YL )@@G@@ JAP1/14@G@@@@ STORE A10,AGARL1 . A10 = AYM )@@G@@DDRESS WORD FROM XGOPN1 . @#@@@@ GENM @G@@@@ GINYN )@@G@@ST OPLA,AGRA1,AGARL1,U . LOAD ADDRESS FOR DV TEMPLATE @G@@@@ YO )@@G@@ GSUB EXSTMP . ALLOCATE STRING TEMP ACCORDING TO DV @#@@@@YP )@@G@@ GFIN @F@@@@. **ALLOCATE SPACE FOR ARG LIST AND GIVE CONTROLYQ )@@G@@ ARG LIST STARTS @#@@@@XGNTY1 LABEL . @E@@@@ LOAD A8,SDNARGYR )@@G@@ . NUMBER OF ARGUMENTS TO EXPECT @^@@@@ ADD A8,1,I . @^@@@@YS )@@G@@ GTMP R,A8 . @E@@@@ STORE A8,SGDTLV . SAVE OFFSET FORYT )@@G@@ LATER FREEING @E@@@@ STORE A8,SGDFAT . SAVE START OF ARG LYU )@@G@@IST OFFSET @E@@@@ STORE A8,SGDRAD . INITIALIZE ARGUMENT LIST YV )@@G@@AW @A@@@@ MOVE SGDRAB,AGXR10+FH1 . @F@@@@ GENM . YW )@@G@@ ADDRESS OF RETURNED VALUE LOCATION @G@@@@ GINST OPSYX )@@G@@A,AGRA1,AGARL1 . STORE AS FIRST ENTRY IN ARGLIST@F@@@@ GSUYY )@@G@@B EXGDVA . TELL EX CONTROL ARG LIST STARTS NOW@#@@@@ GFIYZ )@@G@@N @E@@@@ STORE X7,AGIM1 . SAVE COMPILE STACK POINTER ZA )@@G@@@B@@@@ IF SDNARG,ZERO THEN,XGNFC1 . @E@@@@ GETC ZB )@@G@@ . SKIP SD POINTER IN META-CODE @G@@@@ XGPUSH 'SIZE',DZC )@@G@@XGFSLT-DCGSLT . NEED MORE SPACE FOR FUNCTION @C@@@@ MOVE SGDZD )@@G@@FSA,DXGSTT . SAVE XGEN STATE @ @@@@ MOVE SGDFSM,DXGMSK .@ @@@@ZE )@@G@@ LOAD X4,SDPLST . @^@@@@ STORE X5,SGDFSD@ @@@@ ZF )@@G@@ GOTO XGBMP1 . @H@@@@ . ---------------------------------------ZG )@@G@@------------------------------------@ @@@@/. **BUILT IN FUNCTIONS** ZH )@@G@@@I@@@@ . ---------------------------------------------------------------ZI )@@G@@-------------- @F@@@@ . THE BUILT-IN FUNCTION CLASS IS USED TO DETERMZJ )@@G@@INE WHAT ACTION @F@@@@ . IS NECESSARY FOR EACH ARGUMENT. STACK ITEMS ZK )@@G@@MAY BE GENERATED @E@@@@ . FOR EACH ITEM ALONG WITH APPROPRIATE CONVERSIZL )@@G@@ON MACHINE @E@@@@ . CODE SO THAT THE ARGUMENT WILL BE OF THE PROPER TYPZM )@@G@@E. @F@@@@ . AFTER THE ARGUMENTS ARE SCANNED THE OP CODE IS PLACED IN ZN )@@G@@A8 @E@@@@ . AND THE OPERATOR DRIVER IS USED (AS WITH OTHER OPERATORS)ZO )@@G@@@F@@@@ . TO GENERATE (USING CGOA,CGBF, OR CGOS) WHATEVER CODE IS NEEDED ZP )@@G@@@E@@@@ . FOR TARGETING, STAGING, OR CHANGING THE STACK ITEMS. @I@@@@ZQ )@@G@@ . ---------------------------------------------------------------------ZR )@@G@@-------- @B@@@@ . ** REGISTER USAGE DURING COMPILATION **@F@@@@ . X2ZS )@@G@@ IS USED TO COMPUTE CURRENT ACTION AND TO COUNT ARGUMENTS @D@@@@ . X3ZT )@@G@@ POINTS TO CURRENT ACTION POINTER IN XGBFTB @A@@@@ . X4 TEMPORARY SZU )@@G@@DSECT POINTER @^@@@@ . X5 POINTS TO SDSECT @ @@@@ . X6 IS USED FORZV )@@G@@ SCRATCH @C@@@@ . X7 POINTS TO SGDSCT (CODE GENERATOR STACK) @F@@@@ZW )@@G@@ . A10 IS USED TO SAVE THE METACODE POINTER (H2 OF X1 AND A1) @D@@@@ZX )@@G@@ . X10 POINTS TO 1ST FREE WORD FOR GENERATED CODE @B@@@@ . ZY )@@G@@ (H2 OFTEN STORED IN SGDCD1) @B@@@@ . X1 USED BY GETC (H2 STORED IN SGZZ )@@G@@DCD2) @B@@@@ . A1 USED BY GETC (H2 STORED IN SGDCD3) @A@@@@ . A7 HOLDSAA )@@G@@ SELECTOR BITS WORD @D@@@@ . A9 USED FOR SCRATCH (NUM OF VARYING DIAB )@@G@@MENSIONS) @ @@@@ . GENR AND GENMR CLOBBER X2 @B@@@@ . BUILT-IAC )@@G@@N ENTRY NAME ENCOUNTERED@#@@@@XGBNTR LABEL . @ @@@@ USING SGAD )@@G@@DSCT,X7 @ @@@@ USING SDSECT,X5 . @E@@@@ MOVE SGDAE )@@G@@ACT,SDBLAC . OPERATOR CODE FOR BIF @C@@@@ MOVE SGDBST,DXAF )@@G@@GSTT . SAVE XGEN STATE @D@@@@ MOVE SGDBMS,DXGMSK . SAVE XGEN AG )@@G@@MASK STATE @D@@@@ MOVE SGDBAR,DXGNRG . SAVE ARG COUNTER AH )@@G@@@F@@@@ LOAD X2,SDBFCL . BIF CLASS FOR ARG LIST CAN AI )@@G@@@F@@@@ ADD X2,DXGOPS . MODIFIED BY VAL/LEN STATE AJ )@@G@@@F@@@@ LOAD X3,XGBFTB-XGSVAL,X2 . X3=OFFSET TO ARG DESCRIPTION AK )@@G@@@B@@@@ GETC . SKIP '(' @ @@@@ MOVE DXGAL )@@G@@NRG,0,I @H@@@@ LOAD X2,W1U,X7 . X2+OFFSET POINTS TO ARGAM )@@G@@UMENT DESCRIPTION IN SGD@^@@@@ GOTO XGBSRT @D@@@@XGBVL0 LABAN )@@G@@EL . RESET META CODE POINTER @E@@@@ LMCP R,A10 . RAO )@@G@@ELOAD META CODE POINTER WITH A GETC @C@@@@ LINK BCKPGC . BACK UAP )@@G@@P BEFORE THE GETC @E@@@@XGBVAL LABEL . . COMPUTE VALAQ )@@G@@ OF BIF ARGU@D@@@@ SUB X3,1,I . BACK UP ACTION POINTER AR )@@G@@@ @@@@ LOAD X2,DXGNRG @ @@@@ ADD X2,W1U,X7 .AS )@@G@@@E@@@@ STORE X3,SGDBPT,X2 . RESET ACTION TABLE POINTER @F@@@@AT )@@G@@ MOVE DXGOPS,XGSVAL,I . SET VALUE/LENGTH MODE @#@@@@AU )@@G@@XGBVML LABEL . @F@@@@ MOVE DXGOPN,XGSBVL,I . RETURN TO VAV )@@G@@ALUE AFTER EXP @D@@@@XGBARG LABEL . . SCAN BIF ARAW )@@G@@GUMENT@F@@@@ GOTO XGNXT0 . -> EVALUATE ARGUMENT EXPRESSIAX )@@G@@ON @H@@@@XGRBVL LABEL . COME HERE AFTER EVALUATION OFAY )@@G@@ BIF ARGUMENT @E@@@@ LOAD X2,DXGNRG . COUNT NUMBEAZ )@@G@@R OF ARG @ @@@@ ADD X2,DCGSLT,I . @^@@@@ STORE X2,BA )@@G@@DXGNRG@ @@@@ ADD X2,W1U,X7 . @H@@@@ IF A8,EQ,ACRBB )@@G@@BRK,I THEN,XGBEND . -> ALL ARGUMENTS ARE SCANNED @E@@@@ LOABC )@@G@@D X3,SGDBPT,X2 . DESCRIPTION OF LAST ARGUMENT@E@@@@ ADD X3,BD )@@G@@1,I . POINT TO NEXT DECRIPTION @D@@@@XGBSRT LABEL BE )@@G@@ . ENTER HERE FOR FIRST ARG @ @@@@ STORE X3,SGDBPT,X2 .@^@@@@BF )@@G@@ USING WORD,X3 @ @@@@ LOAD X6,W1H2 . @^@@@@ BG )@@G@@ GOTO 0,X6 @E@@@@XGBMAX LABEL . . COMPUTE MAXBH )@@G@@ LENGTH @C@@@@ MOVE DXGOPS,XGSMXL,I . SET STATE @E@@@@BI )@@G@@ GOTO XGBVML . MERGE WITH VALE PROC @F@@@@XGBNONBJ )@@G@@ LABEL . . BIF'S WITH NO ARGS COME HERE @F@@@@ BK )@@G@@ LINK BCKPGC . ADJUST BETA CODE POINTER @D@@@@XGBENDBL )@@G@@ LABEL . . END OF ARG LIST @D@@@@ MOVE DXGBM )@@G@@NAR,DXGNRG . SET COUNT OF ARG @D@@@@ USING SGDSCT,X2 BN )@@G@@ . RESTORE STATE @B@@@@ MOVE DXGSTT,SGDBST . BO )@@G@@@A@@@@ MOVE DXGMSK,SGDBMS . @E@@@@ MOVE DXGNRG,SGBP )@@G@@DBAR . RESTORE OUNER ARG COUNT@F@@@@ LOADA X5,XGTBL2 .BQ )@@G@@ PREPARE TO PROCESS BIF OPERATOR @E@@@@ LOAD A8,SGDACT BR )@@G@@ . OPERATOR CODE FOR BIF @F@@@@ GOTO XGOP0 . -> MEBS )@@G@@RGE WITH OPERATOR PROCESSING @A@@@@ USING SGDSCT,X7 . BT )@@G@@@F@@@@XGITER LABEL . . ITERATE THRU ARRAY/STRU ARG BU )@@G@@@ @@@@ USING WORD,X3 . @F@@@@ MOVE SGDCD1,W1H2+1 BV )@@G@@. SAVE OFFSETS TO EXPRESSION DRIVERS@A@@@@ MOVE SGDCD2,W1H2+2 BW )@@G@@. @^@@@@ LOAD X2,SGDACT@F@@@@ LOADA X6,XGTBL2,X2 . BX )@@G@@LOAD ADDRESS OF BIF OPERATOR TABLE @^@@@@ USING WORD,X6 .@ @@@@BY )@@G@@ LOAD X5,W1H1,X6 . @C@@@@ LINK XGPUSH . GET SBZ )@@G@@TACK SPACE @C@@@@ LINK 0,X5 . GO TO INITALIZATION @D@@@@CA )@@G@@ LINK XGPUSH . GET MORE STACK SPACE @E@@@@ LINCB )@@G@@K XGETSD . FIND REPRSENTATIVE SD @#@@@@ GOTO $+2CC )@@G@@@F@@@@ LINK XGETB9 . SET UP STACK ENTRY FOR SCALARCD )@@G@@@F@@@@ LOAD X2,SGDCD1+DXGAXSLT+2*DCGSLT . OFFSET TO SAX ROUTINECE )@@G@@@^@@@@ LINK 0,X2 @F@@@@ LOAD X3,DXGXPR .CF )@@G@@ EXTABLISH REFERENCE POINT @E@@@@ LOADA X3,DXGAXSLT,X3 CG )@@G@@ . ENTRY FOR ARG VLAUE @A@@@@ STORE X7,SGDBWK+2*DCGSLT,X3@ @@@@CH )@@G@@ MOVE DXGTMP,0,I @E@@@@ MOVE DXGTMP+FS1,IGMOVE,I .CI )@@G@@ CONSTRUCT MACRO CALL @ @@@@ SUB X3,W1U,X7 . @ @@@@ CJ )@@G@@ STORE X3,DXGTMP+FS2 .@ @@@@ GENR DXGTMP .@^@@@@ CK )@@G@@ ADD X7,X3 . @ @@@@ LOADA X5,XGTBL2 .@A@@@@ LOACL )@@G@@D A8,SGDACT+2*DCGSLT . @^@@@@ LINK XGOP1 @B@@@@ LOACM )@@G@@DXM X2,SGDCD2+DCGSLT,X7 . @E@@@@ LOAD X7,SGDBWK+DCGSLT CN )@@G@@ . RESET STACK LEVEL @#@@@@ XGPOP @F@@@@ LINK 0,XCO )@@G@@2 . ENTER END OF LEAF EXPR RTN @E@@@@ MOVE DXGCP )@@G@@STT,SGDBST+2*DCGSLT . RESTORE XGEN STATE @D@@@@ MOVE DXGMSK,SGCQ )@@G@@DBMS+2*DCGSLT . RESTORE MASK @E@@@@ MOVE DXGNRG,SGDBAR+2*DCGSLCR )@@G@@T . RESTORE ARG COUNT @]@@@@ GEN@#@@@@ GMOVE 3,2@E@@@@CS )@@G@@ XGPOP 'SIZE',2*DCGSLT . CLEAR STACK ENTRIES @^@@@@ CT )@@G@@ GOTO XGLOOP @F@@@@XGSASL LABEL . . SAX ROUTINECU )@@G@@ FOR STRING BIF @E@@@@ LOAD X3,DXGXPR . PTR FOR AGGCV )@@G@@ STACK ENTRY@E@@@@ STORE X11,SGDAXR,X3 . SAVE LEAF EXIT ACW )@@G@@DDRESS@C@@@@ MOVE DXGOPN,XGSSBF,I . SET RETURN @E@@@@ CX )@@G@@ LINK XGSDL1 . START SCAN OF RP SD @#@@@@XGSAX1 LABCY )@@G@@EL . @E@@@@ LMCP SGDFMC+FH2,X3 . POINT TO START OF METACODE CZ )@@G@@@F@@@@ GOTO XGNEXT . EVALUATE EXPR FN THIS LEAF DA )@@G@@@F@@@@XGRSBF LABEL . . PROCESS STR BIF ARGUMENT DB )@@G@@@C@@@@ LOAD X4,SGDATP+DCGSLT . LEAF SD PTR@^@@@@ USIDC )@@G@@NG SDSECT,X4@E@@@@ IF SDARRY,OFF,SDCLS2 THEN,XGRVR4 . NOT ARRDD )@@G@@AY @E@@@@ LOAD A9,SDNDIM . NUMBER OF DIMENSIONS DE )@@G@@@A@@@@ STORE A9,SGDANS+DCGSLT . @E@@@@ IF A9,EQ,0,IDF )@@G@@ THEN,XGRVR4 . -> SCALER REFERENCE @#@@@@ GENM @A@@@@ DG )@@G@@ GIFR XGRSB7,AGRL1 . @A@@@@ GLOAD AGRL1 'A' . DH )@@G@@@#@@@@XGRSB7 GLBL . @D@@@@ GINST OPAA,AGRL1,AGRR12 'NO' . LODI )@@G@@AD A ONE @#@@@@ GFIN @E@@@@ LOAD A7,SGDXSW+DCGSLDJ )@@G@@T . SELECTOR BITS WORD @ @@@@ USING SDSECT,X4 . @C@@@@DK )@@G@@ MOVE AGIM1,SDA1BS-FH1 . SET AW FOR DV @ @@@@ LOAD X3,DL )@@G@@SGDIDS . @D@@@@ SUB A9,1,I . SET FOR LOOP INST DM )@@G@@@#@@@@XGRSB4 LABEL . @D@@@@ ADD X3,2,I . OFFSET TO NEXDN )@@G@@T MLPR PAIR @ @@@@ SLBD A6,1 .@ @@@@ JB A6,DO )@@G@@XGRSB4 .@E@@@@ STORE X3,SGDIDS . FORM AW FOR MPLR/BNDP )@@G@@D @#@@@@ GENM @B@@@@ GINST OPLA,AGRA1,AGRR12 'NODQ )@@G@@' . @^@@@@ GFSR AGRX5 . @D@@@@ GINST OPAA,AGRA1,AGIMDR )@@G@@1,H2 'NO' . A1 = 1 + U @E@@@@ GINST OPANA,AGRA1,AGIM1,H1 'NO' DS )@@G@@. A1 = 1 + U - L @D@@@@ GIFR XGRS4B,AGRL1 . IS REAL IN REDT )@@G@@G? @ @@@@ GLOAD AGRL1 .@C@@@@XGRS4B GLBL . DU )@@G@@ NOW IN REG @E@@@@ GINST OPMSI,AGRL1,AGRA1 'NO' . LDV )@@G@@ <- L * EXTENT @#@@@@ GFIN @D@@@@ LOOP A9,XGRSB4DW )@@G@@ . REPEAT FOR EACH DIMENSION @#@@@@ GEN . @D@@@@ GINDX )@@G@@ST OPANA,AGRL1,AGRR12 . ADD NEGATIVE ONE @^@@@@ GOTO XGRVR4 DY )@@G@@@F@@@@XGEAXL LOCAL . . EAX ROUTINE FOR STRING BIF DZ )@@G@@@E@@@@ LINK XGSDL2 . CONTINUE SCAN OF SD @D@@@@EA )@@G@@ GOTO XGSAX1 . EVAL NEXT LEAF @^@@@@ GOTEB )@@G@@O XGEAX8 @G@@@@XGSDL1 LLOC . ROUTINE TO LOOP THRU LEAVEC )@@G@@ES OF STRUCTURE @F@@@@ LOAD X4,SGDXLS,X3 . ADDR (MAJORED )@@G@@ STRUCTURE SD) @G@@@@XGSDL4 LABEL . . LOOP THRU SEE )@@G@@ONS TO NON-STRUCTURE @ @@@@ USING SGDSCT,X3 .@ @@@@ EF )@@G@@ USING SDSECT,X4 . @E@@@@ IF SDSTRU,OFF,SDCLS4 THEN,XGSDEG )@@G@@L3 . -> LEAF FOUND@F@@@@ LSDP X4,SDSON,X4 . FOLLOW EH )@@G@@POINTER TO SON @E@@@@ GOTO XGSDL4 . LOOP TIL LEEI )@@G@@AF IS FOUND @F@@@@XGSDL3 LABEL . SAVE LEAF SD,EJ )@@G@@COUNT IT @C@@@@ STORE X4,SGDATP,X3 . SAVE LEAF SD @ @@@@EK )@@G@@ LOAD X6,SGDXDP,X3 .@E@@@@ ADD X6,1,I . COUNTEL )@@G@@ 1 FOR EACH LEAF SCANNED@ @@@@ STORE X6,SGDXDP,X3 .@B@@@@ EM )@@G@@ LJMP . -> RETURN TO CALLER @C@@@@XGSDL2 LLOC . PICK UP SCANNEN )@@G@@ING OF STRUCTURE @F@@@@ LOAD X3,DXGXPR . BASE ADDRESS OF AEO )@@G@@GGX STACK ENTRY @D@@@@ LOAD X4,SGDATP,X3 . SD OF LAST LEAF SEP )@@G@@CANNED@E@@@@XGSDL5 LABEL . SCAN BROTHERS OF LEAF SD EQ )@@G@@@^@@@@ LOAD A3,X4 @G@@@@ IF A3,EQ,SGDXLS THEN,LJMER )@@G@@P1 . ALL LEAFS HAVE BEEN SCANNED @E@@@@ LOAD X6,SDDAD,X4 .ES )@@G@@ SAVE POINTER TO FATHER SD @E@@@@ LSDP X4,SDBROT,X4 . FOET )@@G@@LLOW POINTER TO FATHER @F@@@@ IF X4,NZERO THEN,XGSDL4 . -> TEU )@@G@@EST BROTHER FOR SON, ETC*[@@@[*SDFF*@<@@@@@@@@@@@@@@@@@@@@@@@@%@@:@]^@@[EV )@@G@@@@[@@?@@^@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@EW )@@G@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@EX )@@G@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@[*H[*H@<@@@@@@@@@[ 1^CDOC*)AK4^[ECDI^@9A@)EY )@@G@@^@0BC'AK2BK4B@)^[MDD^^@)^@)^@4ATA^@)^@2AS)DL[D0)BC0^@)ETOC(QC*)^@)^@)^@)EZ )@@G@@^@)^@)^@)^@)^@)^@)^@)^@)^@)^@)^@)^@)^@)^@)^@)^@)^@)^@)^@)^@)^@)^@)^@)^@)FA )@@G@@^@)^@)^@)^@)^@)^@)^@)^@)^@)^@)[*H[*H@<@@@@@@@@@] 1HCDKE[ EK)CDMCTCDDQCDGFB )@@G@@^[NFDNE- D*'^[HCDNE- EK)ELDC))^@)^@)^@)^@)^@)^@)^@)^@)^@)^@)^@)^@)^@)^@)FC )@@G@@^@)^@)^@)^@)^@)^@)^@)^@)^@)^@)^@)^@)^@)^@)^@)^@)^@)^@)^@)^@)^@)^@)^@)^@)FD )@@G@@^@)^@)^@)^@)^@)^@)^@)^@)^@)^@)[*H[*H@<@@@@@@@@@# L^C(K 0)^@)^@)^@)^@)^@)FE )@@G@@^@)^@)^@)^@)^@)^@)^@)^@)^@)^@)^@)^@)^@)^@)^@)^@)^@)^@)^@)^@)^[S^[[C)^@8[DKCDPD-[^@)^@)^@)JC )@@G@@[C)A)4[DA[C)^@2A*DA@4A-AA@0AK5A@8AC2[C8BC0AS2AKDD-[ELN^[=GD4GC)^@)^@)^@)JD )@@G@@^@)^@)^@)^@)^@)^@)^@)^@)^@)^@)^@)^@)[C)[C)^@)^@)^@)^@)^@)^@)^@)^@)^@)^@)JE )@@G@@^@)^@)^@)^@)^@)^@)^@)^@)^@)^@)[*H[*H@<@@@@@@@@@&[C)^@8[DKCDPD-[^@)^@)^@)JF )@@G@@[C)A)4[DA[C)^@2A0DA@4A-AA@0AK6A@8AC2[C8BC0AS2AKDD-[ELN^[=GD4GC)^@)^@)^@)JG )@@G@@^@)^@)^@)^@)^@)^@)^@)^@)^@)^@)^@)^@)[C)[C)^@)^@)^@)^@)^@)^@)^@)^@)^@)^@)JH )@@G@@^@)^@)^@)^@)^@)^@)^@)^@)^@)^@)[*H[*H@<@@@@@@@@@$[C)^@8[DKCDPD-[^@)^@)^@)JI )@@G@@[C)A)4[DA[C)^@2A8DA@4A-AA@0AK7A@8AC2[C8BC0AS2AKDD-[ELN^[=GD4GC)^@)^@)^@)JJ )@@G@@^@)^@)^@)^@)^@)^@)^@)^@)^@)^@)^@)^@)[C)[C)^@)^@)^@)^@)^@)^@)^@)^@)^@)^@)JK )@@G@@^@)^@)^@)^@)^@)^@)^@)^@)^@)^@)[*H[*H@<@@@@@@@@@*[C)^@8[DKCDPD-[^@)^@)^@)JL )@@G@@[C)A)4[DA[C)^@2B@DA@4A-AA@0AK8A@8AC2[C8BC0AS2AKDD-[ELN^[=GD4GC)^@)^@)^@)JM )@@G@@^@)^@)^@)^@)^@)^@)^@)^@)^@)^@)^@)^@)[C)[C)^@)^@)^@)^@)^@)^@)^@)^@)^@)^@)JN )@@G@@^@)^@)^@)^@)^@)^@)^@)^@)^@)^@)[*H[*H@<@@@@@@@@@([C)^@8[DKCDPD-[^@)^@)^@)JO )@@G@@[C)A)4[DA[C)^@2BCDA@4A-AA@0AK9A@8AC2[C8BC0AS2AKDD-[ELN^[=GD4GC)^@)^@)^@)JP )@@G@@^@)^@)^@)^@)^@)^@)^@)^@)^@)^@)^@)^@)[C)[C)^@)^@)^@)^@)^@)^@)^@)^@)^@)^@)JQ )@@G@@^@)^@)^@)^@)^@)^@)^@)^@)^@)^@)[*H[*H@<@@@@@@@@@%[C)^@8[DKCDPD-[^@)^@)^@)JR )@@G@@[C)A)4[DD[C)^@)A)DA@4A-DA@0A@4A@8AC2[C8BC0AS2AKDD-[ELN^[NJD3I->H*)^@)^@)JS )@@G@@^@)^@)^@)^@)^@)^@)^@)^@)^@)^@)^@)^@)[C)[C)^@)^@)^@)^@)^@)^@)^@)^@)^@)^@)JT )@@G@@^@)^@)^@)^@)^@)^@)^@)^@)^@)^@)[*H[*H@<@@@@@@@@@:[C)^@8[DKCDPD-[^@)^@)^@)JU )@@G@@[C)A)4[DD[C)^@)A*DA@4A-DA@0A@5A@8AC2[C8BC0AS2AKDD-[ELN^[NJD3I->H*)^@)^@)JV )@@G@@^@)^@)^@)^@)^@)^@)^@)^@)^@)^@)^@)^@)[C)[C)^@)^@)^@)^@)^@)^@)^@)^@)^@)^@)JW )@@G@@^@)^@)^@)^@)^@)^@)^@)^@)^@)^@)[*H[*H@<@@@@______^@)^@)^@)^@)^@)^@)^@)^@)JX )@@G@@^@)^@)^@, 0, 0,^[ D1^^[MC(KD9ME)) 0, 0, 0)^@)^@)^@)^@)^@)^@)^@)^@)^@)^@)JY )@@G@@^@)^@)^@)^@)^@)^@)^@)^@)^@)^@)^@)^@)^@)^@)^@)^@)^@)^@)^@)^@)^@)^@)^@)^@)JZ )@@G@@^@)^@)^@)^@)^@)^@)^@)^@)^@)^@)[*H[*H_@@@@@@@@@@@*[@@@[*SDFF*@Q@@@@@@@@@@KA )@@G@@@@@@@@@@@@@@@@0@[3@[K@@[@@ @ T@@K@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@KB )@@G@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@[*H[*H@Q@@@@@@@@@[ 1^CDOKC )@@G@@C*)AK4^[ECDI^@9A@)^@0BC'AC2BK2B@)^[MDD^^@)^@)AC1A(D^@)^@2A))DL[D0)BC0^@)KD )@@G@@ETOC(QC*)^@)^@)^@)^@)^@)^@)^@)^@)^@)^@)^@)[*H[*H@Q@@@@@@@@@] 0)^@)^@)^@)KE )@@G@@^@)^@)^@)^@)^@)^@)^@)^@)^@)^[M^[P^[I^@)^[^^[ ^[N^[D^[B^[I^@)^@)^@)^@)^@)KF )@@G@@^@)^@)^@)^@)^@)^@)^@)^@)^@)^@)^@)^@)[*H[*H@Q@@@@@@@@@# L[E(OD[JEK'[DNI->KG )@@G@@I1>^[HH9\IL>^@)^@)^@)^[ME(I^[ICDHC*'[DMHD=GD2GT*HD6G*)^@)^@)^@)^@)^@)^@)KH )@@G@@^@)^@)^@)^@)^@)^@)^@)^@)^@)^@)[*H[*H@Q@@@@@@@@@^ LKE(ME[JET BKDELDC))CD2KI )@@G@@GT*HD6GD?^[3JD3I->H*)^@)^@)^@)^@)^@)^@)^@)^@)^@)^@)^@)^@)^@)^@)^@)^@)^@)KJ )@@G@@^@)^@)^@)^@)^@)^@)^@)^@)[*H[*H@Q@@@@@@@@@ K.B*.B*.B*.B*.B*.B*.B*.B*.B*.KK )@@G@@B*.B*.B*.B*.B*.B*.B*.B*.B*.B*.B*.B*.B*.B*.B*.B*.B*.B*.B*.B*.B*.B*.B*.B*.KL )@@G@@B*.B*.B*.B*.B*.B*.[*H[*H@Q@@@@@@@@@AC[?G-6^[6A)0HC4B*4^@,^@)^@)^@)^@)^@)KM )@@G@@^@)^@)^@)^@)^@)^@)^@)^@)^@)^@)H(\G->^[&H92^[&HD?G*)H(-H1-G9>IK)^0)GD2GT*KN )@@G@@HD6G*)IL(G-3[*H[*H@Q@@@@@@@@@BC[?G-6^[6A)1H@1B(=^@,^@)^@)^@)^@)^@)^@)^@)KO )@@G@@^@)^@)^@)^@)^@)^@)^@)^@)^@)G1\IL!^[4JD0G*)G1\IK)G1(H->^[!GD,GD$G(2^[2G(0KP )@@G@@H92I-3[*H[*H@Q@@@@@@@@@CC[?G-6^[6A)2H@1B(>^@,^@)^@)^@)^@)^@)^@)^@)^@)^@)KQ )@@G@@^@)^@)^@)^@)^@)^@)G1\IL!^[4JD0G*)G1\IK)GD2GT*HD6G(=^[&HD?G(3^[2G(0H92I-3KR )@@G@@[*H[*H@Q@@@@@@@@@DC[?G-6^[6A)3H@1B*2^@,^@)^@)^@)G1(H->^[!GD,GD$G(2^[2HD=KS )@@G@@^@<^[&H92^[5IT>IK)IL>IT0H9,IT(GL?G*)G1\IK)D([E[KC(M^[1I(-H-(G1(G(2[*H[*HKT )@@G@@@Q@@@@@@@@@EC[?G-6^[6A)4H@1B(&^@,^@)^@)^@)^@)^@)^@)^@)^@)^@)^@)^@)^@)^@)KU )@@G@@^@)^@)^@)^@)G1\IL!^[4JD0G*)G1\IK)GD2GT*HD6G*)IL(G))H(-IT4G(2[*H[*H@Q@@@@KV )@@G@@@@@@@FC[?G-6^[6A)5HC3B*4AS) 0)^@)^@)^@)^@)^@)^@)^@)^@)^@)^@)^@)^@)^@)^@)KW )@@G@@^@)^@)^@)^@)IL(G))^S)G1\IK)GD2GT*HD6G*)IL(G))H(-IT4G(2[*H[*H@Q@@@@@@@@@GKX )@@G@@^@)^@)^@)^@)^@)^@)^@)^@)^@)^@)^@)^@)^@)^@)^@)^@)^@)^@)^@)^@)^@)^@)^@)^@)KY )@@G@@^@)^@)^@)^@)^@)^@)^@)^@)^@)^@)^@)^@)^@)^@)^@)^@)[*H[*H@Q@@@@@@@@@HC[?G-6KZ )@@G@@ -7^[6AL*AC1B(5IT>IK= -6AT*AC.IT\G*= -6A-*A0.G--I->AC= -6A((AS.H(\G->AC=LA )@@G@@^@,^@)^@)^@)^@)^@)^@)^@)^@)^@)^@)^@)^@)^@)[*H[*H@Q@@@@@@@@@IC[?G-6 -7^[6LB )@@G@@AC2AL3AS5B*$D-(H1>^9ND9 ^)$[C1^@)^@)^[AH(4^9ND9 ^)$[C)^[MH)$ETJC*=^8D^@)LC )@@G@@^@)^@)ET*G14^9ND9 ^)$[C$^@,^@)^@)^@)[*H[*H@Q@@@@@@@@@JC[?G-6^[6AK0H@3B**LD )@@G@@AC(^@,^@)^@)^@)^@)^@)^@)^@)^@)^@)^@)^@)^@)^@)^@)^@)^@)^@)^@)^@)^@)^@)^@)LE )@@G@@^@)^@)^@)^@)^@)^@)^@)^@)^@)^@)[*H[*H@Q@@@@@@@@@K^@)^@)^@)^@)^@)^@)^@)^@)LF )@@G@@^@)^@)^@)^@)^@)^@)^@)^@)^@)^@)^@)^@)^@)^@)^@)^@)^@)^@)^@)^@)^@)^@)^@)^@)LG )@@G@@^@)^@)^@)^@)^@)^@)^@)^@)[*H[*H@Q@@@@@@@@@L^@)^@)^@)^@)^@)^@)^@)^@)^@)^@)LH )@@G@@^@)^@)^@)^@)^@)^@)^@)^@)^@)^@)^@)^@)^@)^@)^@)^@)^@)^@)^@)^@)^@)^@)^@)^@)LI )@@G@@^@)^@)^@)^@)^@)^@)[*H[*H@Q@@@@@@@@@MC@1A@'GL2HS) 0)^@)^@)^@)^@)^@)^@)^@)LJ )@@G@@^@)^@)^@)^@)^@)^@)^@)^@)^@)^@)^@)^@)^@)^@)^@)^@)^@)^@)^@)^@)^@)^@)^@)^@)LK )@@G@@^@)^@)^@)^@)[*H[*H@Q@@@@@@@@@N^@)^@)^@)^@)^@)^@)^@)^@)^@)^@)^@)^@)^@)^@)LL )@@G@@^[MDD^^[[IL^[MDD^IS)LP )@@G@@I-\^[4GD0G*)^@)^@)^@)^@)^@)^@)I03[C)^@)^@)^@)^@)^@)^@)^@)^@)^@)^@)[*H[*HLQ )@@G@@@Q@@@@@@@@@Q^@)^@)^@)^@)^@)^@)^@)^@)^@)^@)^@)^[^HD3I[?GD9 9PI[=GD4G*)GD2LR )@@G@@GT*HD6G(=^[MDD^^[?HD3I))I03[C)^@)^@)^@)^@)^@)^@)^@)^@)^@)^@)[*H[*H@Q@@@@LS )@@G@@@@@@@R^@)^@)^@)^@)^@)^@)^@)^@)^@)^@)^@)^[^G(?G(4G*)GD2GT*HD6G(=^[MDD^IS)LT )@@G@@^@)^@)^@)^@)^@)^@)I03[C)^@)^@)^@)^@)^@)^@)^@)^@)^@)^@)[*H[*H@Q@@@@@@@@@SLU )@@G@@^@)^@)^@)^@)^@)^@)^@)^@)^@)^@)^@)^[MG(?H9-G))GD2GT*HD6G(=^[MDD^IS)^@)^@)LV )@@G@@^@)^@)^@)^@)I03[C)^@)^@)^@)^@)^@)^@)^@)^@)^@)^@)[*H[*H@Q@@@@@@@@@T^@)^@)LW )@@G@@^@)^@)^@)^@)^@)^@)^@)^@)^@)^[CG(?I@)^@)^@)^@)^@)^@)^@)^@)^@)^@)^@)^@)^@)LX )@@G@@^@)^@)I03[C)^@)^@)^@)^@)^@)^@)^@)^@)^@)^@)[*H[*H@Q@@@@@@@@@U^@)^@)^@)^@)LY )@@G@@^@)^@)^@)^@)^@)^@)^@)^[LI((I))^@)^@)^@)^@)^@)^@)^@)^@)^@)^@)^@)^@)^@)^@)LZ )@@G@@I03[C)^@)^@)^@)^@)^@)^@)^@)^@)^@)^@)[*H[*H@Q@@@@@@@@@VC[+IL:^[\I(4 )!A@?MA )@@G@@AK?AK0 )?AC?JC) 0)^@)^@)^@)^@)^@)^@)^@)^@)^@)^@)^@)^@)^@)^@)^@)^@)^@)^@)MB )@@G@@^@)^@)^@)^@)^@)^@)^@)^@)^@)^@)[*H[*H@Q@@@@@@@@@WC[?G-6 -7^[6A1(AS.IT\G(6MC )@@G@@^)) 0)^@)^@)^@)^@)^@)^@)^@)^@)^@)^@)^@)^@)^@)^@)^@)^@)^@)^@)^@)^@)^@)^@)MD )@@G@@^@)^@)^@)^@)^@)^@)^@)^@)[*H[*H@Q@@@@@@@@@XC[(G0)I06^@.^@2 )*AK0 C?AS? @4ME )@@G@@A@( )4 )*A00 C?A*? @8A@(^@,^@)^@)^@)^@)^@)^@)^@)^@)^@)^@)^@)^@)^@)^@)^@)MF )@@G@@^@)^@)^@)^@)^@)^@)[*H[*H@Q@@@@@@@@@YC[(G0)I06^@.^@7^[2G(?^@,^@)^@)^@)^@)MG )@@G@@^@)^@)^@)^@)^@)^@)^@)^@)^@)^@)^@)^@)^@)^@)^@)^@)^@)^@)^@)^@)^@)^@)^@)^@)MH )@@G@@^@)^@)^@)^@)[*H[*H@Q@@@@@@@@@ZC@,^@! *! *! *)G-(IT0H--JC)H[>H-0^[2HD=^[-MI )@@G@@IS)IL>IT5H-4^@! *! *! *! *! *! *! *)^@)^@)^@)^@)^@)^@)^@)^@)^@)^@)^@)^@)MJ )@@G@@^@)^@)[*H[*H@Q@@@@@@@@@)C[(G0)I06^@.^@6^[2IT? )4 -$ )1A0)G-3I@? *0 )6 )3MK )@@G@@ )? )?I01AK2^8)^@)B-KIL>IT3^[AAC)I-\^[2G(4I(2H0)I-\^[!G(,I*"^@$I03^@,^@)ML )@@G@@[*H[*H@Q@@@@@@@@@-C[$I-\^@1A@) 0)^@)^@)^@)^@)^@)^@)^@)^@)^@)^@)^@)^@)^@)MM )@@G@@^@)^@)^@)^@)^@)^@)^@)^@)^@)^@)^@)^@)^@)^@)^@)^@)^@)^@)^@)^@)^@)^@)[*H[*HMN )@@G@@@Q@@@@@@@@@+C@,^@% K% K% K% K% K% K% K% K% K% K% K% K% K% K% K% K% K% K%MO )@@G@@ K% K% K% K% K% K% K% K% K% K% K% K% K% K% K% K% K% K% K% K%[*H[*H@Q@@@@MP )@@G@@@@@@@^[MDD^IS)I-\^[OGD0G*,^[NG(,G))ITG(,^[4H8)G9>I))MQ )@@G@@IL(G)*IS(^[4H8)GD2GT*HD6G*,^[AH92^[>GDH-4^[4H8)C(SC(#^[&HD?G*?^[3GD6G*)HD,G1\^[4H8)H95I-0I(4^[-IL>GC?^[=MS )@@G@@G(?G(4G*)IL(G),^[[G-=^[(H1&H8)I-\^[!GD3I->IK)^@)[*H[*H@Q@@@@@@@@@>C@,^[2MT )@@G@@HD= 0)^@)^@)^@)^@)^@)^@)^@)^@)^@)^@)^@)^@)^@)^@)^@)^@)^@)^@)^@)^@)^@)^@)MU )@@G@@^@)^@)^@)^@)^@)^@)^@)^@)^@)^@)^@)^@)^@)^@)[*H[*H@Q@@@@@@@@@&C@,^@% K% K%MV )@@G@@ K% K% K% K% K% K% K% K% K% K% K% K% K% K% K% K% K% K% K% K% K% K% K% K%MW )@@G@@ K% K% K% K% K% K% K% K% K% K% K% K%[*H[*H@Q@@@@@@@@@$C@2A@'GL2HS) 0)^@)MX )@@G@@^@)^@)^@)^@)^@)^@)^@)^@)^@)^@)^@)^@)^@)^@)^@)^@)^@)^@)^@)^@)^@)^@)^@)^@)MY )@@G@@^@)^@)^@)^@)^@)^@)^@)^@)^@)^@)[*H[*H@Q@@@@@@@@@*AK)^@)^@)^@)^@)^@)^@)^@)MZ )@@G@@^@)^@)^@)^@)^@)^@)^@)^@)^@)^@)^@)^@)^@)^@)^@)^@)^@)^@)^@)^@)^@)^@)^@)^@)NA )@@G@@^@)^@)^@)^@)^@)^@)^@)^@)[*H[*H@Q@@@@@@@@@(AK)^@)^@)^@)^@)^@)^@)^@)^@)^@)NB )@@G@@^@)^@)^@)ET>H->GT4^[MDD^ [3 C)I-\^[[IL^@)^@)^@)^@)^@)^@)^@)^@)^@)NC )@@G@@^@)^@)^@)^@)^@)^@)[*H[*H@Q@@@@@@@@@%AK)^@)^@)^@)^@)^@)^@)^@)^@)^@)^@)^@)ND )@@G@@^@)^@)^@)^@)^@)^@)^@)^@)^@)^@)^@)^@)^@)^@)^@)^@)^@)^@)^@)^@)^@)^@)^@)^@)NE )@@G@@^@)^@)^@)^@)[*H[*H@Q@@@@@@@@@:AK)^@)^@)^@)^@)^@)^@)^@)^@)^@)^@)^@)D(\G->NF )@@G@@^[6A*)^@)^@)^@)^@)^@)^@)^@)^@)^@)^@)^@)^@)^@)^@)^@)^@)^@)^@)^@)^@)^@)^@)NG )@@G@@^@)^@)[*H[*H@Q@@@@@@@@@?AK)^@)^@)^@)^@)^@)^@)^@)^@)^@)^@)^@)E-9I[>[C5 )2NH )@@G@@^@)^@)^@)^@)^@)^@)^@)^@)^@)^@)^@)^@)^@)^@)^@)^@)^@)^@)^@)^@)^@)^@)^@)^@)NI )@@G@@[*H[*H@Q@@@@@@@@@!AK)^@)^@)^@)^@)^@)^@)^@)^@)^[NI--IL4^[MHD=[C2^@)^@?AK)NJ )@@G@@^@)^@)^@)^@)^@)^@)^@)^@)^@)^@)^@)^@)^@)^@)^@)^@)^@)^@)^@)^@)^@)^@)[*H[*HNK )@@G@@@Q@@@@@@@@@,AK)^@)^@)^@)^@)^@)^@)^@)^@)^@)^[ H1=^[MHD=[C2^@)^@?AK)^[?G(-NL )@@G@@I1>^[+H--H1:^[4H8)GD2GT*HD6G*)IT4GD2I))IL(G))H9,H-9^@)^@)^@)[*H[*H@Q@@@@NM )@@G@@@@@@@\AK)^@)^@)^@)^@)^@)^@)^@)^[^G(3GT2HD0I-(H9,[C)^@)^@)^@)^@)^@)^@)^@)NN )@@G@@^@)^@)^@)^@)^@)^@)^@)^@)^@)^@)^@)^@)^@) )2^@)^@)^@)^@)[*H[*H@Q@@@@@@@@@0NO )@@G@@AK)^@)^@)^@)^@)^@)^@)^@)^@)^@)^@)^@)^@)^@)^@)^@)^@)^@)^@)^@)^@)^@)^@)^@)NP )@@G@@^@)^@)^@)^@)^@)^@)^@)^@)^@)^@)^@)^@)^@)^@)^@)^@)[*H[*H@Q@@@@@@@@@1^@)^@)NQ )@@G@@^@)^@)^@)^@)^@)^@)^@)^@)^@)^@)^@)^@)^@)^@)^@)^@)^@)^@)^@)^@)^@)^@)^@)^@)NR )@@G@@^@)^@)^@)^@)^@)^@)^@)^@)^@)^@)^@)^@)^@)^@)[*H[*H@Q@@@@@@@@@2^[OH[>^[2HD=NS )@@G@@IS)IT>H->GT4G(=^[7HD?H))GL>^[3GD6G(=^[4H8)IT4GD,G--IL=^[&HD?G(3^[\H0)G-(NT )@@G@@IT:^[-H1=^[4H[>H0)G->H->I->G),^@)^@)[*H[*H@Q@@@@@@@@@3^[[I))I-*G*)G(,G))NU )@@G@@H9&^[4H[>^[!H9,I-*^[4H[>IT>^[&HD?G(3^[7HD?H))GL>^[-ILG))I-\^[4GD0NV )@@G@@G*,^@)^@)^@)^@)^@)^@)^@)^@)^@)[*H[*H@Q@@@@@@@@@4C[?G-6^[6A9(AK.AK0 -6B[(NW )@@G@@AK.AC?I09HC2B*1^@,^@)^@)^@)^@)^[3G(4^[5I@)H95I))I1-H-5G(3^[&H92^[3GT2G(>NX )@@G@@H0)^@)^@)^@)^@)^@)^@)^@)[*H[*H@Q@@@@@@@@@5C@2AK'GL2HS)GT*G8)HD,I1-IK=^[6NY )@@G@@AC0H@1 -6AC1HC4 -6AC2HC4 -6AC3IS4A@) 0)^@)^@)^@)^@)^@)^@)^@)^@)^@)^@)^@)NZ )@@G@@^@)^@)^@)^@)^@)^@)[*H[*H@Q@@@@@@@@@6C[\I(4 )!A@?AK?I07 -6B@?I09 -9 )? -(OA )@@G@@I@) 0)^@)^@)^@)^@)^@)^@)^@)^@)^@)^@)^@)^@)^@)^@)^@)^@)^@)^@)^@)^@)^@)^@)OB )@@G@@^@)^@)^@)^@)[*H[*H@Q@@@@@@@@@7C@,^@% K% K% K% K% K% K% K% K%^@)C--I--^[6OC )@@G@@GD?HD=GD4HD\H0)IL\I(4HD,G(3^@) K% K% K% K% K% K% K% K% K% K% K% K% K% K%OD )@@G@@ K%^@)[*H[*H@Q@@@@@@@@@8C[(G0)I01AC)B*)A@)G94H8)AC0^@;^@,^@)^@)^@)^@)^@)OE )@@G@@^@)^@)^@)^@)^@)^@)^@)^@)^@)^@)^@)^@)^@)^@)IT:HD0^[(G0)H1\^[3I--IL4^[2HD=OF )@@G@@[*H[*H@Q@@@@@@@@@9C[?G-6^[6A8.AC?I08B*2AS) 0)^@)^@)^@)^@)^@)^@)^@)^@)^@)OG )@@G@@^@)^@)^@)^@)^@)^@)^@)^@)^@)^@)^@)^@)H95I))H-(H1>IS)G1\IK)G(2IL\IL3[*H[*HOH )@@G@@@Q@@@@@@@@@'C[(G0)I01A@)B*)CK?CS?C)?C*?C0?C8?D@?DC)G94H8)H-(H0:AS)BS) 0)OI )@@G@@^@)^@)^@)^@)^@)^@)^@)GT*G( 0)D(5IT4^[+G*)CK)I-*IL\I($H@)OK )@@G@@DC,^@)^@)^@)^@)^@)^@)^@)^@)^@)^@)^@)^@)^@)^@)^@)^@)^@)[*H[*H@Q@@@@@@@@@/OL )@@G@@C[?G-6^[6BC.AC)G94H8)AK2^@,^@)^@)^@)^@)^@)^@)^@)^@)^@)^@)^@)^@)^@)^@)^@)OM )@@G@@^@)^@)^@)^@)^@)^@)^@)^@)^@)^@)^@)^@)^@)^@)^@)^@)[*H[*H@Q@@@@@@@@@.C[(G0)ON )@@G@@I01AK)B*)A@)G94H8)H-(H0:A))BS) 0)^@)^@)^@)^@)^@)^@)^@)^@)^@)^@)^@)^@)^@)OO )@@G@@^@)^@)IT:HD0^[GT:^[(G0)H1\^[>H1=^[2HD=[*H[*H@Q@@@@@@@@@"C[(G0)I01AK)OP )@@G@@H1\I))B))I01AC)G94H8)H-(H0:AS)BS) 0)^@)^@)^@)^@)^@)^@)^@)^@)^@)^@)^[>H1=OQ )@@G@@^[2HD=^[!I(3I))GL>^@"^[3I--IL4^[2HD=[*H[*H@Q@@@@@@@@@_C(2IL\IK'^[ H1=^[MOR )@@G@@DD^^[!I(3I))GL>^[?GD2G9>IK)I-*GD,^[3I--IL4^[MDD^ 0)^@)^@)^@)^@)^@)^@)^@)OS )@@G@@^@)^@)^@)^@)^@)^@)^@)^@)^@)^@)[*H[*H@Q@@@@@@@@[@C[?G-6^[6BC.AS)G94H8)AK2OT )@@G@@^@,^@)^@)^@)^@)^@)^@)^@)^@)^@)^@)^@)^@)^@)^@)^@)^@)^@)^@)^@)^@)^@)^@)^@)OU )@@G@@^@)^@)^@)^@)^@)^@)^@)^@)[*H[*H@Q@@@@@@@@[[C[?JL2 -6A*?I01A@?I01AC?AK3^@,OV )@@G@@^@)^@)^@)^@)^@)^@)^@)^@)^@)^@)^@)^@)^@)^@)^@)^@)^@)^@)^[3G(>^[(G0)IT4GD2OW )@@G@@I))IL(G))G(8HD3I-3[*H[*H@Q@@@@@@@@[]C[$I-\^[?HD, S4^@,^@)^@)^@)^@)^@)^@)OX )@@G@@^@)^@)^@)^@)^@)^@)^@)^@)^@)^@)^@)^@)^@)^@)^@)^@)^@)^@)^@)^@)^[9G(3 ))IT:OY )@@G@@HD0^[>IL2H92[*H[*H@Q@@@@@@@@[#C@2AS' 0)^@)^@)^@)^@)^@)^@)^@)^@)^@)^@)^@)OZ )@@G@@^@)^@)^@)^@)^@)^@)^@)^@)^@)^@)^@)^@)^@)^@)^@)^@)^@)^@)^@)^@)^@)^@)^@)^@)PA )@@G@@^@)^@)[*H[*H@Q@@@@@@@@[^C(2IL\IK'^[NI--IL4^[MDD^^[=H9>IS)H1\I))G(8HD3I),PB )@@G@@^@)^@)^@)^@)^@)^@)^@)^@)^@)^@)^@)^@)^@)^@)^@)^@)^@)^@)^@)^@)^@)^@)^@)^@)PC )@@G@@[*H[*H@Q@@@@@@@@[ C[?G-6^[6BC.AK)G94H8)AK2^@,^@)^@)^@)^@)^@)^@)^@)^@)^@)PD )@@G@@^@)^@)^@)^@)^@)^@)^@)^@)^@)^@)^@)^@)^@)^@)^@)^@)^@)^@)^@)^@)^@)^@)[*H[*HPE )@@G@@@Q@@@@@@@@[AC[IK)H9&^[2HD=IS)I-\^[-IL[*H[*H@Q@@@@PG )@@G@@@@@@[BC[(G0)I03AC)B))AS1^[$I-\^[?HD, S3^@,^@)^@)^@)^@)^@)^@)^@)^@)^@)^@)PH )@@G@@^@)^@)^@)^@)^@)^@)^@)^@)^@)^@)^@)^@)^@)^@)^@)^@)^@)^@)[*H[*H@Q@@@@@@@@[CPI )@@G@@C(2IL\IK'^[[^[!GD8HD!I(!^[\G0)AS0^[2HD=IS)GT-H0)GL>^[-ILG))GD4^[\PJ )@@G@@H1>^[4HD!G*,^@)^@)^@)^@)^@)^@)^@)^@)^@)^@)^@)^@)[*H[*H@Q@@@@@@@@[DC[?G-6PK )@@G@@^[6BC.AS)G94H8)AK2^@,^@)^@)^@)^@)^@)^@)^@)^@)^@)^@)^@)^@)^@)^@)^@)^@)^@)PL )@@G@@^@)^@)^@)^@)^@)^@)^@)^@)^@)^@)^@)^@)^@)^@)[*H[*H@Q@@@@@@@@[EC@,^@% K% K%PM )@@G@@ K% K% K% K% K% K% K% K% K% K% K% K% K% K% K% K% K% K% K% K% K% K% K% K%PN )@@G@@ K% K% K% K% K% K% K% K% K% K% K)^@)[*H[*H@Q@@@@@@@@[FC@,^[ H1=^[\G0)G--PO )@@G@@I--^[6GD?HD=GD4HD\H0,^[ H-4^[&HD?G*)I-\^[5H1(ID5G*)G1(H->^[,GD!G*,^[AHD?PP )@@G@@G(,GD!G*)HD3^[\G0)G1\IL!GD4^@)[*H[*H@Q@@@@@@@@[GC@,^[!H(!I-2IL2IL=G-=IS)PQ )@@G@@I9*G(2G*'^[!H(!B(!H9=G*?^[4B(4JD0G*?^[2IL2IK.IL(G)?^[=G-=B(%I(?HD-H0)G--PR )@@G@@JC?^[3B(3G(^)) 0)^@)^@)^@)^@)^@)^@)^@)^@)^@)^@)^@)^@)^@)^@)^@)^@)^@)^@)^@)PV )@@G@@^@)^@)^@)^@)[*H[*H@Q@@@@@@@@[JC[?G-6 -2JK)I01A9*AS.I05^@,^@)^@)^@)^@)^@)PW )@@G@@^@)^@)^@)^@)^@)^@)^@)^@)^@)^@)^@)^@)^@)^@)^@)^['G(2H8)G1(H-?^[!H9=G*)H15PX )@@G@@H(+G(2[*H[*H@Q@@@@@@@@[KC[?G-6^[6AK1HC4B(6AC1^@,^@)^@)^@)^@)^@)^@)^@)^@)PY )@@G@@^@)^@)^@)^@)^@)^@)^@)^@)^@)^@)^@)^@)IT-I1>^[3I--IL4HD,G8)IL(G))H15H(+G(2PZ )@@G@@[*H[*H@Q@@@@@@@@[LC[(G0?GS)I01A@)B*)GK)H-=I0)I01A@.CK)BS) 0)^@)^@)^@)^@)QA )@@G@@^@)^@)^@)^@)^@)^@)E(0I[>ILH1-H(>[*H[*HQB )@@G@@@Q@@@@@@@@[MC[(G0?GS)I01A@)B*)GS)H-=I0)I01A@.CS)BS) 0)^@)^@)^@)^@)^@)^@)QC )@@G@@^@)^@)^@)^@)^@)^@)^@)^@)^@)^@)^@)^@)^@)^@)^@)^@)^@)^@)^@)^@)[*H[*H@Q@@@@QD )@@G@@@@@@[NC[(G0?GS)I01A@)B*)G))H-=I0)I01A@.C))BS) 0)^@)^@)^@)^@)^@)^@)^@)^@)QE )@@G@@^@)^@)^@)^@)^@)^@)^@)^@)^@)^@)^@)^@)^@)^@)^@)^@)^@)^@)[*H[*H@Q@@@@@@@@[OQF )@@G@@C[(G0?GS)I01A@)B*)G*)H-=I0)I01A@.C*)BS) 0)^@)^@)^@)^@)^@)^@)^@)^@)^@)^@)QG )@@G@@^@)^@)^@)^@)^@)^@)^@)^@)^@)^@)^@)^@)^@)^@)^@)^@)[*H[*H@Q@@@@@@@@[PC[(G0?QH )@@G@@GS)I01A@)B*)G0)H-=I0)I01A@.C0)BS) 0)^@)^@)^@)^@)^@)^@)^@)^@)^@)^@)^@)^@)QI )@@G@@^@)^@)^@)^@)^@)^@)^@)^@)^@)^@)^@)^@)^@)^@)[*H[*H@Q@@@@@@@@[QC[(G0?GS)I01QJ )@@G@@A@)B*)G8)H-=I0)I01A@.C8)BS) 0)^@)^@)^@)^@)^@)^@)^@)^@)^@)^@)^@)^@)^@)^@)QK )@@G@@^@)^@)^@)^@)^@)^@)^@)^@)^@)^@)^@)^@)[*H[*H@Q@@@@@@@@[RC[(G0?GS)I01A@)B*)QL )@@G@@H@)H-=I0)I01A@.D@)BS) 0)^@)^@)^@)^@)^@)^@)^@)^@)^@)^@)^@)^@)^@)^@)^@)^@)QM )@@G@@^@)^@)^@)^@)^@)^@)^@)^@)^@)^@)[*H[*H@Q@@@@@@@@[SC[(G0?GS)I01A@)B*)HC)H-=QN )@@G@@I0)I01A@.DC)BS) 0)^@)^@)^@)^@)^@)^@)^@)^@)^@)^@)^@)^@)^@)^@)^@)^@)^@)^@)QO )@@G@@^@)^@)^@)^@)^@)^@)^@)^@)[*H[*H@Q@@@@@@@@[TC[+IL: -6A)0 -6A)4^@,^@)^@)^@)QP )@@G@@^@)^@)^@)^@)^@)^@)^@)^@)^@)^@)^@)^@)^@)^@)^@)^@)^@)^@)^@)^@)^@)^@)^@)^@)QQ )@@G@@^@)^@)^@)^@)^@)^@)[*H[*H@Q@@@@@@@@[UC@2A*'H-=I0?IL'^[6AC7H@3B(6A*?I01B[*QR )@@G@@A).I01AC) 0)^@)^@)^@)^@)^@)^@)^@)^@)^@)^@)^@)^@)^@)^@)JL>IL\^[&HD?H))IL(QS )@@G@@G))H15H(+G(2[*H[*H@Q@@@@@@@@[VC[?G-6^[6AC6H@1AK.^8$^@,^@)^@)^@)^@)^@)^@)QT )@@G@@^@)^@)^@)^@)^@)^@)^@)^@)^@)^@)^@)^@)^@)^@)^@)^@)^@)^@)^@)^@)^@)^@)^@)^@)QU )@@G@@^@)^@)[*H[*H@Q@@@@@@@@[WC[(H13^[6AC7^[6AC6 @1 *3 C)HD,IS)I01A@)I01A0*A)!QV )@@G@@AC(^[(H13^[6AC8^[6AC6 @5 *4 C)HD,IS)I01A)*AK!AS(^[6AC6 @9 *3 C) 0)^@)^@)QW )@@G@@[*H[*H@Q@@@@@@@@[XC[(H13^[6AC5 @4 *1 C)I01A0*AC2 *1 C) 0)^@)^@)^@)^@)^@)QX )@@G@@^@)^@)^@)^@)^@)^@)^@)^@)^@)^@)^@)^@)^@)^@)^@)^@)^@)^@)^@)^@)^@)^@)[*H[*HQY )@@G@@@Q@@@@@@@@[YC[>H-4 -6A*?I01A@?I01AC?AS5^[HCDKE[ EK?I01A0? )? -T -T^@,^@)QZ )@@G@@^@)^@)^@)^@)^@)^@)^[>H-4^[2HD=^[4H8)I(,HD1I(>^[&HD?G*)H1-H(>[*H[*H@Q@@@@RA )@@G@@@@@@[ZC[%I(6 -2^[6A*?E01AC) 0)^@)^@)^@)^@)^@)^@)^@)^@)^@)^@)^@)^@)^@)^@)RB )@@G@@^@)^@)^@)^@)^@)^@)^@)^@)^@)^@)^@)^@)^@)^@)^@)^@)^@)^@)[*H[*H@Q@@@@@@@@[)RC )@@G@@[D6ACDI02[D6A*DI01A@DI01ACDI01A0DI04[D6AC3[C)[C)^@)^@)^@)^@)^@)^@)^@)^@)RD )@@G@@^@)^@)^@)^@)^@)^@)^@)^@)^@)^@)^@)^@)^@)^@)^@)^@)[*H[*H@Q@@@@@@@@[-C[(H1H1=^[\G0)IL(G-3^[4H8)GD2GT*HD6G*_[*H[*H@Q@@@@@@@@[RJ )@@G@@G*)HD&^[,G(8I))H9,G*)G(8HD3I-3[*H[*H@Q@@@@@@@@[=C[$I-\^@2A*) 0)^@)^@)^@)RK )@@G@@^@)^@)^@)^@)^@)^@)^@)^@)^@)^@)^@)^@)^@)^@)^@)^@)^@)^@)^@)^@)^@)^@)^@)^[3RL )@@G@@GD6G*)H9&G0)I-*HD3^[\H1>[*H[*H@Q@@@@@@@@[>C@3A@'GL2HS)IL,H*) *1^@,^@)^@)RM )@@G@@^@)^@)^@)^@)^@)^@)^@)^@)^@)^@)^@)^@)^@)^@)^@)^@)^@)^@)^@)^@)^@)^@)^@)^@)RN )@@G@@^@)^@)^@)^@)^@)^@)[*H[*H@Q@@@@@@@@[&C[-G-= )!AC?I04A@?I04A)?I04A*) 0)^@)RO )@@G@@^@)^@)^@)^@)^@)^@)^@)^@)^@)^@)^@)^@)^@)^@)^@)^@)^@)^@)^@)^@)^@)^@)GD=G))RP )@@G@@IL(G))H-(IT4[*H[*H@Q@@@@@@@@[$C[3H92 )!A@)^8)^8)AK!AS?A0!AC1 )2BC!AC2 )4RQ )@@G@@AK!A0)[C?AC?AK?AS?A)) 0)^@)^@)^@)^[3H92I))GL9^[5IT>IK?^[&HD?G(,GD!G*)^0)RR )@@G@@G--I->[*H[*H@Q@@@@@@@@[*C[?H9: -6A)0 -6A)4 -6A)5^@,^@)^@)^@)^@)^@)^@)^@)RS )@@G@@^@)^@)^@)^@)^@)^@)^@)^@)^@)^@)^@)^@)^@)^@)^@)^@)^@)^@)^@)^@)^@)^@)^@)^@)RT )@@G@@[*H[*H@Q@@@@@@@@[(C[2G(0 -6A)0 -6A)4 -6A)5^@,^@)^@)^@)^@)^@)^@)^@)^@)^@)RU )@@G@@^@)^@)^@)^@)^@)^@)^@)^@)^@)^@)^@)^@)^@)^@)^@)^@)^@)^@)^@)^@)^@)^@)[*H[*HRV )@@G@@@Q@@@@@@@@[%C[5H-:^@,^@)^@)^@)^@)^@)^@)^@)^@)^@)^@)^@)^@)^@)^@)^@)^@)^@)RW )@@G@@^@)^@)^@)^@)^@)^@)^@)^@)^@)^@)^@)^@)^@)^@)^@)^@)^@)^@)^@)^@)[*H[*H@Q@@@@RX )@@G@@@@@@[:C@,^@% K% K% K% K% K% K% K% K% K% K% K% K% K% K% K% K% K% K% K% K%RY )@@G@@ K% K% K% K% K% K% K% K% K% K% K% K% K% K% K% K% K% K%[*H[*H@Q@@@@@@@@[?RZ )@@G@@C@,^[AH92^[>GDH1-H(>^[GD4G(= ))GD=G))GD,^[>H14IL9^[4H8)I-*SA )@@G@@G*)C1(H->^[HGD,GD$G(2^[MHD=^[&H92^[4H[>^@)^@)^@)[*H[*H@Q@@@@@@@@[!C@,^[GT(G19HD,G8)I-*GD4^[4H[>^[&HD?G*)IT*H95H-=^[+G*)GD2SC )@@G@@GT*HD6G(= 0)^@)^@)^@)^@)^@)^@)^@)^@)^@)^@)[*H[*H@Q@@@@@@@@[,C@,^@% K% K%SD )@@G@@ K% K% K% K% K% K% K% K% K% K% K% K% K% K% K% K% K% K% K% K% K% K% K% K%SE )@@G@@ K% K% K% K% K% K% K% K% K% K% K% K%[*H[*H@Q@@@@@@@@[\C[+IL: -6A)0 -6A)1SF )@@G@@^@,^@)^@)^@)^@)^@)^@)^@)^@)^@)^@)^@)^@)^@)^@)^@)^@)^@)^@)^@)^@)^@)^@)^@)SG )@@G@@^@)^@)^@)^@)^@)^@)^@)^@)^@)^@)[*H[*H@Q@@@@@@@@[0C[2G-< )!AC?AK)AK9 *1AK)SH )@@G@@I01A0) 0)^@)^@)^@)^@)^@)^@)^@)^@)^@)^@)^@)^@)^@)^@)^@)^[2G(-G))G(-GT*^[&SI )@@G@@HD?G*)H1-H(>^[GD4G(=[*H[*H@Q@@@@@@@@[1[DHCDKE[ EK%I01A16AK0^@)^@D^@)SJ )@@G@@^@)^@)^@)^@)^@D^@)^@)^@)^@)^@)^@)^@)^@)^@)^@)^@)^@)^@)^@)^@)^@)^@)^@)^@)SK )@@G@@[D[^@)^@)^@)^@)^@)[*H[*H@Q@@@@@@@@[2C[+IL:^[-G-= )!A@?I04A@?I04AC?I04AS)SL )@@G@@ 0)^@)^@)^@)^@)^@)^@)^@)^@)^@)^@)^@)^@)^@)^@)^@)^@)GD=G))I-\^[IS)G1(H1(IT*G(= ))H1\ST )@@G@@I8)G->H->I->^[4H[>^[2HD=IS)^@)^@)^@)^@)^@)^@)^@)^@)^@)^@)^@)[*H[*H@Q@@@@SU )@@G@@@@@@[7C[+IL: -6A)0 -6A)4^@,^@)^@)^@)^@)^@)^@)^@)^@)^@)^@)^@)^@)^@)^@)^@)SV )@@G@@^@)^@)^@)^@)^@)^@)^@)^@)^@)^@)^@)^@)^@)^@)^@)^@)^@)^@)[*H[*H@Q@@@@@@@@[8SW )@@G@@E-*G*)G1\H-?H97HD,G8)IL(G-3^[*GD6G*)GL>G(,^[4IL-H13G1>IL2G(=^[4H8)GD,^[ SX )@@G@@F[ CS)G1(H->^[4H8)GL>^[-ILG))GD4^[!H9,I-*[*H[*H@Q@@@@@@@@[9G(,G),SY )@@G@@^[OH[>IT>^[2HD=IS)H[-I1>^[+G(>H0)G->H->I->G))G12H9!^[HCDKE[ EK'^@)^@)^@)SZ )@@G@@^@)^@)^@)^@)^@)^@)^@)^@)^@)^@)^@)^@)^@)^@)[*H[*H@Q@@@@@@@@['^@)^@)^@)^@)TA )@@G@@^@)^@)^@)^@)^@)^@)^@)^@)^@)^@)^@)^@)^@)^@)^@)^@)^@)^@)^@)^@)^@)^@)^@)^@)TB )@@G@@^@)^@)^@)^@)^@)^@)^@)^@)^@)^@)^@)^@)[*H[*H@Q@@@@@@@@[;C@3AK'G-?IK?I05 -6TC )@@G@@AC0 -6AK1^@,^@)^@)^@)^@)^@)^@)^@)^@)^@)^@)^@)^@)^@)^@)^@)^@)^@)^@)^@)^@)TD )@@G@@^@)^@)^@)^[=G(?G(4G*)IL>I[\IL4[*H[*H@Q@@@@@@@@[/H(\G->^[6A*)^[2HD=^[6AK1TE )@@G@@^[6AC0^@)^@)^@)^@)^@)^@)^@)^@)^@)^@)^@)^@)^@)^@)^@)^@)^@)^@)^@)^@)^@)^@)TF )@@G@@^@)^@)^@)^@)^@)^@)^@)^@)[*H[*H@Q@@@@@@@@[.C[(H1<^[6AK1^@,^@)^@)^@)^@)^@)TG )@@G@@^@)^@)^@)^@)^@)^@)^@)^@)^@)^@)^@)^@)^@)^@)^@)^@)^@)^@)^@)^@)^@)^@)^@)^@)TH )@@G@@^@)^@)^@)^@)^@)^@)[*H[*H@Q@@@@@@@@["C[(G0)I02AC)B0)I01AK)G94H8)AS3^@;^@,TI )@@G@@^@)^@)^@)^@)^@)^@)^@)^@)^@)^@)^@)^@)^@)^@)^@)^@)^[>H1=^[\G0)IL(G-3^[4H8)TJ )@@G@@GD2GT*HD6G*_[*H[*H@Q@@@@@@@@[_C[?JL2 -6A*?I01A@?I02AC?H-(H0) *2^@,^@)^@)TK )@@G@@^@)^@)^@)^@)^@)^@)^@)^@)^@)^@)^@)^@)^@)H1\ ))IT>G*)HD&^[,G(8I))H9,G*)G(8TL )@@G@@HD3I-3[*H[*H@Q@@@@@@@@]@C[$I-\^@3AK) 0)^@)^@)^@)^@)^@)^@)^@)^@)^@)^@)^@)TM )@@G@@^@)^@)^@)^@)^@)^@)^@)^@)^@)^@)^@)^@)^@)G9\^[-H1=^[=G(?G(4G*)I-*HD3^[\H1>TN )@@G@@[*H[*H@Q@@@@@@@@][C@3AS' 0)^@)^@)^@)^@)^@)^@)^@)^@)^@)^@)^@)^@)^@)^@)^@)TO )@@G@@^@)^@)^@)^@)^@)^@)^@)^@)^@)^@)^@)^@)^@)^@)^@)^@)^@)^@)^@)^@)^@)^@)[*H[*HTP )@@G@@@Q@@@@@@@@]]^@)^@)^@)^@)^@)^@)^@)^@)^@)^@)^@)^@)^@)^@)^@)^@)^@)^@)^@)^@)TQ )@@G@@^@)^@)^@)^@)^@)^@)^@)^@)^@)^@)^@)^@)^@)^@)^@)^@)^@)^@)^@)^@)[*H[*H@Q@@@@TR )@@G@@@@@@]#C[+IL:^@,^@)^@)^@)^@)^@)^@)^@)^@)^@)^@)^@)^@)^@)^@)^@)^@)^@)^@)^@)TS )@@G@@^@)^@)^@)^@)^@)^@)^@)^@)^@)^@)^@)^@)^@)^@)^@)^@)^@)^@)[*H[*H@Q@@@@@@@@]^TT )@@G@@C[=IT0 )!A@?AK?AS? )? -6AC2AK$^@)^@)^@/E[2G(3IS)C01^[4H8)IL>I-5IL,^[4H8)TU )@@G@@D(>H15B0)^@$E03^@,^@)^@)^@)^@)^@)^@)^@)^@)^@)^@)[*H[*H@Q@@@@@@@@] C[$I-\TV )@@G@@^@1A@) 0)^@)^@)^@)^@)^@)^@)^@)^@)^@)^@)^@)^@)^@)^@)^@)^@)^@)^@)^@)^@)^@)TW )@@G@@^@)^@)^@)^@)^@)^@)^@)^@)^@)^@)^@)^@)^@)^@)[*H[*H@Q@@@@@@@@]AC@3A*'H-=I0?TX )@@G@@I8)I01BD(AS.IT4GD4AC) 0)^@)^@)^@)^@)^@)^@)^@)^@)^@)^@)^@)^@)^@)^@)^@)^@)TY )@@G@@^@)^@)^@)^@)^@)^@)^@)^@)^@)^@)^@)^@)[*H[*H@Q@@@@@@@@]BC[+IL:^@,^@)^@)^@)TZ )@@G@@^@)^@)^@)^@)^@)^@)^@)^@)^@)^@)^@)^@)^@)^@)^@)^@)^@)^@)^@)^@)^@)^@)^@)^@)UA )@@G@@^@)^@)^@)^@)^@)^@)^@)^@)^@)^@)[*H[*H@Q@@@@@@@@]CCD,^[>IL2H92^[*GD3^[\GTG))HD,^[MDD^CDMCTCDDQC*)I-2JD(H1$^[4H8)C(GE))GC)IL(G),^@)^@)^@)^@)UC )@@G@@^@)^@)^@)^@)^@)^@)^@)^@)[*H[*H@Q@@@@@@@@]D^@)^@)^@)^@)^@)^@)^@)^@)^@)^@)UD )@@G@@^@)^@)^@)^@)^@)^@)^@)^@)^@)^@)^@)^@)^@)^@)^@)^@)^@)^@)^@)^@)^@)^@)^@)^@)UE )@@G@@^@)^@)^@)^@)^@)^@)[*H[*H@Q@@@@@@@@]EE-*G*)G(2IL\IK)HD3^[6AC9^[+JC)I(3G(2UF )@@G@@^[6AK)^@)^@)^@)^@)^@)^@)^@)^@)^@)^@)^@)^@)^@)^@)^@)^@)^@)^@)^@)^@)^@)^@)UG )@@G@@^@)^@)^@)^@)[*H[*H@Q@@@@@@@@]F^@)^@)^@)^@)^@)^@)^@)^@)^@)^@)^@)^@)^@)^@)UH )@@G@@^@)^@)^@)^@)^@)^@)^@)^@)^@)^@)^@)^@)^@)^@)^@)^@)^@)^@)^@)^@)^@)^@)^@)^@)UI )@@G@@^@)^@)[*H[*H@Q@@@@@@@@]GE-2JD(H1$^[4H8)G(?I))I05^[6AC1I01A@)I-\^[&HD?G*)UJ )@@G@@D([E[KC(M L6AC6^@)^@)^@)^@)^@)^@)^@)^@)^@)^@)^@)^@)^@)^@)^@)^@)^@)^@)^@)UK )@@G@@[*H[*H@Q@@@@@@@@]HC[+IL:^[3G(, )!A@?AK1^@,^@)^@)^@)^@)^@)^@)^@)^@)^@)^@)UL )@@G@@^@)^@)^@)^@)^@)^@)^@)^@)^[3G(,G))I-\^[IL2H92^[*GD3^[\GTG))HD,^[-I-4G(!I[4HD,G8)I-\^[-UN )@@G@@IL^[9H95IK)IL(G-3 0)^@)^@)^@)^@)^@)^@)^@)^@)^@)^@)^@)[*H[*H@Q@@@@UO )@@G@@@@@@]JE-*G*)GT\H92G-(H1-I-\IK)H[-IS)GL>G(,^[,H94HD&HD>G))H9&^[4H[>^[>IL2UP )@@G@@H92 0)E[?G(-IT>^[=H8)H1\I))GD4I->H(0I))I-\^@)^@)^@)^@)[*H[*H@Q@@@@@@@@]KUQ )@@G@@GD2GT*HD6G*)GD,JC)H(\IL>^[2HD=IS)I(,I-(H))I-*G*)I[2H9+H->H*)H[-IS)GL>G(,UR )@@G@@^[&HD8G(= 0)^@)^@)^@)^@)^@)^@)^@)^@)^@)^@)^@)^@)[*H[*H@Q@@@@@@@@]L^@)^@)US )@@G@@^@)^@)^@)^@)^@)^@)^@)^@)^@)^@)^@)^@)^@)^@)^@)^@)^@)^@)^@)^@)^@)^@)^@)^@)UT )@@G@@^@)^@)^@)^@)^@)^@)^@)^@)^@)^@)^@)^@)^@)^@)[*H[*H@Q@@@@@@@@]ME-2GD,IT!HD4UU )@@G@@^[\IK)C01^[4H8)IL>I-5IL,^[4H8)H(>H15 0D^@)^@)^@)^@)^@)^@)^@)^@)^@)^@)^@)UV )@@G@@^@)^@)^@)^@)^@)^@)^@)^@)^@)^@)^@)^@)[*H[*H@Q@@@@@@@@]NC[+IL:^[\I(4 )!A@?UW )@@G@@AK?AK0 )1 )1 -9^@,^@)^@)^@)^@)^@)^@)^@)^@)^@)^@)^@)^@)^@)^@)^@)^@)^@)^@)UX )@@G@@^@)^@)^@)^@)^@)^@)^@)^@)^@)^@)[*H[*H@Q@@@@@@@@]OC[$I-\^@1A@) 0)^@)^@)^@)UY )@@G@@^@)^@)^@)^@)^@)^@)^@)^@)^@)^@)^@)^@)^@)^@)^@)^@)^@)^@)^@)^@)^@)^@)^@)^@)UZ )@@G@@^@)^@)^@)^@)^@)^@)^@)^@)[*H[*H@Q@@@@@@@@]PC@,^@% K% K% K% K% K% K% K% K%VA )@@G@@ K% K% K% K% K% K% K% K% K% K% K% K% K% K% K% K% K% K% K% K% K% K% K% K%VB )@@G@@ K% K% K% K% K% K%[*H[*H@Q@@@@@@@@]QC@,^[^HD3I[?GD9 9PI[=GD4G*)CD2GT*HD6VC )@@G@@G(=^[2HD=^[?HD3I),^[^HD3I[?GD9^[4H[>^[?HD3I))H9&^[2HD=IS)GD2GT*HD6G(=^[&VD )@@G@@H92^[5IT>IK)[*H[*H@Q@@@@@@@@]RC@,^[-IS)GD,^[5I[=GD4G*)IL>IT5H-4 0)E(3G(2VE )@@G@@^[IT(IL>G))GT*GD,G9>IS)GD,G))I(0G--I->^[?HD3I),^@)^@)^@)VF )@@G@@^@)^@)[*H[*H@Q@@@@@@@@]SC@,^@% K% K% K% K% K% K% K% K% K% K% K% K% K% K%VG )@@G@@ K% K% K% K% K% K% K% K% K% K% K% K% K% K% K% K% K% K% K% K% K% K% K% K%VH )@@G@@[*H[*H@Q@@@@@@@@]TC@4A@'IT2I*?I04A@?I04A)?I04A*? )?A)5^[=H@)AK!AS?A0!AC1VI )@@G@@^@D -6AC?I02^@,^@)^@)^@)^@)^@)^@)^@)IT>GD2GT*^[&H92^[5IT>IK)IL(G-3[*H[*HVJ )@@G@@@Q@@@@@@@@]UC[=IT0 )!A@? )3 )2 )? -6AC2AK$^@)^@/E-2GD,IT!HD4^[-H19^[G))GD3^[+G((H1$^[-ILG),^[OH[>VS )@@G@@JC)GD2G*)IL>GT\IL=G(=^[5H1=G(2^[4H[>[*H[*H@Q@@@@@@@@]ZG->I[-IL4H(>H14^[,VT )@@G@@I(!GL>IK)GD,G))I(3G(2HD=^[\G0)I-*G*)I[>IL3H9,^[7H[\^[2G(1I(>IT4G(=^[4H[>VU )@@G@@^[-ILVX )@@G@@I-5IL,^[4H8)H(>H15^@D^@)^@)^@)^@)^@)^@)^@)^@)^@)^@)^@)^@)^@)^@)^@)^@)^@)VY )@@G@@^@)^@)^@)^@)^@)^@)[*H[*H@Q@@@@@@@@]+C[+IL:^[\I(4 )!A@?AK?AK0 )1 )1 -9^@,VZ )@@G@@^@)^@)^@)^@)^@)^@)^@)^@)^@)^@)^@)^@)^@)^@)^@)^@)^@)^@)^@)^@)^@)^@)^@)^@)WA )@@G@@^@)^@)^@)^@)[*H[*H@Q@@@@@@@@]C@,^[^G(?G(4G*)EL(G-3^[&IL\H*)CD2GT*HD6G*,^[^G(?G(4G*)WF )@@G@@GD?H))IL(G-3^[&H92^[4H[>^[5IT>IK)I-*GD4^[*GD6G*)GL>G(,^[!GD2HT>G))[*H[*HWG )@@G@@@Q@@@@@@@@]&C@,^[&H92^[=G(?G(4HD\H0)I1(GC)GC)C))HD,^[4H[>^[S^[H*)G12H9!^[4H[>^[!GD3I->IK)H-(IT4^[4H[>H0)[*H[*H@Q@@@@WI )@@G@@@@@@]$C@,^[!GD4GT*^[5I[=GD4G*)I-*G*)G1(H->H1-H(>^[(H0)I-*G*)GT\H92G-(H1-WJ )@@G@@I-\IK$IS)GD2GT*HD6G(=^[&HD?G*)H-(IT4^[5I[=GD4HD,G8)^@)[*H[*H@Q@@@@@@@@]*WK )@@G@@C@,^[4H[>^[S^[H->I-(H9, 0)DD&^[-H-?^[2G(1I(>WL )@@G@@IT4G(=^[2HD=IS)I-\^[=G(?G(4G*)GD2G*)H1\I))HD,^@)[*H[*H@Q@@@@@@@@](C@,^[4WM )@@G@@H[(IS)GD2GT*HD6G(=^[&HD?G*)H-(IT4 ))I-2JC)H9,^[=HD3HS)GL9^[>H)!^[-H-?^[2WN )@@G@@HD=IS)IL>ID5G(3I->G),^[OH[(IS)IT*H95H-=^@)[*H[*H@Q@@@@@@@@]%C@,^[=G(?G(4WO )@@G@@G*)I-*G(!^[&IL\H*)I9*G(2G(6G(2^[4H[>JC)H(-JC)IL>IT(G-> 0)^@)^@)^@)^@)^@)WP )@@G@@^@)^@)^@)^@)^@)^@)^@)^@)^@)^@)^@)^@)[*H[*H@Q@@@@@@@@]:C@,^@% K% K% K% K%WQ )@@G@@ K% K% K% K% K% K% K% K% K% K% K% K% K% K% K% K% K% K% K% K% K% K% K% K%WR )@@G@@ K% K% K% K% K% K% K% K% K% K%[*H[*H@Q@@@@@@@@]?C@6A@'IT2I*?I04A@?I04A)?WS )@@G@@I04A*? )?A85^[=H@)AK!AS?A0!AC1 )9A@!AC)[C?I01 -6AK?C))I02AL(AS) 0)G1(H1=WT )@@G@@^[\H1>IS)I9(I-*^[^^@)^@)[*H[*H@Q@@@@@@@@]!C[>J[4^@,^@)^@)^@)^@)^@)^@)^@)WU )@@G@@^@)^@)^@)^@)^@)^@)^@)^@)^@)^@)^@)^@)^@)^@)^@)^@)^@)^@)^@)^@)^@)^@)^@)^@)WV )@@G@@^@)^@)^@)^@)^@)^@)[*H[*H@Q@@@@@@@@],C[2H1!^@!AC) 0)^@)^@)^@)^@)^@)^@)^@)WW )@@G@@^@)^@)^@)^@)^@)^@)^@)^@)^@)^@)^@)^@)^@)^@)^@)^@)^@)^@)^@)^@)^@)^@)^@)^@)WX )@@G@@^@)^@)^@)^@)[*H[*H@Q@@@@@@@@]\C[+IL:^@,^@)^@)^@)^@)^@)^@)^@)^@)^@)^@)^@)WY )@@G@@^@)^@)^@)^@)^@)^@)^@)^@)^@)^@)^@)^@)^@)^@)^@)^@)^@)^@)^@)^@)^@)^@)^@)^@)WZ )@@G@@^@)^@)[*H[*H@Q@@@@@@@@]0 0)^@)^@)^@)^@)^@)^@)^@)^@)^@)^@)^@)^@)^@)^@)^@)XA )@@G@@^@)^@)^@)^@)^@)^@)^@)^@)^@)^@)^@)^@)^@)^@)^@)^@)^@)^@)^@)^@)^@)^@)^@)^@)XB )@@G@@[*H[*H@Q@@@@@@@@]1 K.B*)^@)^@)^@)^@)^@)^@)^@)^@)^@)^@)^@)^@)^@)^@)^@)^@)XC )@@G@@^@)^@)^@)^@)^@)^@)^@)^@)^@)^@)^@)^@)^@)^@)^@)^@)^@)^@)^@)^@)^@)^@)[*H[*HXD )@@G@@@Q@@@@@@@@]2C[2G-< )!AC?A0)AK9 *1AK)I01A1*AC2^@,^@)^@)^@)^@)^@)^@)^@)^@)XE )@@G@@^@)^@)^@)^@)^@)^@)^@)^@)^@)^@)^@)IL>G1\IL!GD4^[&HD?G(,GD!G(3[*H[*H@Q@@@@XF )@@G@@@@@@]3[DHCDKE[ EK%I01A16AK0^@)^@DC))^@)^@)^@)^@)^@)^@)^@)^@)^@)^@)^@)^@)XG )@@G@@^@)^@)^@)^@)^@)^@)^@)^@)^@)^@)^@)^@)^@)^@)^@)^@)^@)^@)[*H[*H@Q@@@@@@@@]4XH )@@G@@C[+IL:^[3H92 )!A@)^8)^8)^@2 *2A*)[C?AC) 0)^@)^@)^@)^@)^@)^@)^@)^@)^@)^@)XI )@@G@@^@)^@)^@)^@)^@)^@)^@)^@)IT\IL4^[\H0)G1(H->H1-H(>[*H[*H@Q@@@@@@@@]5C[!GD5XJ )@@G@@ )!A@?I04A@?I04AK?I04AS)G-0^@2 *2A*?AK8 *1^@D )1 --^@2 *2A*?A80 *1^@D )1XK )@@G@@ --^@,^[!H96G*)C))I-\^[!GD4GT*G(=^[2HD=IS)[*H[*H@Q@@@@@@@@]6C[IK)H9&^[?HD,G(3^[!GD4GT*G(=[*H[*H@Q@@@@@@@@]7C[5I[=^@,^@)^@)^@)XN )@@G@@^@)^@)^@)^@)^@)^@)^@)^@)^@)^@)^@)^@)^@)^@)^@)^@)^@)^@)^@)^@)^@)^@)^@)^@)XO )@@G@@^@)^@)^@)^@)^@)^@)^@)^@)^@)^@)[*H[*H@Q@@@@@@@@]8C[(G0)I02AS)B*)I02AK)G94XP )@@G@@H8)A05^@;^@,^@)^@)^@)^@)^@)^@)^@)^@)GD?H))G1(H->IS)GD2G*)H9,^[-ILXQ )@@G@@^[3HT(I@)I-\^[=HD3I[?GD9[*H[*H@Q@@@@@@@@]9C@,^@% K% K)IT\H(>^[&HD?G(3^[!XR )@@G@@GD9^[+G*)H9,^[=HD3HS?^[-I-4G(!I[4^[4H8)G->H->I->^[>GDXW )@@G@@H1-H(>[*H[*H@Q@@@@@@@@]/C[>H)! -?HD, S1^[HCDKE[ EK?I01A0) 0)^@)^@)^@)^@)XX )@@G@@^@)^@)^@)^@)^@)^@)^@)^@)^@)^@)^@)^@)^@)GD4I->H(0I))I-\^[=G(?G(4G*)G1(H->XY )@@G@@[*H[*H@Q@@@@@@@@].C[(H1<^[6A0) 0)^@)^@)^@)^@)^@)^@)^@)^@)^@)^@)^@)^@)^@)XZ )@@G@@^@)^@)^@)^@)^@)^@)^@)^@)^@)^@)^@)^@)^@)^@)^@)^@)^@)^@)^@)^@)^@)^@)[*H[*HYA )@@G@@@Q@@@@@@@@]"C[$I-\^@6AK) 0)^@)^@)^@)^@)^@)^@)^@)^@)^@)^@)^@)^@)^@)^@)^@)YB )@@G@@^@)^@)^@)^@)^@)^@)^@)^@)^@)^@)^@)^[+GDJ[4^[\H1>[*H[*H@Q@@@@YC )@@G@@@@@@]_C@6A*'GL2HS) 0)^@)^@)^@)^@)^@)^@)^@)^@)^@)^@)^@)^@)^@)^@)^@)^@)^@)YD )@@G@@^@)^@)^@)^@)^@)^@)^@)^@)^@)^@)^@)^@)^@)^@)^@)^@)^@)^@)[*H[*H@Q@@@@@@@@#@YE )@@G@@E-*G*)G1\H-?H97HD,G8)IL(G-3^[*GD6G*)GL>G(,^[=G(?G(4G(=^[&IL\H*)GD2GT*HD6YF )@@G@@G*'^@)^@)^@)^@)^@)^@)^@)^@)^@)^@)^@)^@)^@)^@)^@)[*H[*H@Q@@@@@@@@#[^@)^@)YG )@@G@@^@)^@)^@)^@)^@)^@)^@)^@)^@)^@)^@)^@)^@)^@)^@)^@)^@)^@)^@)^@)^@)^@)^@)^@)YH )@@G@@^@)^@)^@)^@)^@)^@)^@)^@)^@)^@)^@)^@)^@)^@)[*H[*H@Q@@@@@@@@#]C[2G-< )!AC?YI )@@G@@A0)AC8 *3 )2AK!AC?AK4 *4^[6AC7H@3 -6AC0H@1 -6AC1HC4^@,^@)^@)^@)^@)^@)^@)YJ )@@G@@^@)^@)^@)^@)^@)^@)^@)^@)^@)^@)^@)^@)[*H[*H@Q@@@@@@@@##H(\G->^[6AC7^@)IL(YK )@@G@@G))I01AC)I01A@)^@)^@)^@)^@)^@)^@)^@)^@)^@)^@)^@)^@)^@)^@)^@)^@)^@)^@)^@)YL )@@G@@^@)^@)^@)^@)^@)^@)^@)^@)^@)^@)[*H[*H@Q@@@@@@@@#^C[+IL:^@,^@)^@)^@)^@)^@)YM )@@G@@^@)^@)^@)^@)^@)^@)^@)^@)^@)^@)^@)^@)^@)^@)^@)^@)^@)^@)^@)^@)^@)^@)^@)^@)YN )@@G@@^@)^@)^@)^@)^@)^@)^@)^@)[*H[*H@Q@@@@@@@@# C[=IT0 )!A@?AK?AS? )? -6AC2AK$YO )@@G@@^@)^@)^@/E[2G(3IS)C01^[4H8)IL>I-5IL,^[4H8)D(>H15B0)^@$E03^@,^@)^@)^@)^@)YP )@@G@@^@)^@)^@)^@)^@)^@)[*H[*H@Q@@@@@@@@#AC[$I-\^@1A@) 0)^@)^@)^@)^@)^@)^@)^@)YQ )@@G@@^@)^@)^@)^@)^@)^@)^@)^@)^@)^@)^@)^@)^@)^@)^@)^@)^@)^@)^@)^@)^@)^@)^@)^@)YR )@@G@@^@)^@)^@)^@)[*H[*H@Q@@@@@@@@#B^@)^@)^@)^@)^@)^@)^@)^@)^@)^@)^@)^@)^@)^@)YS )@@G@@^@)^@)^@)^@)^@)^@)^@)^@)^@)^@)^@)^@)^@)^@)^@)^@)^@)^@)^@)^@)^@)^@)^@)^@)YT )@@G@@^@)^@)[*H[*H@Q@@@@@@@@#C^@)^@)^@)^@)^@)^@)^@)^@)^@)^@)^@)^@)^@)^@)^@)^@)YU )@@G@@^@)^@)^@)^@)^@)^@)^@)^@)^@)^@)^@)^@)^@)^@)^@)^@)^@)^@)^@)^@)^@)^@)^@)^@)YV )@@G@@[*H[*H@Q@@@@@@@@#D^@)^@)^@)^@)^@)^@)^@)^@)^@)^@)^@)^@)^@)^@)^@)^@)^@)^@)YW )@@G@@^@)^@)^@)^@)^@)^@)^@)^@)^@)^@)^@)^@)^@)^@)^@)^@)^@)^@)^@)^@)^@)^@)[*H[*HYX )@@G@@@Q@@@@@@@@#EC@7A*'GL2HS) 0)^@)^@)^@)^@)^@)^@)^@)^@)^@)^@)^@)^@)^@)^@)^@)YY )@@G@@^@)^@)^@)^@)^@)^@)^@)^@)^@)^@)^@)^@)^@)^@)^@)^@)^@)^@)^@)^@)[*H[*H@Q@@@@YZ )@@G@@@@@@#FE-*G(2G*)GD2G*)H1\^[2HD=IS)H9&^[9H95IL3^[!GD2HT>G))G1\IK)G->H->I-(ZA )@@G@@H9,^[&IL\H*)GD2GT*HD6G*,^@)^@)^@)^@)^@)^@)^@)^@)^@)^@)[*H[*H@Q@@@@@@@@#GZB )@@G@@^@)^@)^@)^@)^@)^@)^@)^@)^@)^@)^@)^@)^@)^@)^@)^@)^@)^@)^@)^@)^@)^@)^@)^@)ZC )@@G@@^@)^@)^@)^@)^@)^@)^@)^@)^@)^@)^@)^@)^@)^@)^@)^@)[*H[*H@Q@@@@@@@@#HFD\I*)ZD )@@G@@H(5IT4^[>H14G(2^[-^[^^[(H0)I-*G*)F@)GT\H-5H(,^[&H92^[4H[\IT>^[2HD=IS)JD\ZE )@@G@@I*)I9(IT*^[4H8)G->H->I->^[&IL\H*)^@)^@)^@)[*H[*H@Q@@@@@@@@#IGD2GT*HD6G*,ZF )@@G@@^@)^@)^@)^@)^@)^@)^@)^@)^@)^@)^@)^@)^@)^@)^@)^@)^@)^@)^@)^@)^@)^@)^@)^@)ZG )@@G@@^@)^@)^@)^@)^@)^@)^@)^@)^@)^@)^@)^@)[*H[*H@Q@@@@@@@@#J^@)^@)^@)^@)^@)^@)ZH )@@G@@^@)^@)^@)^@)^@)^@)^@)^@)^@)^@)^@)^@)^@)^@)^@)^@)^@)^@)^@)^@)^@)^@)^@)^@)ZI )@@G@@^@)^@)^@)^@)^@)^@)^@)^@)^@)^@)[*H[*H@Q@@@@@@@@#KE-2GD,IT!HD4^[\IK)C01^[4ZJ )@@G@@H8)IL>I-5IL,^[4H8)I-*G*)H(>H15^@D^@)^@)^@)^@)^@)^@)^@)^@)^@)^@)^@)^@)^@)ZK )@@G@@^@)^@)^@)^@)^@)^@)^@)^@)[*H[*H@Q@@@@@@@@#LC[+IL:^[\I(4 )!A@?AK?AK0 )1 )1ZL )@@G@@ -9^@,^@)^@)^@)^@)^@)^@)^@)^@)^@)^@)^@)^@)^@)^@)^@)^@)^@)^@)^@)^@)^@)^@)ZM )@@G@@^@)^@)^@)^@)^@)^@)[*H[*H@Q@@@@@@@@#MC[$I-\^@1A@) 0)^@)^@)^@)^@)^@)^@)^@)ZN )@@G@@^@)^@)^@)^@)^@)^@)^@)^@)^@)^@)^@)^@)^@)^@)^@)^@)^@)^@)^@)^@)^@)^@)^@)^@)ZO )@@G@@^@)^@)^@)^@)[*H[*H@Q@@@@@@@@#N^@)^@)^@)^@)^@)^@)^@)^@)^@)^@)^@)^@)^@)^@)ZP )@@G@@^@)^@)^@)^@)^@)^@)^@)^@)^@)^@)^@)^@)^@)^@)^@)^@)^@)^@)^@)^@)^@)^@)^@)^@)ZQ )@@G@@^@)^@)[*H[*H@Q@@@@@@@@#O^@)^@)^@)^@)^@)^@)^@)^@)^@)^@)^@)^@)^@)^@)^@)^@)ZR )@@G@@^@)^@)^@)^@)^@)^@)^@)^@)^@)^@)^@)^@)^@)^@)^@)^@)^@)^@)^@)^@)^@)^@)^@)^@)ZS )@@G@@[*H[*H@Q@@@@@@@@#PC@,^@% K% K% K% K% K% K% K% K% K% K% K% K% K% K% K% K%ZT )@@G@@ K% K% K% K% K% K% K% K% K% K% K% K% K% K% K% K% K% K% K% K% K% K%[*H[*HZU )@@G@@@Q@@@@@@@@#QC@,^[MG(?H9-G))ELDC-3^[&IL\H*)GD2GT*HD6G*,^[MG(?H9-G))I-\^[HZV )@@G@@CDKE[ EK)GD?H))IL(G-3^[&H92^[5IT>IK)H(-IL:G(=^[7HD4H@)D))^@)[*H[*H@Q@@@@ZW )@@G@@@@@@#RC@,^[(H0)I-*G*)F@)GT\H-5H(, 0)C1(IL3I))GT*G( ))H1\^[\I[>ZX )@@G@@IL-I-\IL3^[\H0)I9>G(:G(,G))I-\^[?H9-G))I--I[>IS,^@)^@)[*H[*H@Q@@@@@@@@#SZY )@@G@@C@,^[#IL>GD4G*)C1[ES)IL5H0)I-\^[?H9-G))IT>H->GT4G(=^[&HD?G(3^[&IL\H*)GD2ZZ )@@G@@GT*HD6G*,^[#IL>GD4G*)C(8G(<^[&HD?G*)I9(I-*^@)^@)[*H[*H@Q@@@@@@@@#TC@,^[?AA )@@G@@HD3I))H9&^[&HD?G(3^[4H[-I))GD2G*)GL>HD,G8)IL>IT4H92G(= 0)E-*HD3^[7HD?H))AB )@@G@@GL>^[2G(4IL(G(6G(=^[+JC)ELDC-[EL#D[MC(O^@)[*H[*H@Q@@@@@@@@#UC@,^[2I(,^[-AC )@@G@@G14G(2^[ACDN^[%H9+^[(IS)GT\H(0H->I->G),^[DG0)G1(H->IS)G(8HD3I))H9,^[=HD3AD )@@G@@HS)GD,G))H1\I))I--I[>^[4H[>^[ACDN^@)[*H[*H@Q@@@@@@@@#VC@,^[%H9+^[7HD?H))AE )@@G@@HL5IT4^[,H94^[2G(?H9-G))I-*G(!^[&IL\H*)GD2GT*HD6G*?^[4H[>JC)I9(H-?^[+G*)AF )@@G@@IL>I-2HD>I1>G))H--I->IK,^@)^@)[*H[*H@Q@@@@@@@@#WC@,^@% K% K% K% K% K% K%AG )@@G@@ K% K% K% K% K% K% K% K% K% K% K% K% K% K% K% K% K% K% K% K% K% K% K% K%AH )@@G@@ K% K% K% K% K% K% K% K%[*H[*H@Q@@@@@@@@#XC@8A@'GL2HS) 0)^@)^@)^@)^@)^@)AI )@@G@@^@)^@)^@)^@)^@)^@)^@)^@)^@)^@)^@)^@)^@)^@)^@)^@)^@)^@)^@)^@)^@)^@)^@)^@)AJ )@@G@@^@)^@)^@)^@)^@)^@)[*H[*H@Q@@@@@@@@#Y K.B*.B*.B*,B*.B*,B*.B*. 0)^@)^@)^@)AK )@@G@@^@)^@)^@)^@)^@)^@)^@)^@)^@)^@)^@)^@)^@)^@)^@)^@)^@)^@)^@)^@)^@)^@)^@)^@)AL )@@G@@^@)^@)^@)^@)[*H[*H@Q@@@@@@@@#Z[D6A))^@)^@)^@)^@)^@)^@)^@)^@)^@)^@)^@)^@)AM )@@G@@^@)^@)^@)^@)^@)^@)^@)^@)^@)^@)^@)^@)^@)^@)^@)^@)^@)^@)^@)^@)^@)^@)^@)^@)AN )@@G@@^@)^@)[*H[*H@Q@@@@@@@@#)C[+IL:^[=GD4 )!A@)I8)AK!A0?BC!AS?AC3 *4^@D -+ )'AO )@@G@@ -=B*)^@,^@)^@)^@)^@)^@)^@)^@)^@)^@)^@)^[=G(4G(2H((H1>^[=GD9^[\G0)I9>G(:AP )@@G@@[*H[*H@Q@@@@@@@@#-C[2G-? )!A@?AS)BC!AS)I03A[*AS) 0)^@)^@)^@)^@)^@)^@)^@)AQ )@@G@@^@)^@)^@)^@)^@)^@)^@)^@)^@)^@)^@)^@)^@)^@)IL>GD=^[=GD9^[\G0)I9>G(:[*H[*HAR )@@G@@@Q@@@@@@@@#+C[(G0)I03A@)B*)IT-I)?IT5H0)G94H8)BC2^@,^@)^@)^@)^@)^@)^@)^@)AS )@@G@@^@)^@)^@)^@)H1\^[\I[>IL-I-\IL3^[&H92^[4GD0G*)H9,^[7G(>HT>H1=[*H[*H@Q@@@@AT )@@G@@@@@@#G))I9(I-*^[G[*H[*H@Q@@@@@@@@#=AV )@@G@@C[4H94 )!A@)^8)^8)BC0 *1^@D ).^8)^8) 0)^@)^@)^@)^@)^@)^@)^@)^@)^@)^@)^@)AW )@@G@@^@)^@)^@)^@)^@)^@)^@)IT0GDC[5I[=AX )@@G@@^@,^@)^@)^@)^@)^@)^@)^@)^@)^@)^@)^@)^@)^@)^@)^@)^@)^@)^@)^@)^@)^@)^@)^@)AY )@@G@@^@)^@)^@)^@)^@)^@)^@)^@)^@)^@)^@)^@)^@)^@)[*H[*H@Q@@@@@@@@#&C[2H1!^@!AC)AZ )@@G@@ 0)^@)^@)^@)^@)^@)^@)^@)^@)^@)^@)^@)^@)^@)^@)^@)^@)^@)^@)^@)^@)^@)^@)^@)BA )@@G@@^@)^@)^@)^@)^@)^@)^@)^@)^@)^@)^@)^@)[*H[*H@Q@@@@@@@@#$C[+IL:^@,^@)^@)^@)BB )@@G@@^@)^@)^@)^@)^@)^@)^@)^@)^@)^@)^@)^@)^@)^@)^@)^@)^@)^@)^@)^@)^@)^@)^@)^@)BC )@@G@@^@)^@)^@)^@)^@)^@)^@)^@)^@)^@)[*H[*H@Q@@@@@@@@#* 0)^@)^@)^@)^@)^@)^@)^@)BD )@@G@@^@)^@)^@)^@)^@)^@)^@)^@)^@)^@)^@)^@)^@)^@)^@)^@)^@)^@)^@)^@)^@)^@)^@)^@)BE )@@G@@^@)^@)^@)^@)^@)^@)^@)^@)[*H[*H@Q@@@@@@@@#( K.B*)^@)^@)^@)^@)^@)^@)^@)^@)BF )@@G@@^@)^@)^@)^@)^@)^@)^@)^@)^@)^@)^@)^@)^@)^@)^@)^@)^@)^@)^@)^@)^@)^@)^@)^@)BG )@@G@@^@)^@)^@)^@)^@)^@)[*H[*H@Q@@@@@@@@#%C[2G-< )!AC?A0)AK9 *1AK)I01A1*AC2^@,BH )@@G@@^@)^@)^@)^@)^@)^@)^@)^@)^@)^@)^@)^@)^@)^@)^@)^@)IL>G1\IL!GD4^[4H8)G9>I))BI )@@G@@G1(H->H1-H(>[*H[*H@Q@@@@@@@@#:[DHCDKE[ EK%I01A16AK0^@)^@)^@)^@)^@)^@)^@)BJ )@@G@@^@)^@)^@)^@)^@)^@)^@)^@)^@)^@)^@)^@)^@)^@)^@)^@)^@)^@)^@)^@)^@)^@)^@)^@)BK )@@G@@^@)^@)[*H[*H@Q@@@@@@@@#?C[+IL:^[3H92 )!A@)^8)^8)AK!AK5^@D )1^@,^@)^@)^@)BL )@@G@@^@)^@)^@)^@)^@)^@)^@)^@)^@)^@)^@)^@)^@)^@)^@)^@)IT\IL4^[\H0)G1(H->H1-H(>BM )@@G@@[*H[*H@Q@@@@@@@@#!C[!GT* )!A@?I04A@?I04AK?I04AS?B@1^[=H(0^@2 *2A*)[C?AC)BN )@@G@@AK!AK5^@D )1^@,^@)^@)^@)^[!GD4GT*^[4H8)GD2H[(I1>^[&HD?G(3^[?HD3I))[*H[*HBO )@@G@@@Q@@@@@@@@#,C[2H1!^@!AK) 0)^@)^@)^@)^@)^@)^@)^@)^@)^@)^@)^@)^@)^@)^@)^@)BP )@@G@@^@)^@)^@)^@)^@)^@)^@)^@)^@)^@)^@)^@)^@)^@)^@)^@)^@)^@)^@)^@)[*H[*H@Q@@@@BQ )@@G@@@@@@#\C[!GT* )!AK? *1^[=^@9 *1AK?A03 *1^@D )1 --^@2BC!AC2 )9AK!AC)[C?AC?BR )@@G@@GC) 0)^@)^[!H96G*) 8)G1\IK)GD?H))H9,^[-IL*HD6G*)I--I[>[*H[*H@Q@@@@@@@@#0BS )@@G@@C[2H1!^@!AC) 0)^@)^@)^@)^@)^@)^@)^@)^@)^@)^@)^@)^@)^@)^@)^@)^@)^@)^@)^@)BT )@@G@@^@)^@)^@)^@)^@)^@)^@)^@)^@)^@)^@)^@)^@)^@)^@)^@)[*H[*H@Q@@@@@@@@#1C@8AC'BU )@@G@@H-=I0?I9'^[6AK9HC3B(3I-,I(!^))H-=I0)I02B[*AC2B*$^@$^[?G-6 -7^[6AC5H@8B(4BV )@@G@@HD!G*=^@,^@)^@)^@)^@)^@)^@)^@)^@)^@)^@)^@)[*H[*H@Q@@@@@@@@#2C[(H13^[6A))BW )@@G@@I02B@*AC!A0(^[(H13^[6AC5 @1 *2 C)I02B@*A8!AK(^[(H13^[6AC5 @4 *2 C)I02B@*BX )@@G@@BC!AK(^@,^@)^@)^@)^@)^@)^@)^@)^@)^@)[*H[*H@Q@@@@@@@@#3C[(H13^[6AC5 @7 *2BY )@@G@@ C)I02B@*AC1 *2 C) 0)^@)^@)^@)^@)^@)^@)^@)^@)G9>H1>IL-I->^[5H1(ID5G*)G1(BZ )@@G@@H->^[,GD!G*)G1\IK)IL(G))H-(IT4[*H[*H@Q@@@@@@@@#4C[>H-4 )!AC)H-< -6AK8^@,CA )@@G@@^@)^@)^@)^@)^@)^@)^@)^@)^@)^@)^@)^@)^@)^@)^@)^[>H-4^[2HD=^[?HD3I))I-\^[&CB )@@G@@HD?G*)I-\^[$G(4^[?GD4G(2[*H[*H@Q@@@@@@@@#5C[I1> )0A@1A@0AK?H-<^@)^@)^@)^@)^@)CI )@@G@@^@)^@)^@)^@)^@)^@)^@)^@)^@)^@)^@)^@)^@)^@)^@)^@)^@)^@)^@)^@)^@)^@)^@)^@)CJ )@@G@@[*H[*H@Q@@@@@@@@#9^9@^8) 0) K% K% K)IL>IT4H92G*)IL(G-3^[&IL\H*)GD2GT*HD6CK )@@G@@G*)G1\IK)I02^@)^@)^@)^@)^@)^@)^@)^@)^@)^@)^@)^@)^@)^@)^@)^@)^@)^@)[*H[*HCL )@@G@@@Q@@@@@@@@#'^9@^9-IT$ --^[3JD3^)%G-?H9<^)\IL2IL2IL2 97I97I97 0)^@)^@)^@)CM )@@G@@^@)^@)^@)^@)^@)^@)^@)^@)^@)^@)^@)^@)^@)^@)^@)^@)^@)^@)^@)^@)[*H[*H@Q@@@@CN )@@G@@@@@@#;^9@^9-IT$ -4H1&^[(GL-GT:I(0 -4^@)^@)^@)^@)^@)^@)^@)^@)^@)^@)^@)^@)CO )@@G@@^@)^@)^@)^@)^@)^@)^@)^@)^@)^@)^@)^@)^@)^@)^@)^@)^@)^@)[*H[*H@Q@@@@@@@@#/CP )@@G@@^9@^9&GD3 -?^@)^@)^@)^@)^@)^@)^@)^@)^@)^@)^@)^@)^@)^@)^@)^@)^@)^@)^@)^@)CQ )@@G@@^@)^@)^@)^@)^@)^@)^@)^@)^@)^@)^@)^@)^@)^@)^@)^@)[*H[*H@Q@@@@@@@@#.IL>IT4CR )@@G@@H92G*)GT2HD4G(2HD-^@.^[V [&HD?G*)B*)I02A--GL< L-GLI))I(0CW )@@G@@^[2G(-G))H1>J[4^[0H93HD4HD\H0)[*H[*H@Q@@@@@@@@^@C@8AK'IL?H0? )8A))AK!AK5CX )@@G@@ )6AC!B@?B@1 *8^[6AK5 -6AK6H@8 -6AK7H@8^@,^@)^@)IL>GD=^[&HD?G*?^[=GD4G*)CY )@@G@@^0)I-(H(>^[-ILG))[*H[*H@Q@@@@@@@@^[H92^@*G1(H->^@.^[6AK4I02A(6AK4CZ )@@G@@^[-H1=^[-IL^@.^[6AK4I02A0*A8!AK( 96AK6 @1 *2 C\I02A0*A)!AK(^[6DA )@@G@@AK7I02A)(^@)^@)^@)[*H[*H@Q@@@@@@@@^]C[$I-\^@8AK) 0)^@)^@)^@)^@)^@)^@)^@)DB )@@G@@^@)^@)^@)^@)^@)^@)^@)^@)^@)^@)^@)^@)^@)^@)^@)^@)^@)^@)^@)^@)^@)^@)^@)^@)DC )@@G@@^@)^@)^@)^@)[*H[*H@Q@@@@@@@@^#C@8A)' 0)^@)^@)^@)^@)^@)^@)^@)^@)^@)^@)^@)DD )@@G@@^@)^@)^@)^@)^@)^@)^@)^@)^@)^@)^@)^@)^@)^@)^@)^@)^@)^@)^@)^@)^@)^@)^@)^@)DE )@@G@@^@)^@)[*H[*H@Q@@@@@@@@^^F*)G12H9!F9=HD2G(F9=HD2^@;DF )@@G@@^@)^@)^@)^@)^@)^@)^@)^@)^@)^@)^@)^@)^@)^@)^@)^@)^@)^@)^@)^@)^@)^@)^@)^@)DG )@@G@@[*H[*H@Q@@@@@@@@^ G(,G))BS)^@)^@)^@)^@)^@)^@)^@)^@)^@)^@)^@)^@)^@)^@)^@)DH )@@G@@^@)^@)^@)^@)^@)^@)^@)^@)^@)^@)^@)^@)^@)^@)^@)^@)^@)^@)^@)^@)^@)^@)[*H[*HDI )@@G@@@Q@@@@@@@@^A^9@^9=G(?G(4G*?GS)I02 @1 *2 D6A),^@)^@)^@)^@)^@)^@)^@)^@)^@)DJ )@@G@@^@)^@)^@)^@)^@)^@)^@)^@)^@)^@)^@)^@)^@)^@)^@)^@)^@)^@)^@)^@)[*H[*H@Q@@@@DK )@@G@@@@@@^B^9@^9-IT$ -5I@)I02 @1 *2 D6A),^@)^@)^@)^@)^@)^@)^@)^@)^@)^@)^@)^@)DL )@@G@@^@)^@)^@)^@)^@)^@)^@)^@)^@)^@)^@)^@)^@)^@)^@)^@)^@)^@)[*H[*H@Q@@@@@@@@^CDM )@@G@@^9@^9=GD4GC?HD?^[6AK*AC!AK(I04 0)^@)^@)^@)^@)^@)^@)^@)^@)^@)^@)^@)^@)^@)DN )@@G@@^@)^@)^@)^@)^@)^@)^@)^@)^@)^@)^@)^@)^@)^@)^@)^@)[*H[*H@Q@@@@@@@@^DGL0IL5DO )@@G@@H0=^[2HD=GD2GT*IL>I)?I02BC?I02B@?I02^[3I->I1>H1+ )2 -0I(0I[9^@)^@)^@)^@)DP )@@G@@^@)^@)^@)^@)^@)^@)^@)^@)^@)^@)^@)^@)^@)^@)[*H[*H@Q@@@@@@@@^EG(,G-2G)=^@)DQ )@@G@@^@)^@)^@)^@)^@)^@)^@)^@)^@)^@)^@)^@)^@)^@)^@)^@)^@)^@)^@)^@)^@)^@)^@)^@)DR )@@G@@^@)^@)^@)^@)^@)^@)^@)^@)^@)^@)^@)^@)[*H[*H@Q@@@@@@@@^F^9@^9>H1=^@)^@)^@)DS )@@G@@^@)^@)^@)^@)^@)^@)^@)^@)^@)^@)^@)^@)^@)^@)^@)^@)^@)^@)^@)^@)^@)^@)^@)^@)DT )@@G@@^@)^@)^@)^@)^@)^@)^@)^@)^@)^@)[*H[*H@Q@@@@@@@@^G^9@^9&IL>G*)I02 @1 *2 D6DU )@@G@@A),^@)^@)^@)^@)^@)^@)^@)^@)^@)^@)^@)^@)^@)^@)^@)^@)^@)^@)^@)^@)^@)^@)^@)DV )@@G@@^@)^@)^@)^@)^@)^@)^@)^@)[*H[*H@Q@@@@@@@@^H^9@^93JD!^[6AK*AC!AK(I04 0? -!DW )@@G@@GD0I[>IK)^@)^@)^@)^@)^@)^@)^@)^@)^@)^@)^@)^@)^@)^@)^@)^@)^@)^@)^@)^@)^@)DX )@@G@@^@)^@)^@)^@)^@)^@)[*H[*H@Q@@@@@@@@^I^9@^9&HD,^@)^@)^@)^@)^@)^@)^@)^@)^@)DY )@@G@@^@)^@)^@)^@)^@)^@)^@)^@)^@)^@)^@)^@)^@)^@)^@)^@)^@)^@)^@)^@)^@)^@)^@)^@)DZ )@@G@@^@)^@)^@)^@)[*H[*H@Q@@@@@@@@^JC[+IL:^[3I-2 )!A@) 0)^@)^@)^@)^@)^@)^@)^@)EA )@@G@@^@)^@)^@)^@)^@)^@)^@)^@)^@)^@)^@)^@)^@)^@)^@)^@)^@)^@)^@)^@)^@)^@)^@)^@)EB )@@G@@^@)^@)[*H[*H@Q@@@@@@@@^K^@)^@)^@)^@)^@)^@)^@)^@)^@)^@)^@)^@)^@)^@)^@)^@)EC )@@G@@^@)^@)^@)^@)^@)^@)^@)^@)^@)^@)^@)^@)^@)^@)^@)^@)^@)^@)^@)^@)^@)^@)^@)^@)ED )@@G@@[*H[*H@Q@@@@@@@@^LE-*G*)IL(G-3^[9H95^[*GD6G*)IL>ID5G(3I->G))GD2G*)H1\I8)EE )@@G@@GL>HD,G8)IL>H-\GD=G(=^[&IL\H*)I--I[> 0)E-*HD3^[0IL\GT>IT3^@)^@)^@)[*H[*HEF )@@G@@@Q@@@@@@@@^MIL>ID5HD2G(3^[4H[>^[\I[>IL-I-\IK)I-\^[?H9-G))I-*G*)GD0I[2H90EG )@@G@@IL(GD4G*)I--I[> [3 C)GD,G))I-*G*)IL(G-3^[?H9-G->G))^@)^@)^@)[*H[*H@Q@@@@EH )@@G@@@@@@^NG12H9!^[4H[>H*,^[OH[>^[2HD=IS)I9(H-?^[4H[>H0)GL>^[2G(4IL(G(6G(=^[(EI )@@G@@H14H8)I-*G*)H(\G->^[-H1=^[4JD0G*)I9*G(2G*)I-*G(9^@)^@)[*H[*H@Q@@@@@@@@^OEJ )@@G@@I9>IL>^[?H9^[(H0)GC)G-(G1&G(2G(,I))IL(G))H15EK )@@G@@H(+G(2^[=G(0G(,G-(H1$^[\H0)GD6GD(H--GL?G*)^@)^@)[*H[*H@Q@@@@@@@@^PIT0GDH0)I-*HD3^[0IL\GT>IT3^[(IS)GT\H(0H->I->G))GC)H(>IT3GD$G*)I9(H-?EM )@@G@@^[+G*)IT>H14^[4H8)JD\I*)I->H-?HD,G8)^@)^@)[*H[*H@Q@@@@@@@@^QI9*G(2G*)I-*EN )@@G@@G(3G*)IL(G-3^[*GD6G*)GL>G(,^[0H--GT>G),^@)^@)^@)^@)^@)^@)^@)^@)^@)^@)^@)EO )@@G@@^@)^@)^@)^@)^@)^@)^@)^@)^@)^@)^@)^@)[*H[*H@Q@@@@@@@@^R^@)^@)^@)^@)^@)^@)EP )@@G@@^@)^@)^@)^@)^@)^@)^@)^@)^@)^@)^@)^@)^@)^@)^@)^@)^@)^@)^@)^@)^@)^@)^@)^@)EQ )@@G@@^@)^@)^@)^@)^@)^@)^@)^@)^@)^@)[*H[*H@Q@@@@@@@@^SE-2GD,IT!HD4^[\IK)C01^[4ER )@@G@@H8)IL>I-5IL,^[4H8)H(>H15^@D^@)^@)^@)^@)^@)^@)^@)^@)^@)^@)^@)^@)^@)^@)^@)ES )@@G@@^@)^@)^@)^@)^@)^@)^@)^@)[*H[*H@Q@@@@@@@@^TC[+IL:^[\I(4 )!A@?AK?AK0 )1 )1ET )@@G@@ -9^@,^@)^@)^@)^@)^@)^@)^@)^@)^@)^@)^@)^@)^@)^@)^@)^@)^@)^@)^@)^@)^@)^@)EU )@@G@@^@)^@)^@)^@)^@)^@)[*H[*H@Q@@@@@@@@^UC[$I-\^@1A@) 0)^@)^@)^@)^@)^@)^@)^@)EV )@@G@@^@)^@)^@)^@)^@)^@)^@)^@)^@)^@)^@)^@)^@)^@)^@)^@)^@)^@)^@)^@)^@)^@)^@)^@)EW )@@G@@^@)^@)^@)^@)[*H[*H@Q@@@@@@@@^VC@9AK'GL2HS) 0)^@)^@)^@)^@)^@)^@)^@)^@)^@)EX )@@G@@^@)^@)^@)^@)^@)^@)^@)^@)^@)^@)^@)^@)^@)^@)^@)^@)^@)^@)^@)^@)^@)^@)^@)^@)EY )@@G@@^@)^@)[*H[*H@Q@@@@@@@@^WET\IL2JC?^[9H95^[H-\GD=^[-ILEZ )@@G@@G))IL(G-3^[\H0)I-*G*)I9>G(:G(,G),^[OH[>IL>^[-IL>^[,H8)H90G(2GD4H92IS)^@)FA )@@G@@[*H[*H@Q@@@@@@@@^XH9,^[=I(4JC)I-\^[?H9-G))I--I[>IS,^@)^@)^@)^@)^@)^@)^@)FB )@@G@@^@)^@)^@)^@)^@)^@)^@)^@)^@)^@)^@)^@)^@)^@)^@)^@)^@)^@)^@)^@)^@)^@)[*H[*HFC )@@G@@@Q@@@@@@@@^Y^@)^@)^@)^@)^@)^@)^@)^@)^@)^@)^@)^@)^@)^@)^@)^@)^@)^@)^@)^@)FD )@@G@@^@)^@)^@)^@)^@)^@)^@)^@)^@)^@)^@)^@)^@)^@)^@)^@)^@)^@)^@)^@)[*H[*H@Q@@@@FE )@@G@@@@@@^ZE[?G(-IT>^[4IL9^[-G9-HD,^[\H0)D(\H1=GD9 0)^@)^@)^@)^@)^@)^@)^@)^@)FF )@@G@@^@)^@)^@)^@)^@)^@)^@)^@)^@)^@)^@)^@)^@)^@)^@)^@)^@)^@)[*H[*H@Q@@@@@@@@^)FG )@@G@@^@)^@)^@)^@)^@)^@)^@)^@)^@)^@)^@)^@)^@)^@)^@)^@)^@)^@)^@)^@)^@)^@)^@)^@)FH )@@G@@^@)^@)^@)^@)^@)^@)^@)^@)^@)^@)^@)^@)^@)^@)^@)^@)[*H[*H@Q@@@@@@@@^-E-2GD,FI )@@G@@IT!HD4^[\IK)C01^[4H8)IL>I-5IL,^[4H8)I-*G*)H(>H15^@D^@)^@)^@)^@)^@)^@)^@)FJ )@@G@@^@)^@)^@)^@)^@)^@)^@)^@)^@)^@)^@)^@)^@)^@)[*H[*H@Q@@@@@@@@^+C[+IL:^[\I(4FK )@@G@@ )!A@?AK?AK0 )1 )1 -9^@,^@)^@)^@)^@)^@)^@)^@)^@)^@)^@)^@)^@)^@)^@)^@)^@)FL )@@G@@^@)^@)^@)^@)^@)^@)^@)^@)^@)^@)^@)^@)[*H[*H@Q@@@@@@@@^^@)^@)^@)^@)^@)^@)^@)^@)^@)^@)FQ )@@G@@^@)^@)^@)^@)^@)^@)^@)^@)^@)^@)^@)^@)^@)^@)^@)^@)^@)^@)^@)^@)^@)^@)^@)^@)FR )@@G@@^@)^@)^@)^@)^@)^@)[*H[*H@Q@@@@@@@@^&^@)^@)^@)^@)^@)^@)^@)^@)^@)^@)^@)^@)FS )@@G@@^@)^@)^@)^@)^@)^@)^@)^@)^@)^@)^@)^@)^@)^@)^@)^@)^@)^@)^@)^@)^@)^@)^@)^@)FT )@@G@@^@)^@)^@)^@)[*H[*H@Q@@@@@@@@^$C@9A*'GL2HS) 0)^@)^@)^@)^@)^@)^@)^@)^@)^@)FU )@@G@@^@)^@)^@)^@)^@)^@)^@)^@)^@)^@)^@)^@)^@)^@)^@)^@)^@)^@)^@)^@)^@)^@)^@)^@)FV )@@G@@^@)^@)[*H[*H@Q@@@@@@@@^*E-*G(2G*)GD2G*)H1\^[2HD=IS)H9&^[9H95IL3^[!GD2HT>FW )@@G@@G))G1\IK)H-\GD=HD,G8)G12H9!^[-IL 0)^@)^@)^@)^@)^@)^@)^@)^@)^@)^@)FX )@@G@@[*H[*H@Q@@@@@@@@^(^@)^@)^@)^@)^@)^@)^@)^@)^@)^@)^@)^@)^@)^@)^@)^@)^@)^@)FY )@@G@@^@)^@)^@)^@)^@)^@)^@)^@)^@)^@)^@)^@)^@)^@)^@)^@)^@)^@)^@)^@)^@)^@)[*H[*HFZ )@@G@@@Q@@@@@@@@^%FD\I*)H(5IT4^[>H14G(2^[-H0)D))HD,^[4H[>^[S^[I-5IL,^[4H8)I-*G*)H(>H15^@D^@)^@)^@)^@)^@)^@)^@)GG )@@G@@^@)^@)^@)^@)^@)^@)^@)^@)^@)^@)^@)^@)^@)^@)[*H[*H@Q@@@@@@@@^,C[+IL:^[\I(4GH )@@G@@ )!A@?AK?AK0 )1 )1 -9^@,^@)^@)^@)^@)^@)^@)^@)^@)^@)^@)^@)^@)^@)^@)^@)^@)GI )@@G@@^@)^@)^@)^@)^@)^@)^@)^@)^@)^@)^@)^@)[*H[*H@Q@@@@@@@@^\C[$I-\^@1A@) 0)^@)GJ )@@G@@^@)^@)^@)^@)^@)^@)^@)^@)^@)^@)^@)^@)^@)^@)^@)^@)^@)^@)^@)^@)^@)^@)^@)^@)GK )@@G@@^@)^@)^@)^@)^@)^@)^@)^@)^@)^@)[*H[*H@Q@@@@@@@@^0 K% K% K% K% K% K% K% K%GL )@@G@@ K% K% K% K% K% K% K% K% K% K% K% K% K% K% K% K% K% K% K% K% K% K% K% K%GM )@@G@@ K% K% K% K% K% K% K% K%[*H[*H@Q@@@@@@@@^1E1-IL(GD+H->^[=G(&HD,HD4HD\H0'GN )@@G@@^@)^@)^@)^@)^@)^@)^@)^@)^@)^@)^@)^@)^@)^@)^@)^@)^@)^@)^@)^@)^@)^@)^@)^@)GO )@@G@@^@)^@)^@)^@)^@)^@)[*H[*H@Q@@@@@@@@^2^@)^@)^@)^@)^@)^@)^@)^@)^@)^@)^@)^@)GP )@@G@@^@)^@)^@)^@)^@)^@)^@)^@)^@)^@)^@)^@)^@)^@)^@)^@)^@)^@)^@)^@)^@)^@)^@)^@)GQ )@@G@@^@)^@)^@)^@)[*H[*H@Q@@@@@@@@^3I01^[(AS)^@.^[=G(0H0=^@)^@)^@)^@)^@)^@)^@)GR )@@G@@^@)^@)^@)^@)^@)^@)^@)^@)^@)^@)^@)^@)^@)^@)^@)^@)^@)^@)^@)^@)^@)^@)^@)^@)GS )@@G@@^@)^@)[*H[*H@Q@@@@@@@@^4I02^[*AC1^@.^[5IT>IK=^@)^@)^@)^@)^@)^@)^@)^@)^@)GT )@@G@@^@)^@)^@)^@)^@)^@)^@)^@)^@)^@)^@)^@)^@)^@)^@)^@)^@)^@)^@)^@)^@)^@)^@)^@)GU )@@G@@[*H[*H@Q@@@@@@@@^5I03^[*AC)^@.^[3H9>^))^@)^@)^@)^@)^@)^@)^@)^@)^@)^@)^@)GV )@@G@@^@)^@)^@)^@)^@)^@)^@)^@)^@)^@)^@)^@)^@)^@)^@)^@)^@)^@)^@)^@)^@)^@)[*H[*HGW )@@G@@@Q@@@@@@@@^6I04^[*A0)^@.^[=GD4G*1^))^@)^@)^@)^@)^@)^@)^@)^@)^@)^@)^@)^@)GX )@@G@@^@)^@)^@)^@)^@)^@)^@)^@)^@)^@)^@)^@)^@)^@)^@)^@)^@)^@)^@)^@)[*H[*H@Q@@@@GY )@@G@@@@@@^7I05^[(AS)^@.^[!H9=G*1^))^@)^@)^@)^@)^@)^@)^@)^@)^@)^@)^@)^@)^@)^@)GZ )@@G@@^@)^@)^@)^@)^@)^@)^@)^@)^@)^@)^@)^@)^@)^@)^@)^@)^@)^@)[*H[*H@Q@@@@@@@@^8HA )@@G@@I06^[(AS)^@.^[5I-(H))H-(H1>^[,I(!GL>IK)^@)^@)^@)^@)^@)^@)^@)^@)^@)^@)^@)HB )@@G@@^@)^@)^@)^@)^@)^@)^@)^@)^@)^@)^@)^@)^@)^@)^@)^@)[*H[*H@Q@@@@@@@@^9I07^[(HC )@@G@@AK)^@.^[\I(4^[1I(-H14HD4JC)G1\IK)ITG(,^@)^@)^@)^@)^@)^@)^@)^@)^@)^@)HD )@@G@@^@)^@)^@)^@)^@)^@)^@)^@)^@)^@)^@)^@)^@)^@)[*H[*H@Q@@@@@@@@^'I08^[(AK)^@.HE )@@G@@^[\I(4^[?HD,G*)^S)G1\IK)ITG(,^@)^@)^@)^@)^@)^@)^@)^@)^@)^@)^@)^@)^@)HF )@@G@@^@)^@)^@)^@)^@)^@)^@)^@)^@)^@)^@)^@)[*H[*H@Q@@@@@@@@^;I09^[(AK)^@.^[\I(4HG )@@G@@^[4GD+^[0H93HD4HD\H0)^@)^@)^@)^@)^@)^@)^@)^@)^@)^@)^@)^@)^@)^@)^@)^@)^@)HH )@@G@@^@)^@)^@)^@)^@)^@)^@)^@)^@)^@)[*H[*H@Q@@@@@@@@^/I01A@)H@1^@.^[&H92H*)I-9HI )@@G@@I[>^@)^@)^@)^@)^@)^@)^@)^@)^@)^@)^@)^@)^@)^@)^@)^@)^@)^@)^@)^@)^@)^@)^@)HJ )@@G@@^@)^@)^@)^@)^@)^@)^@)^@)[*H[*H@Q@@@@@@@@^.I01AC)HC4^@.^[3I--IL4^[2HD=^@H1=^[2HD=^@<^@)^@)^@)HM )@@G@@^@)^@)^@)^@)^@)^@)^@)^@)^@)^@)^@)^@)^@)^@)^@)^@)^@)^@)^@)^@)^@)^@)^@)^@)HN )@@G@@^@)^@)^@)^@)[*H[*H@Q@@@@@@@@^_I01AS)IS4A@)B*)G->ITH1-H(>^@)^@)^@)^@)^@)^@)^@)^@)^@)^@)^@)HU )@@G@@^@)^@)^@)^@)^@)^@)^@)^@)^@)^@)^@)^@)^@)^@)^@)^@)^@)^@)^@)^@)[*H[*H@Q@@@@HV )@@G@@@@@@ #I01A8)H@3^@.^['G(2H8)G1(H-?G(=^[!H9=G*)^@)^@)^@)^@)^@)^@)^@)^@)^@)HW )@@G@@^@)^@)^@)^@)^@)^@)^@)^@)^@)^@)^@)^@)^@)^@)^@)^@)^@)^@)[*H[*H@Q@@@@@@@@ ^HX )@@G@@I01B@)H@4^@.^['G(2H8)G1(H-?G(=^[2HD=^@)^@)^@)^@)^@)^@)^@)^@)^@)^@)^@)^@)HY )@@G@@^@)^@)^@)^@)^@)^@)^@)^@)^@)^@)^@)^@)^@)^@)^@)^@)[*H[*H@Q@@@@@@@@ I01BC)HZ )@@G@@HC3^@.^[3I--I)1^[>IL2H92^@)^@)^@)^@)^@)^@)^@)^@)^@)^@)^@)^@)^@)^@)^@)^@)IA )@@G@@^@)^@)^@)^@)^@)^@)^@)^@)^@)^@)^@)^@)^@)^@)[*H[*H@Q@@@@@@@@ AI02A@)H@3^@.IB )@@G@@^@*AC(^@)^@)^@)^@)^@)^@)^@)^@)^@)^@)^@)^@)^@)^@)^@)^@)^@)^@)^@)^@)^@)^@)IC )@@G@@^@)^@)^@)^@)^@)^@)^@)^@)^@)^@)^@)^@)[*H[*H@Q@@@@@@@@ BI02AC)HC4^@.^[3GD6ID )@@G@@G*)IT4GD2I))IL(G))^S)^@)^@)^@)^@)^@)^@)^@)^@)^@)^@)^@)^@)^@)^@)^@)^@)^@)IE )@@G@@^@)^@)^@)^@)^@)^@)^@)^@)^@)^@)[*H[*H@Q@@@@@@@@ CI02AK)HC3^@.^@<^[2HD=IS)IF )@@G@@I-\^[=G(?G(4G*)H92^[?H9-G))^@)^@)^@)^@)^@)^@)^@)^@)^@)^@)^@)^@)^@)^@)^@)IG )@@G@@^@)^@)^@)^@)^@)^@)^@)^@)[*H[*H@Q@@@@@@@@ DI02AS)HC3^@.^@<^[2HD=IS)H(-I-G))G1\IK)G->H->I-(H9,^@)^@)^@)^@)^@)^@)^@)^@)^@)^@)^@)^@)^@)^@)^@)^@)II )@@G@@^@)^@)^@)^@)^@)^@)[*H[*H@Q@@@@@@@@ EI02A))H@1^@.^[4HD<^))^@)^@)^@)^@)^@)IJ )@@G@@^@)^@)^@)^@)^@)^@)^@)^@)^@)^@)^@)^@)^@)^@)^@)^@)^@)^@)^@)^@)^@)^@)^@)^@)IK )@@G@@^@)^@)^@)^@)[*H[*H@Q@@@@@@@@ FI02A*)IS2A*)B*)G15H-?^[1I(-H-(G1(G(2 L&HD?IL )@@G@@G(,GD!G**AC(^@)^@)^@)^@)^@)^@)^@)^@)^@)^@)^@)^@)^@)^@)^@)^@)^@)^@)^@)^@)IM )@@G@@^@)^@)[*H[*H@Q@@@@@@@@ GI02A0)H@8^@.^[-IL^[=GD4G*)^@)^@)^@)^@)^@)IN )@@G@@^@)^@)^@)^@)^@)^@)^@)^@)^@)^@)^@)^@)^@)^@)^@)^@)^@)^@)^@)^@)^@)^@)^@)^@)IO )@@G@@[*H[*H@Q@@@@@@@@ HI02A8)H@8^@.^[-IL^[4HD!G*)^@)^@)^@)^@)^@)^@)^@)IP )@@G@@^@)^@)^@)^@)^@)^@)^@)^@)^@)^@)^@)^@)^@)^@)^@)^@)^@)^@)^@)^@)^@)^@)[*H[*HIQ )@@G@@@Q@@@@@@@@ II02B@)H@1AK)B*)I(,HD1I(>^[$G(,G(2GD4G(=^[&HD?G(,GD!G*)^@)^@)IR )@@G@@^@)^@)^@)^@)^@)^@)^@)^@)^@)^@)^@)^@)^@)^@)^@)^@)^@)^@)^@)^@)[*H[*H@Q@@@@IS )@@G@@@@@@ JI02BC)HC3^@.^[3I-,I(!^))^@)^@)^@)^@)^@)^@)^@)^@)^@)^@)^@)^@)^@)^@)IT )@@G@@^@)^@)^@)^@)^@)^@)^@)^@)^@)^@)^@)^@)^@)^@)^@)^@)^@)^@)[*H[*H@Q@@@@@@@@ KIU )@@G@@I03A@)H@3^@.^[=GD9^[\G0)I9>G(:^@)^@)^@)^@)^@)^@)^@)^@)^@)^@)^@)^@)^@)^@)IV )@@G@@^@)^@)^@)^@)^@)^@)^@)^@)^@)^@)^@)^@)^@)^@)^@)^@)[*H[*H@Q@@@@@@@@ LI03AC)IW )@@G@@HC3^@.^[,I(!GL>IK)H9&^[2HD=IS)I-\^[-IL^@)^@)^@)^@)^@)^@)^@)^@)^@)IX )@@G@@^@)^@)^@)^@)^@)^@)^@)^@)^@)^@)^@)^@)^@)^@)[*H[*H@Q@@@@@@@@ MI01AK2^[3AS5IY )@@G@@^@.^[GD=G(2^[&H92^[=HD3I[?GD9^@)^@)^@)^@)^@)^@)^@)IZ )@@G@@^@)^@)^@)^@)^@)^@)^@)^@)^@)^@)^@)^@)[*H[*H@Q@@@@@@@@ N^@)^@)^@)^@)^@)^@)JA )@@G@@^@)^@)^@)^@)^@)^@)^@)^@)^@)^@)^@)^@)^@)^@)^@)^@)^@)^@)^@)^@)^@)^@)^@)^@)JB )@@G@@^@)^@)^@)^@)^@)^@)^@)^@)^@)^@)[*H[*H@Q@@@@@@@@ O^@)^@)^@)^@)^@)^@)^@)^@)JC )@@G@@^@)^@)^@)^@)^@)^@)^@)^@)^@)^@)^@)^@)^@)^@)^@)^@)^@)^@)^@)^@)^@)^@)^@)^@)JD )@@G@@^@)^@)^@)^@)^@)^@)^@)^@)[*H[*H@Q@@@@@@@@ P^@)^@)^@)^@)^@)^@)^@)^@)^@)^@)JE )@@G@@^@)^@)^@)^@)^@)^@)^@)^@)^@)^@)^@)^@)^@)^@)^@)^@)^@)^@)^@)^@)^@)^@)^@)^@)JF )@@G@@^@)^@)^@)^@)^@)^@)[*H[*H@Q@@@@@@@@ Q^@)^@)^@)^@)^@)^@)^@)^@)^@)^@)^@)^@)JG )@@G@@^@)^@)^@)^@)^@)^@)^@)^@)^@)^@)^@)^@)^@)^@)^@)^@)^@)^@)^@)^@)^@)^@)^@)^@)JH )@@G@@^@)^@)^@)^@)[*H[*H@Q@@@@@@@@ R^@)^@)^@)^@)^@)^@)^@)^@)^@)^@)^@)^@)^@)^@)JI )@@G@@^@)^@)^@)^@)^@)^@)^@)^@)^@)^@)^@)^@)^@)^@)^@)^@)^@)^@)^@)^@)^@)^@)^@)^@)JJ )@@G@@^@)^@)[*H[*H@Q@@@@@@@@ S^@)^@)^@)^@)^@)^@)^@)^@)^@)^@)^@)^@)^@)^@)^@)^@)JK )@@G@@^@)^@)^@)^@)^@)^@)^@)^@)^@)^@)^@)^@)^@)^@)^@)^@)^@)^@)^@)^@)^@)^@)^@)^@)JL )@@G@@[*H[*H@Q@@@@______^@)^@)^@)^@)^@)^@)^@)^@)^@)^@)^@, 0, 0,^[ D1^^[MC(KD9MJM )@@G@@E)) 0, 0, 0)^@)^@)^@)^@)^@)^@)^@)^@)^@)^@)^@)^@)^@)^@)^@)^@)^@)^@)[*H[*HJN )@@G@@_@@@@@IL>G*)I02 @1 *2 D6A),^@)^@)^@)^@)^@)^@)^@)^@)^@)^@)^@)^@)^@)^@)^@)JO )@@G@@^@)^@)^@)^@)^@)^@)^@)^@)^@)^@)^@)^@)^@)^@)^@)^@)*[@@@[*SDFF*@Q@@@@@@@@@@JP )@@G@@@@@@@@@@@@@@@@0@[4@[K@@[@@ @[@@@ @@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@JQ )@@G@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@[*H[*H@Q@@@@@@@@@[ 1^CDOJR )@@G@@C*)AK4^[ECDI^@9A@)^@0BC'AK0BK0AS)^[MDD^^@)^@)AC1A1D^@)^@2A))DL[D0)BC0^@)JS )@@G@@ETOC(QC*)^@)^@)^@)^@)^@)^@)^@)^@)^@)^@)^@)[*H[*H@Q@@@@@@@@@] 0)^@)^@)^@)JT )@@G@@^@)^@)^@)^@)^@)^@)^@)^@)^@)^[M^[P^[I^@)^[^^[ ^[N^[D^[B^[I^@)^@)^@)^@)^@)JU )@@G@@^@)^@)^@)^@)^@)^@)^@)^@)^@)^@)^@)^@)[*H[*H@Q@@@@@@@@@# L[E(OD[JEK'[DNI->JV )@@G@@I1>^[HH9\IL>^@)^@)^@)^[ME(I^[ICDHC*'[D2HD=GD2GT*IL>I))^@)^@)^@)^@)^@)^@)JW )@@G@@^@)^@)^@)^@)^@)^@)^@)^@)^@)^@)[*H[*H@Q@@@@@@@@@^ LKE(ME[JET BKDIL>I-2HD>JX )@@G@@I1>IS)GD2GT*HD6G(=^[2HD=^[&HD?G(3^[-H1=^[2G(?H9-G-3^[4H[>H*)HD,I-\^[HCDKJY )@@G@@E[ EK,^@)^@)^@)^@)^@)^@)[*H[*H@Q@@@@@@@@@ K.B*.B*.B*.B*.B*.B*.B*.B*.B*.JZ )@@G@@B*.B*.B*.B*.B*.B*.B*.B*.B*.B*.B*.B*.B*.B*.B*.B*.B*.B*.B*.B*.B*.B*.B*.B*.KA )@@G@@B*.B*.B*.B*.B*.B*.[*H[*H@Q@@@@@@@@@AC[H1-KC )@@G@@H(> ))I(3G(2[*H[*H@Q@@@@@@@@@BC[2G(4 )4 -& )9BC)H-< -6AK8^@,^@)^@)^@)^@)KD )@@G@@^@)^@)^@)^@)^@)^@)^@)^@)^@)^@)^[2G(4IL(G(6G*)H-(IT4^[\G0)IL(G-3^[4H8)IL>KE )@@G@@H-\GD=[*H[*H@Q@@@@@@@@@CC[2H1!^@!AC) 0)^@)^@)^@)^@)^@)^@)^@)^@)^@)^@)^@)KF )@@G@@^@)^@)^@)^@)^@)^@)^@)^@)^@)^@)^@)^@)^@)^@)^@)^@)^@)^@)^@)^@)^@)^@)^@)^@)KG )@@G@@[*H[*H@Q@@@@@@@@@DC[?G-6^[6A1(AS.A0) 0)^@)^@)^@)^@)^@)^@)^@)^@)^@)^@)^@)KH )@@G@@^@)^@)^@)^@)^@)^@)^@)^@)^@)^@)^@)^@)^@)^@)^@)^@)^@)^@)^@)^@)^@)^@)[*H[*HKI )@@G@@@Q@@@@@@@@@EC[+IL:^@,^@)^@)^@)^@)^@)^@)^@)^@)^@)^@)^@)^@)^@)^@)^@)^@)^@)KJ )@@G@@^@)^@)^@)^@)^@)^@)^@)^@)^@)^@)^@)^@)^@)^@)^@)^@)^@)^@)^@)^@)[*H[*H@Q@@@@KK )@@G@@@@@@@F^@)^@)^@)^@)^@)^@)^@)^@)^@)^@)^@)^@)^@)^@)^@)^@)^@)^@)^@)^@)^@)^@)KL )@@G@@^@)^@)^@)^@)^@)^@)^@)^@)^@)^@)^@)^@)^@)^@)^@)^@)^@)^@)[*H[*H@Q@@@@@@@@@GKM )@@G@@I02^@)^@)^@)^@)^@)^@)^@)^@)^@)^@)^@)^@)^@)^@)^@)^@)^@)^@)^@)^@)^@)^@)^@)KN )@@G@@^@)^@)^@)^@)^@)^@)^@)^@)^@)^@)^@)^@)^@)^@)^@)^@)[*H[*H@Q@@@@@@@@@H^@)^@)KO )@@G@@^@)^@)^@)^@)^@)^@)^@)^@)^@)^@)^@)^@)^@)^@)^@)^@)^@)^@)^@)^@)^@)^@)^@)^@)KP )@@G@@^@)^@)^@)^@)^@)^@)^@)^@)^@)^@)^@)^@)^@)^@)[*H[*H@Q@@@@@@@@@IFD\I(2^[2G(1KQ )@@G@@I(>IT4^[4H8)IL>H-\GD=^[2HD=IS)G12H9!^[-IL^[(IS)GT\H(0H->I-> 0)E-*KR )@@G@@G*)G1\H-?H97HD,G8)H-(IT4^[3H[\I93^@)[*H[*H@Q@@@@@@@@@JI9*G(2G*)I-*G(3G*)KS )@@G@@IL(G-3^[*GD6G*)GL>G(,^[0H--GT>G),^[OH[>JC)GD?IT\^[3I-(H-?^[>J[(IT4^[\H0)KT )@@G@@GD2GT*HD6G*)IT\^[=H8)H1\I))^@)[*H[*H@Q@@@@@@@@@KGD2GT*HD6G*)I-*G(!^[-G9-KU )@@G@@HD,^[(G0)JD\I*)G-\^[,H94^[0G(2G1\IL!^[-H19^[5I[=GD4G(3 0)^@)^@)^@)^@)^@)KV )@@G@@^@)^@)^@)^@)^@)^@)^@)^@)[*H[*H@Q@@@@@@@@@L^@)^@)^@)^@)^@)^@)^@)^@)^@)^@)KW )@@G@@^@)^@)^@)^@)^@)^@)^@)^@)^@)^@)^@)^@)^@)^@)^@)^@)^@)^@)^@)^@)^@)^@)^@)^@)KX )@@G@@^@)^@)^@)^@)^@)^@)[*H[*H@Q@@@@@@@@@MC@1A@'IL=H)? *1 -6A0?AS0^@1B@!AS?AK2KY )@@G@@ *1 )2A)!A)?AK9 *1AK?BC2 *1^[6AC7H@3 -6AC0H@1 -6AC1HC4 -6AC6H@1AK?I03H@1KZ )@@G@@^@,^@)^@)^@)[*H[*H@Q@@@@@@@@@NC[2G(4 -6AC7 -6AC0 )5A@)D([E[KC(M -6AC6 )?LA )@@G@@ )?JC?H0) 0)^@)^@)^@)^@)^@)^@)^[2G(4IL(G(6G*)H(-I[0G(2^[&H92H(-I-4G(=^[&LB )@@G@@HD?G*)[*H[*H@Q@@@@@@@@@OC[=I(0 )!A@)H-=I0?I8)I01HC4B(2HD=^)) 0)^@)^@)^@)LC )@@G@@^@)^@)^@)^@)^@)^@)^@)^@)^@)^@)^@)^@)^@)^@)^@)G9>I))H1>I8)IL(G))H15H(+G(2LD )@@G@@[*H[*H@Q@@@@@@@@@PCD2H[(I1>G))IL(G))I01AC)I01A@)H[-IS)GL>G(,^[0H--GT>G))LE )@@G@@HD,^[6AD6AC0 0)^@)^@)^@)^@)^@)^@)^@)^@)^@)^@)^@)^@)^@)^@)^@)^@)^@)[*H[*HLF )@@G@@@Q@@@@@@@@@QC[(G0)I03^@.^@\^[>H)!^[HCDKE[ EK?I01A0)BS) 0)^@)^@)^@)^@)^@)LG )@@G@@^@)^[\H1?JC)G->H->I->^[&HD?G(3^[4H[-I))GT-H(>^[&IL\H*)I--I[>[*H[*H@Q@@@@LH )@@G@@@@@@@RC[(H1<^[6A0) 0)^@)^@)^@)^@)^@)^@)^@)^@)^@)^@)^@)^@)^@)^@)^@)^@)^@)LI )@@G@@^@)^@)^@)^@)^@)^@)^@)^@)^@)^@)^@)^@)^@)^@)^@)^@)^@)^@)[*H[*H@Q@@@@@@@@@SLJ )@@G@@C[$I-\^@1A@) 0)^@)^@)^@)^@)^@)^@)^@)^@)^@)^@)^@)^@)^@)^@)^@)^@)^@)^@)^@)LK )@@G@@^@)^@)^@)^@)^@)^@)^@)^@)^@)^@)^@)^@)^@)^@)^@)^@)[*H[*H@Q@@@@@@@@@TC@3A@'LL )@@G@@G(? *)H-< -6AK8^@,^@)^@)^@)^@)^@)^@)^@)^@)^@)^@)^@)^@)^@)^@)^@)^@)^@)G->LM )@@G@@H->I->^[&HD?G*)H9&^[2HD=IS)I-\^[2G(3I-\IL>[*H[*H@Q@@@@@@@@@UC[+IL:^[3G(,LN )@@G@@ )!A@?I02BC) 0)^@)^@)^@)^@)^@)^@)^@)^@)^@)^@)^@)^@)^@)^@)^@)^[3G(,G))H(>LO )@@G@@IT3GD$G*)I-\^[H1=^@,^@)LP )@@G@@^@)^@)^@)^@)^@)^@)^@)^@)^@)^@)^@)^@)^@)^@)^@)^@)^@)^@)^@)^@)^@)^@)^@)^@)LQ )@@G@@^@)^@)^@)^@)^@)^@)^@)^@)^@)^@)[*H[*H@Q@@@@@@@@@WC@,^@% K% K% K% K% K% K)LR )@@G@@CT-H14^[2G(4IL(G(6G*)D([E[KC(M^[&HD?G*) K% K% K% K% K% K% K% K% K% K)^@)LS )@@G@@^@)^@)^@)^@)^@)^@)^@)^@)[*H[*H@Q@@@@@@@@@XC@5A@'GL2HS)GT*G8)I05A[(AS)IT4LT )@@G@@GD4AC) 0)^@)^@)^@)^@)^@)^@)^@)^@)^@)^@)^@)^@)^@)^@)^@)^@)^@)^@)^@)^@)^@)LU )@@G@@^@)^@)^@)^@)^@)^@)[*H[*H@Q@@@@@@@@@YC(2IL\IK)HD,^[MDD^CDMCTCEL E)'^@)^@)LV )@@G@@^@)^@)^@)^@)^@)^@)^@)^@)^@)^@)^@)^@)^@)^@)^@)^@)^@)^@)^@)^@)^@)^@)^@)^@)LW )@@G@@^@)^@)^@)^@)[*H[*H@Q@@@@@@@@@Z^@)^@)^@)^@)^@)^@)^@)^@)^@)^@)^@)^@)^@)^@)LX )@@G@@^@)^@)^@)^@)^@)^@)^@)^@)^@)^@)^@)^@)^@)^@)^@)^@)^@)^@)^@)^@)^@)^@)^@)^@)LY )@@G@@^@)^@)[*H[*H@Q@@@@@@@@@)E(,GD+H->^[4H8)IL>I-2HD>I1>^[&HD?G*)D([E[KC(M L6LZ )@@G@@AC6^@)^@)^@)^@)^@)^@)^@)^@)^@)^@)^@)^@)^@)^@)^@)^@)^@)^@)^@)^@)^@)^@)^@)MA )@@G@@[*H[*H@Q@@@@@@@@@-E-*G*)G(2IL\IK)GT\G->^[(IS)I05A@)^@)^@)^@)^@)^@)^@)^@)MB )@@G@@^@)^@)^@)^@)^@)^@)^@)^@)^@)^@)^@)^@)^@)^@)^@)^@)^@)^@)^@)^@)^@)^@)[*H[*HMC )@@G@@@Q@@@@@@@@@+C[+IL:^[3G(, )!A@?AK1^@,^@)^@)^@)^@)^@)^@)^@)^@)^@)^@)^@)^@)MD )@@G@@^@)^@)^@)^@)^@)^@)^@)^@)^@)^@)^[3G(,G))I-\^[H1=^@,^@)^@)^@)^@)^@)^@)^@)^@)^@)^@)^@)^@)^@)^@)^@)^@)^@)MF )@@G@@^@)^@)^@)^@)^@)^@)^@)^@)^@)^@)^@)^@)^@)^@)^@)^@)^@)^@)[*H[*H@Q@@@@@@@@@=MG )@@G@@C@,^@% K% K% K% K% K%^[#GD,I))IL>I-2HD>I1>^[2HD=^[?HD3I))G1(H->^@% K% K%MH )@@G@@ K% K% K% K% K% K% K% K%^@)^@)^@)^@)^@)^@)^@)^@)[*H[*H@Q@@@@@@@@@>C@9A@'MI )@@G@@GL2HS)GT*G8)I05A[(AS)IT4GD4AC) 0)^@)^@)^@)^@)^@)^@)^@)^@)^@)^@)^@)^@)^@)MJ )@@G@@^@)^@)^@)^@)^@)^@)^@)^@)^@)^@)^@)^@)^@)^@)[*H[*H@Q@@@@@@@@@&C(2IL\IK)HD,MK )@@G@@^[MDD^CDMCTCEL E)'^@)^@)^@)^@)^@)^@)^@)^@)^@)^@)^@)^@)^@)^@)^@)^@)^@)^@)ML )@@G@@^@)^@)^@)^@)^@)^@)^@)^@)^@)^@)^@)^@)[*H[*H@Q@@@@@@@@@$^@)^@)^@)^@)^@)^@)MM )@@G@@^@)^@)^@)^@)^@)^@)^@)^@)^@)^@)^@)^@)^@)^@)^@)^@)^@)^@)^@)^@)^@)^@)^@)^@)MN )@@G@@^@)^@)^@)^@)^@)^@)^@)^@)^@)^@)[*H[*H@Q@@@@@@@@@*E(,GD+H->^[4H8)IL>I-2HD>MO )@@G@@I1>^[&HD?G*)D-# L6AK8^@)^@)^@)^@)^@)^@)^@)^@)^@)^@)^@)^@)^@)^@)^@)^@)^@)MP )@@G@@^@)^@)^@)^@)^@)^@)^@)^@)[*H[*H@Q@@@@@@@@@(E-*G*)G(2IL\IK)GT\G->^[(IS)I05MQ )@@G@@A@)^@)^@)^@)^@)^@)^@)^@)^@)^@)^@)^@)^@)^@)^@)^@)^@)^@)^@)^@)^@)^@)^@)^@)MR )@@G@@^@)^@)^@)^@)^@)^@)[*H[*H@Q@@@@@@@@@%C[+IL:^[3G(, )!A@?AK1^@,^@)^@)^@)^@)MS )@@G@@^@)^@)^@)^@)^@)^@)^@)^@)^@)^@)^@)^@)^@)^@)^@)^@)^@)^@)^[3G(,G))I-\^[H1=^@,^@)^@)^@)^@)^@)^@)^@)^@)^@)MU )@@G@@^@)^@)^@)^@)^@)^@)^@)^@)^@)^@)^@)^@)^@)^@)^@)^@)^@)^@)^@)^@)^@)^@)^@)^@)MV )@@G@@^@)^@)[*H[*H@Q@@@@@@@@@?C@,^@% K% K% K% K% K% K% K% K% K% K% K% K% K% K%MW )@@G@@ K% K% K% K% K% K% K% K% K% K% K% K% K% K% K% K% K% K% K% K% K% K% K% K%MX )@@G@@[*H[*H@Q@@@@@@@@@!^@)^[OH[(IS)IL5H0)IL>I-2HD>I1>IS)GD2GT*HD6G(=^[2HD=IS)MY )@@G@@HD,I-\^[HCDKE[ EK,^[DI))HD3^[-^[+GD4GT*^[0H92I))IL5H0)I-*GD4^@)^@)[*H[*HMZ )@@G@@@Q@@@@@@@@@,^@)^[(IS)IT4GD2I->G))GL9^[4H[>^[+GD4GT*^[%H9+^[4H[-I))H-\GD=NA )@@G@@IS)I-*G*)GD2GT*HD6G(=^[&HD?G(3^[7H[>IL>^[4H[>IT>^[2HD=IS)^@)[*H[*H@Q@@@@NB )@@G@@@@@@@\^@)^[-IL>^[?H9G))GL9NC )@@G@@^[4H[>^[5IT>IK)I9*G(,^[4H[>JC)IT>H->GT4^[4H8)^@)^@)^@)[*H[*H@Q@@@@@@@@@0ND )@@G@@^@)^[2G(?H9-G))GD2GT*HD6G(=^[2HD=IS)G12H9!^[4H[>^[MDD^CDMCTCDDQC*)IL5H0,NE )@@G@@^@)^@)^@)^@)^@)^@)^@)^@)^@)^@)^@)^@)^@)^@)^@)^@)[*H[*H@Q@@@@@@@@@1^@)^@)NF )@@G@@^@)^@)^@)^@)^@)^@)^@)^@)^@)^@)^@)^@)^@)^@)^@)^@)^@)^@)^@)^@)^@)^@)^@)^@)NG )@@G@@^@)^@)^@)^@)^@)^@)^@)^@)^@)^@)^@)^@)^@)^@)[*H[*H@Q@@@@@@@@@2E1-IL(GD+H->NH )@@G@@^[=G(&HD,HD4HD\H0'^@)^@)^@)^@)^@)^@)^@)^@)^@)^@)^@)^@)^@)^@)^@)^@)^@)^@)NI )@@G@@^@)^@)^@)^@)^@)^@)^@)^@)^@)^@)^@)^@)[*H[*H@Q@@@@@@@@@3^@)^@)^@)^@)^@)^@)NJ )@@G@@^@)^@)^@)^@)^@)^@)^@)^@)^@)^@)^@)^@)^@)^@)^@)^@)^@)^@)^@)^@)^@)^@)^@)^@)NK )@@G@@^@)^@)^@)^@)^@)^@)^@)^@)^@)^@)[*H[*H@Q@@@@@@@@@4I01^@)HC4^@.^[,G(7^[2HD=NL )@@G@@^@<^[-G14G(2^[2HD=^[(IS)IL>I-2HD>I1>G))^@)^@)^@)^@)^@)^@)^@)^@)^@)^@)^@)NM )@@G@@^@)^@)^@)^@)^@)^@)^@)^@)[*H[*H@Q@@@@@@@@@5I02^[*AC1^@.^[5IT>IK)H1-H(>^@)NN )@@G@@^@)^@)^@)^@)^@)^@)^@)^@)^@)^@)^@)^@)^@)^@)^@)^@)^@)^@)^@)^@)^@)^@)^@)^@)NO )@@G@@^@)^@)^@)^@)^@)^@)[*H[*H@Q@@@@@@@@@6I03^@)H@1^@.^@\^[(G0)IL(G))H[-G))GL>NP )@@G@@G(,^[-ILG))I-\^[4GD0G*)^@)^@)^@)^@)^@)^@)^@)^@)^@)^@)^@)^@)^@)^@)NQ )@@G@@^@)^@)^@)^@)[*H[*H@Q@@@@@@@@@7I06^@)HC3^@.^[?HD,G*)^S)I-\^[2G(-G))^@)^@)NR )@@G@@^@)^@)^@)^@)^@)^@)^@)^@)^@)^@)^@)^@)^@)^@)^@)^@)^@)^@)^@)^@)^@)^@)^@)^@)NS )@@G@@^@)^@)[*H[*H@Q@@@@@@@@@8I01A@)H@1^@.^[4JD0G*)H9&^[2HD=^@)^@)^@)^@)^@)^@)NT )@@G@@^@)^@)^@)^@)^@)^@)^@)^@)^@)^@)^@)^@)^@)^@)^@)^@)^@)^@)^@)^@)^@)^@)^@)^@)NU )@@G@@[*H[*H@Q@@@@@@@@@9I01AC)HC4^@.^[\IL(G9(H1-H))IL(G))^S)^@)^@)^@)^@)^@)^@)NV )@@G@@^@)^@)^@)^@)^@)^@)^@)^@)^@)^@)^@)^@)^@)^@)^@)^@)^@)^@)^@)^@)^@)^@)[*H[*HNW )@@G@@@Q@@@@@@@@@'I01A0)H@1AK)B*)G1(H->H1-H(>^[\G0)IL(G))^@)^@)^@)^@)^@)^@)^@)NX )@@G@@^@)^@)^@)^@)^@)^@)^@)^@)^@)^@)^@)^@)^@)^@)^@)^@)^@)^@)^@)^@)[*H[*H@Q@@@@NY )@@G@@@@@@@;I01A8)H@3^@.^[!H9=G*)H9&^[2HD=^@)^@)^@)^@)^@)^@)^@)^@)^@)^@)^@)^@)NZ )@@G@@^@)^@)^@)^@)^@)^@)^@)^@)^@)^@)^@)^@)^@)^@)^@)^@)^@)^@)[*H[*H@Q@@@@@@@@@/OA )@@G@@I02B@)H@1AK)B*)G1(H->H1-H(>^[IS)H9&^[2HD=IS)I-\^[+OB )@@G@@G*)IL>I-2HD>I1>G))^@)^@)^@)^@)^@)^@)^@)^@)^@)^@)[*H[*H@Q@@@@@@@@@.I02BC)OC )@@G@@HC3^@.^[3I--I-(H9,^@<^[\G0)GT-H-?HD,G8)I(3G(2^@)^@)^@)^@)^@)^@)^@)^@)^@)OD )@@G@@^@)^@)^@)^@)^@)^@)^@)^@)^@)^@)^@)^@)^@)^@)[*H[*H@Q@@@@@@@@@"I05A@)HC3^@.OE )@@G@@^[NE-[E)1^@)^@)^@)^@)^@)^@)^@)^@)^@)^@)^@)^@)^@)^@)^@)^@)^@)^@)^@)^@)^@)OF )@@G@@^@)^@)^@)^@)^@)^@)^@)^@)^@)^@)^@)^@)[*H[*H@Q@@@@@@@@@_^@)^@)^@)^@)^@)^@)OG )@@G@@^@)^@)^@)^@)^@)^@)^@)^@)^@)^@)^@)^@)^@)^@)^@)^@)^@)^@)^@)^@)^@)^@)^@)^@)OH )@@G@@^@)^@)^@)^@)^@)^@)^@)^@)^@)^@)[*H[*H@Q@@@@______^@)^@)^@)^@)^@)^@)^@)^@)OI )@@G@@^@)^@)^@, 0, 0,^[ D1^^[MC(KD9ME)) 0, 0, 0)^@)^@)^@)^@)^@)^@)^@)^@)^@)^@)OJ )@@G@@^@)^@)^@)^@)^@)^@)^@)^@)[*H[*H_@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@OK )@@G@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@*[@@@[*SDFF*@Q@@@@@@@@@@OL )@@G@@@@@@@@@@@@@@@@?@@K@[K@@[@@ @[8@@ @@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@OM )@@G@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@[*H[*H@Q@@@@@@@@@[ 1^CDOON )@@G@@C*)AC5^[^C(#^@8A8)^@1A)'A@3BK2AC)^[MDD^^@)^@)^@1A1B^@)^@0BC)C- CS)B@7^@)OO )@@G@@ETOC(QC*)^@)^@)^@)^@)^@)^@)^@)^@)^@)^@)^@)[*H[*H@Q@@@@@@@@@] 1CG(?I@)DD,OP )@@G@@G1\IL!GD4HD\H0)G1\IK)ELDC))CD2GT*HD6GD?^[NJD3I->H*)^@)^@)^@)^@)^@)^@)^@)OQ )@@G@@^@)^@)^@)^@)^@)^@)^@)^@)^@)^@)^@)^@)[*H[*H@Q@@@@@@@@@# K)^@)^@)^@)^@)^@)OR )@@G@@^@)^@)^@)^@)^@)^@)^@)^@)^@)^@)^@)^@)^@)^@)^@)^@)^@)^@)^@)^@)^@)^@)^@)^@)OS )@@G@@^@)^@)^@)^@)^@)^@)^@)^@)^@)^@)[*H[*H@Q@@@@@@@@@^ K)^@)^@)^@)^@)^@)^@)^@)OT )@@G@@^@)^@)^@)^@)^@)^@)^@)^@)^@)^@)^@)^@)^@)^@)^@)^@)^@)^@)^@)^@)^@)^@)^@)^@)OU )@@G@@^@)^@)^@)^@)^@)^@)^@)^@)[*H[*H@Q@@@@@@@@@ K.B*.B*.B*.B*.B*.B*.B*.B*.B*.OV )@@G@@B*.B*.B*.B*.B*.B*.B*.B*.B*.B*.B*.B*.B*.B*.B*.B*.B*.B*.B*.B*.B*.B*.B*.B*.OW )@@G@@B*.B*.B*.B*.B*.B*.[*H[*H@Q@@@@@@@@@AELDC))CD2GT*HD6GD?^[NJD3I->H*)^@)^@)OX )@@G@@^@)^@)^@)^@) K%^[C^[ ^[G^[K^@% K)^@)^@)^@)^@)^@)^@)^@)^@)^@)^@)D--IL(H(>OY )@@G@@IK)CT\I(,I-9[*H[*H@Q@@@@@@@@@B^@)^@)^@)^@)^@)^@)^@)^@)^@)^@)^@)^@)^@)^@)OZ )@@G@@^@)^@)^@)^@)^@)^@)^@)^@)^@)^@)^@)^@)^@)^@)^@)^@)^@)^@)^@)^@)^@)^@)^@)^@)PA )@@G@@^@)^@)[*H[*H@Q@@@@@@@@@C^@)^@)^@)^@)^@)^@)^@)^@)^@)^@)^@)^@)^@)^@)^@)^@)PB )@@G@@^@)^@)^@)^@)^@)^@)^@)^@)^@)^@)^@)^@)^@)^@)^@)^@)^@)^@)^@)^@)^@)^@)^@)^@)PC )@@G@@[*H[*H@Q@@@@@@@@@DE-*G*)ELDC))CD2GT*HD6GD?^[NJD3I->H*)GD?H-\I93^[9H95^[4PD )@@G@@H8)GD2GT*HD6G*)D([E[KC(M^[2HD=IS)I-\^[4GD0G*)G1\IK)I[>IL!GD,G(,I))[*H[*HPE )@@G@@@Q@@@@@@@@@EH9&G0!H-(H1>^[3I-\IL-G9> 0)D9,GT>^[-ILG)?^[4H[>IT>^[2PF )@@G@@HD=IS)I9(H-?^[2G(!GD(H0)H9,^[4GD0G*)I(,I-(H))JD\I*)GD3HS)^@)[*H[*H@Q@@@@PG )@@G@@@@@@@FG1\IK)I-*G(!^[4H8)GL>^[=G(?G(4G(= 0)E-*G*)IT9IT4G(!^[:G(>I[3^[-^[!PH )@@G@@GD3I->IK)HD,G->J@)H9&^[-H-?^[-ILG))IL(G-3^@)^@)[*H[*H@Q@@@@@@@@@GPI )@@G@@GD?H9,G8)I9(I-*^[4H[>^[5IT>IK)H1-H(>^[7H[\^[-ILG))I-*G(! 0)CD4^[-PJ )@@G@@H19^[4HD!G*)JD\I*)GT-H0)IT>G*)I9*HD 0)FD\I*)GT-H0)GD?IT\^[?H9-G))IL(G-3^[&IL\PL )@@G@@H*)I-*G*)GD2GT*HD6G*)I--I[>^[+GDIL&H92H(>G))GD2G*'^@)^@)^@)^@)^@)^@)^@)^@)^@)^@)^@)^@)PR )@@G@@^@)^@)^@)^@)^@)^@)^@)^@)[*H[*H@Q@@@@@@@@@L^@)^@)^@)^@)^@)^@)^@)^@)^@)^@)PS )@@G@@^@)^@)^@)^@)^@)^@)^@)^@)^@)^@)^@)^@)^@)^@)^@)^@)^@)^@)^@)^@)^@)^@)^@)^@)PT )@@G@@^@)^@)^@)^@)^@)^@)[*H[*H@Q@@@@@@@@@M^@)^@)^@)^@)^@)^@)^@)^@)^@)^@)AC,^[[PU )@@G@@IL^[MDD^IS)I-\^[4GD0G*)^@)^@)^@)^@)^@)^@)^@)^@)^@)^@)^@)^@)^@)^@)PV )@@G@@^@)^@)^@)^@)[*H[*H@Q@@@@@@@@@N^@)^@)^@)^@)^@)^@)^@)^@)^@)^@)AK,^[^HD3I[?PW )@@G@@GD9 9PI[=GD4G*)GD2GT*HD6G(=^[MDD^^[?HD3I))^@)^@)^@)^@)^@)^@)^@)^@)^@)^@)PX )@@G@@^@)^@)[*H[*H@Q@@@@@@@@@O^@)^@)^@)^@)^@)^@)^@)^@)^@)^@)AS,^[^G(?G(4G*)GD2PY )@@G@@GT*HD6G(=^[MDD^IS)^@)^@)^@)^@)^@)^@)^@)^@)^@)^@)^@)^@)^@)^@)^@)^@)^@)^@)PZ )@@G@@[*H[*H@Q@@@@@@@@@P^@)^@)^@)^@)^@)^@)^@)^@)^@)^@)A),^[MG(?H9-G))GD2GT*HD6QA )@@G@@G(=^[MDD^IS)^@)^@)^@)^@)^@)^@)^@)^@)^@)^@)^@)^@)^@)^@)^@)^@)^@)^@)[*H[*HQB )@@G@@@Q@@@@@@@@@Q^@)^@)^@)^@)^@)^@)^@)^@)^@)^@)^@)^@)^@)^@)^@)^@)^@)^@)^@)^@)QC )@@G@@^@)^@)^@)^@)^@)^@)^@)^@)^@)^@)^@)^@)^@)^@)^@)^@)^@)^@)^@)^@)[*H[*H@Q@@@@QD )@@G@@@@@@@R^@)^@)^@)^@)^@)^@)^@)^@)^@)^@)^@)^@)^@)^@)^@)^@)^@)^@)^@)^@)^@)^@)QE )@@G@@^@)^@)^@)^@)^@)^@)^@)^@)^@)^@)^@)^@)^@)^@)^@)^@)^@)^@)[*H[*H@Q@@@@@@@@@SQF )@@G@@^@)^@)^@)^@)^@)^@)^@)^@)^@)^@)^@)^@)^@)^@)^@)^@)^@)^@)^@)^@)^@)^@)^@)^@)QG )@@G@@^@)^@)^@)^@)^@)^@)^@)^@)^@)^@)^@)^@)^@)^@)^@)^@)[*H[*H@Q@@@@@@@@@T^@)^@)QH )@@G@@^@)^@)^@)^@)^@)^@)^@)^@)^@)^@)^@)^@)^@)^@)^@)^@)^@)^@)^@)^@)^@)^@)^@)^@)QI )@@G@@^@)^@)^@)^@)^@)^@)^@)^@)^@)^@)^@)^@)^@)^@)[*H[*H@Q@@@@@@@@@U^@)^@)^@)^@)QJ )@@G@@^@)^@)^@)^@)^@)^@)^@)^@)^@)^@)^@)^@)^@)^@)^@)^@)^@)^@)^@)^@)^@)^@)^@)^@)QK )@@G@@^@)^@)^@)^@)^@)^@)^@)^@)^@)^@)^@)^@)[*H[*H@Q@@@@@@@@@V^@)^@)^@)^@)^@)^@)QL )@@G@@^@)^@)^@)^@)^@)^@)^@)^@)^@)^@)^@)^@)^@)^@)^@)^@)^@)^@)^@)^@)^@)^@)^@)^@)QM )@@G@@^@)^@)^@)^@)^@)^@)^@)^@)^@)^@)[*H[*H@Q@@@@@@@@@W^@)^@)^@)^@)^@)^@)^@)^@)QN )@@G@@^@)^@)^@)^@)^@)^@)^@)^@)^@)^@)^@)^@)^@)^@)^@)^@)^@)^@)^@)^@)^@)^@)^@)^@)QO )@@G@@^@)^@)^@)^@)^@)^@)^@)^@)[*H[*H@Q@@@@@@@@@X^@)^@)^@)^@)^@)^@)^@)^@)^@)^@)QP )@@G@@^@)^@)^@)^@)^@)^@)^@)^@)^@)^@)^@)^@)^@)^@)^@)^@)^@)^@)^@)^@)^@)^@)^@)^@)QQ )@@G@@^@)^@)^@)^@)^@)^@)[*H[*H@Q@@@@@@@@@YAC,^[[IL^[MDD^IS)I-\^[4GD0G*)QR )@@G@@^@)^@)^@)^@)^@)^@)^@)^@)^@)^@)^@)^@)^@)^@)^@)^@)^@)^@)^@)^@)^@)^@)^@)^@)QS )@@G@@^@)^@)^@)^@)[*H[*H@Q@@@@@@@@@ZB*.B*.B*.B*.B*.B*.B*.B*.B*.B*.B*.B*)^@)^@)QT )@@G@@^@)^@)^@)^@)^@)^@)^@)^@)^@)^@)^@)^@)^@)^@)^@)^@)^@)^@)^@)^@)^@)^@)^@)^@)QU )@@G@@^@)^@)[*H[*H@Q@@@@@@@@@)^@)^@)^@)^@)^@)^@)^@)^@)^@)^@)^@)^@)^@)^@)^@)^@)QV )@@G@@^@)^@)^@)^@)^@)^@)^@)^@)^@)^@)^@)^@)^@)^@)^@)^@)^@)^@)^@)^@)^@)^@)^@)^@)QW )@@G@@[*H[*H@Q@@@@@@@@@-E-*HD3^[&I(,GT4HD\H0)GD?H-\I93^[9H95^[4H8)IT>H->GT4^[4QX )@@G@@H[>^[MDD^ [3 C)I-\^[-IL^[4H8)I--I[> 0)FD\I*)I9(H-?^@)^@)^@)[*H[*HQY )@@G@@@Q@@@@@@@@@+G(,I->IK)I-*G*)G1\IL!^[4JD0G*)GD,G))I-*G*)IT4GD2I-(H1$^[-H1=QZ )@@G@@^[>H1=HD,G8)IL(G))HD,^[4H[-I))I-9I[>^[4H8)GD2GT*HD6G*,^@)^@)[*H[*H@Q@@@@RA )@@G@@@@@@@H14G(2^[-^[$G(,G(2HD<^[=G(3GT2HD0I-(H9,^[\G0)RB )@@G@@I-*G(3G*)IL(G-3^[7H[(GT*^[G))^@)^@)[*H[*H@Q@@@@@@@@@=RC )@@G@@H9,^[-^[2HD=^[+JC)IL(G))GL-IT(IS)H--I->IK,^@)^@)^@)^@)^@)^@)^@)^@)^@)^@)RD )@@G@@^@)^@)^@)^@)^@)^@)^@)^@)^@)^@)^@)^@)^@)^@)^@)^@)[*H[*H@Q@@@@@@@@@>^@)^@)RE )@@G@@^@)^@)^@)^@)^@)^@)^@)^@)^@)^@)^@)^@)^@)^@)^@)^@)^@)^@)^@)^@)^@)^@)^@)^@)RF )@@G@@^@)^@)^@)^@)^@)^@)^@)^@)^@)^@)^@)^@)^@)^@)[*H[*H@Q@@@@@@@@@&C1\IK)G(-GT*RG )@@G@@^[2HD=^[4H8)GL>^[-ILG)?^[4H[>^[3JD3I->H*)I9(H-?^[GD4G*)GC)IT4RH )@@G@@GD,G--IL=^[&HD?G*)H95I-3HD=G*)^@)^@)[*H[*H@Q@@@@@@@@@$H9&^[HCDKE[ EK?^[=RI )@@G@@G(?G(4G*)I-*G*)IL(G)?^[-H1=^[!GD:G*)GD,^[>H14IL9^[(H0)I-*G*)H(-IT4G(2^[(RJ )@@G@@H1=G(8 0)E-*HD3^[3I--H1=GD2G))[*H[*H@Q@@@@@@@@@*G1(H->^[7HD?H))GD5I-\H(-RK )@@G@@I-(GT-H-?JC)GL>^[-ILG))I-\^[4GD0G*)GD4^[!H9,I-*^[>H1= 0)^@)^@)^@)RL )@@G@@^@)^@)^@)^@)^@)^@)^@)^@)[*H[*H@Q@@@@@@@@@(^@)^@)^@)^@)^@)^@)^@)^@)^@)^@)RM )@@G@@^@)^@)^@)^@)^@)^@)^@)^@)^@)^@)^@)^@)^@)^@)^@)^@)^@)^@)^@)^@)^@)^@)^@)^@)RN )@@G@@^@)^@)^@)^@)^@)^@)[*H[*H@Q@@@@@@@@@%CC)H(-J[(H(5H*)H9&^@3A@)IL(G-3^[^[4H8)H-(H((I))I-*G*)GT\H(0I(4G(2^[2RP )@@G@@G(3H95IL^[2HD=IS)I-*GD4^[9H95^[*GD6G*)^@)^@)^@)SQ )@@G@@[*H[*H@Q@@@@@@@@@9GD2GT*HD6G(= 0)E-*HD3^[?HD3I))I9(H-?^[SR )@@G@@^[&H9?H-\I9(H1$^[(H1&H92H(-I-(H9,BK)^@)^@)^@)^@)^@)^@)^@)^@)^@)^@)[*H[*HSS )@@G@@@Q@@@@@@@@@'^@)^@)^@)^@)^@)^@)^@)^@)^@)^@)^@)^@)^@)^@)^@)^@)^@)^@)^@)^@)ST )@@G@@^@)^@)^@)^@)^@)^@)^@)^@)^@)^@)^@)^@)^@)^@)^@)^@)^@)^@)^@)^@)[*H[*H@Q@@@@SU )@@G@@@@@@@; LHD9^C*,E-TE[ 1MDD^^@,^[^CDOC*) 0)^@)^@)^@)C- ET#ELDE[ODDJD0)^@)SV )@@G@@^@)^@)^@)^@)^@)^@)^@)^@)^@)^@,F@,^@)^@)^@)^@)^@)^@)^@)[*H[*H@Q@@@@@@@@@/SW )@@G@@ K.B*.B*,B*.B*. 0.B*.B*,B*.B*.B*. 0.B*.B*.B*.B*.B*.B*.B*.B*.B*.B*.B*.B*.SX )@@G@@B*.B*.B*.B*.B*.B*.B*.B*,B*,^@)^@)^@)^@)^@)^@)^@)[*H[*H@Q@@@@@@@@@.^@)^@)SY )@@G@@^@)^@)^@)^@)^@)^@)^@)^@)^@)^@)^@)^@)^@)^@)^@)^@)^@)^@)^@)^@)^@)^@)^@)^@)SZ )@@G@@^@)^@)^@)^@)^@)^@)^@)^@)^@)^@)^@)^@)^@)^@)[*H[*H@Q@@@@@@@@@"E-*G*)H(\G->TA )@@G@@ ))I-9I[> ))IL(G)?^[-H1=^[=GD4G*)GD2GT*HD6G(=^[3H[\I(?G))D1JE))GL>^[^@)^@)[*H[*H@Q@@@@@@@@@_I-*G*)G->ITH1>IL(GS)G->ITIL>G))GD4^[-IL^[(IS)HD,IT5G1&HDH14 0)E-*G*)GDG))I-\^[2G(1I(>IT4^[2TF )@@G@@HD=IS)I-\^[+G*)^@)^@)^@)[*H[*H@Q@@@@@@@@[[G->H->I->G))H92^[2G(?H9-G->G))TG )@@G@@G12H9!^[-IL 0)^@)^@)^@)^@)^@)^@)^@)^@)^@)^@)^@)^@)^@)^@)^@)^@)^@)TH )@@G@@^@)^@)^@)^@)^@)^@)[*H[*H@Q@@@@@@@@[]^@)^@)^@)^@)^@)^@)^@)^@)^@)^@)^@)^@)TI )@@G@@^@)^@)^@)^@)^@)^@)^@)^@)^@)^@)^@)^@)^@)^@)^@)^@)^@)^@)^@)^@)^@)^@)^@)^@)TJ )@@G@@^@)^@)^@)^@)[*H[*H@Q@@@@@@@@[#E-\^[=G(?G(4G*)IL(G-3^[&IL\H*)GD2GT*HD6G*)TK )@@G@@JD\I*)I9(H-?^[>H14G(2^[-^[^^[(H0)I-*G*)F@)GT\H-5H(,^[&H92^[>GDH->I->^[4H[>H0)G(8G(J[4^[&I(,TM )@@G@@GT4HD\H0'^[^G(?G(4G*)GD2GT*HD6G(=^[MDD^IS,^[OH8)IL>H-\GD=^[2HD=IS)G12H9!TN )@@G@@[*H[*H@Q@@@@@@@@[ GD2GT*HD6G*)GL-GT:^[4H8)D([E[KC(M ))JD\I*)I9(H-?^[>H14TO )@@G@@G(2^[-H0)D))HD,^[4H[>^[S^[H-\GD= 0)^@)^@)^@)^@)^@)^@)^@)^@)^@)^@)^@)^@)^@)^@)^@)^@)TQ )@@G@@^@)^@)^@)^@)^@)^@)^@)^@)^@)^@)^@)^@)^@)^@)^@)^@)^@)^@)^@)^@)[*H[*H@Q@@@@TR )@@G@@@@@@[B^@)^@)^@)^@)^@)^@)^@)^@)^@)^@)^@)^@)^@)^@)^@)^@)^@)^@)^@)^@)^@)^@)TS )@@G@@^@)^@)^@)^@)^@)^@)^@)^@)^@)^@)^@)^@)^@)^@)^@)^@)^@)^@)[*H[*H@Q@@@@@@@@[CTT )@@G@@CD&I->IK)G(,I->IL(H1$^[9H95IK)GT*GD,G9>IS?^[4IL-H13H((I))I-\^[5I[=GD4G*)TU )@@G@@I-*G*)IL>IT5H-4 ))I-*G(,^[0IL>IT3^[AAC)^@)^@)^@)[*H[*H@Q@@@@@@@@[D [&I(,TV )@@G@@GT4HD\H0!AC(^[4H8)I(0G--I->^[4H[>^[!GD3I->IK)HD,G->J@)GD,G))IL>I-5IL,^[4TW )@@G@@H8)I-*G*)H(>H15 0)^@)^@)^@)^@)^@)^@)^@)^@)[*H[*H@Q@@@@@@@@[E^@)^@)^@)^@)TX )@@G@@^@)^@)^@)^@)^@)^@)^@)^@)^@)^@)^@)^@)^@)^@)^@)^@)^@)^@)^@)^@)^@)^@)^@)^@)TY )@@G@@^@)^@)^@)^@)^@)^@)^@)^@)^@)^@)^@)^@)[*H[*H@Q@@@@@@@@[F^@)^@)^@)^@)^@)^@)TZ )@@G@@^@)^@)^@)^@)^@)^@)^@)^@)^@)^@)^@)^@)^@)^@)^@)^@)^@)^@)^@)^@)^@)^@)^@)^@)UA )@@G@@^@)^@)^@)^@)^@)^@)^@)^@)^@)^@)[*H[*H@Q@@@@@@@@[GAS,^[^G(?G(4G*)GD2GT*HD6UB )@@G@@G(=^[MDD^IS)^@)^@)^@)^@)^@)^@)^@)^@)^@)^@)^@)^@)^@)^@)^@)^@)^@)^@)^@)^@)UC )@@G@@^@)^@)^@)^@)^@)^@)^@)^@)[*H[*H@Q@@@@@@@@[HB*.B*.B*.B*.B*.B*.B*.B*.B*.B*.UD )@@G@@B*.B*)^@)^@)^@)^@)^@)^@)^@)^@)^@)^@)^@)^@)^@)^@)^@)^@)^@)^@)^@)^@)^@)^@)UE )@@G@@^@)^@)^@)^@)^@)^@)[*H[*H@Q@@@@@@@@[I^@)^@)^@)^@)^@)^@)^@)^@)^@)^@)^@)^@)UF )@@G@@^@)^@)^@)^@)^@)^@)^@)^@)^@)^@)^@)^@)^@)^@)^@)^@)^@)^@)^@)^@)^@)^@)^@)^@)UG )@@G@@^@)^@)^@)^@)[*H[*H@Q@@@@@@@@[JE-*HD3^[&I(,GT4HD\H0)GD?H-\I93^[9H95^[4H8)UH )@@G@@G->H->I->^[2HD=IS)I-*GD4^[*GD6G*)GL>G(,^[0IL>I1(H95IT?JC)GD2GT*HD6G(= 0)UI )@@G@@^@)^@)[*H[*H@Q@@@@@@@@[KE9*G(,^[-ILG))IL(G-3^[-IL>^[,H8)H-\H1$G(2UJ )@@G@@^[,G(>G->G))I[?G(-IT>^[=G(?G(4G*)I-*G(!^[&IL\H*)I--I[> 0)^@)^@)^@)^@)^@)UK )@@G@@[*H[*H@Q@@@@@@@@[L^@)^@)^@)^@)^@)^@)^@)^@)^@)^@)^@)^@)^@)^@)^@)^@)^@)^@)UL )@@G@@^@)^@)^@)^@)^@)^@)^@)^@)^@)^@)^@)^@)^@)^@)^@)^@)^@)^@)^@)^@)^@)^@)[*H[*HUM )@@G@@@Q@@@@@@@@[ME-\^[=G(?G(4G*)GD2GT*HD6G(=^[2HD=IS?^[5I[=GD4G*)I-*G*)G-(IT0UN )@@G@@H--JC\I(0G--I->^[?HD3I))GL9^[0H--GT(H1$^[-^[^^[(H0)^@)^@)^@)[*H[*H@Q@@@@UO )@@G@@@@@@[NI-*G*)F@)GT\H-5H(,^[&H92^[>GDI-5IL,^[4H8)I-*G*)H(>H15^[-H1=^[4IL-H13H((I))G12H9!^[4H[>^[^G(?G(4G*)UR )@@G@@GD2GT*HD6G(=^[MDD^IS)HD4G(! 0)^@)^@)^@)^@)^@)^@)[*H[*H@Q@@@@@@@@[P^@)^@)US )@@G@@^@)^@)^@)^@)^@)^@)^@)^@)^@)^@)^@)^@)^@)^@)^@)^@)^@)^@)^@)^@)^@)^@)^@)^@)UT )@@G@@^@)^@)^@)^@)^@)^@)^@)^@)^@)^@)^@)^@)^@)^@)[*H[*H@Q@@@@@@@@[QC1\IK)IL(G-3UU )@@G@@^[4H[-I))GD2G*)H9,^[4GD0G*?^[4H[(IS)G->H->I-(H9,^[7HD?H))I--HT>^[0H--GT>UV )@@G@@^[AIL(G--JC)G(6G(,HD,G8,^[AH92^@)^@)[*H[*H@Q@@@@@@@@[RIL(G-3^[4H[-I))H(-UW )@@G@@JC)IT4HD?H))GL>^[\H0)G-(IT:^[-IS)I-*G(9^[7G(2G*)HL5IT4^[-ILG)?^[4UX )@@G@@H[>^[=G(?G(4HD\H0)I9(H-?^@)^@)[*H[*H@Q@@@@@@@@[SI--HT>^[0H--GT>^[(H(!G(=UY )@@G@@HD-I->H-9 0)^@)^@)^@)^@)^@)^@)^@)^@)^@)^@)^@)^@)^@)^@)^@)^@)^@)^@)^@)^@)UZ )@@G@@^@)^@)^@)^@)^@)^@)^@)^@)[*H[*H@Q@@@@@@@@[T^@)^@)^@)^@)^@)^@)^@)^@)^@)^@)VA )@@G@@^@)^@)^@)^@)^@)^@)^@)^@)^@)^@)^@)^@)^@)^@)^@)^@)^@)^@)^@)^@)^@)^@)^@)^@)VB )@@G@@^@)^@)^@)^@)^@)^@)[*H[*H@Q@@@@@@@@[UET*H95H-=^[9H95^[-GTH->I->^[-^[2HD=^[+JC)H((IT4GD:G*?^[^[G*)HD&^[(I))HD3^[0H93IT(GL?G*)I-\^[5H1=VE )@@G@@H8)I-*G*)G->H->I-(H9, 0)^@)^@)^@)^@)^@)^@)^@)^@)^@)^@)^@)^@)^@)^@)^@)^@)VF )@@G@@^@)^@)[*H[*H@Q@@@@@@@@[W^@)^@)^@)^@)^@)^@)^@)^@)^@)^@)^@)^@)^@)^@)^@)^@)VG )@@G@@^@)^@)^@)^@)^@)^@)^@)^@)^@)^@)^@)^@)^@)^@)^@)^@)^@)^@)^@)^@)^@)^@)^@)^@)VH )@@G@@[*H[*H@Q@@@@@@@@[X^@)^@)^@)^@)^@)^@)^@)^@)^@)^@)^@)^@)^@)^@)^@)^@)^@)^@)VI )@@G@@^@)^@)^@)^@)^@)^@)^@)^@)^@)^@)^@)^@)^@)^@)^@)^@)^@)^@)^@)^@)^@)^@)[*H[*HVJ )@@G@@@Q@@@@@@@@[Y^@)^@)^@)^@)^@)^@)^@)^@)^@)^@)^@)^@)^@)^@)^@)^@)^@)^@)^@)^@)VK )@@G@@^@)^@)^@)^@)^@)^@)^@)^@)^@)^@)^@)^@)^@)^@)^@)^@)^@)^@)^@)^@)[*H[*H@Q@@@@VL )@@G@@@@@@[Z^@)^@)^@)^@)^@)^@)^@)^@)^@)^@)^@)^@)^@)^@)^@)^@)^@)^@)^@)^@)^@)^@)VM )@@G@@^@)^@)^@)^@)^@)^@)^@)^@)^@)^@)^@)^@)^@)^@)^@)^@)^@)^@)[*H[*H@Q@@@@@@@@[)VN )@@G@@^@)^@)^@)^@)^@)^@)^@)^@)^@)^@)^@)^@)^@)^@)^@)^@)^@)^@)^@)^@)^@)^@)^@)^@)VO )@@G@@^@)^@)^@)^@)^@)^@)^@)^@)^@)^@)^@)^@)^@)^@)^@)^@)[*H[*H@Q@@@@@@@@[-^@)^@)VP )@@G@@^@)^@)^@)^@)^@)^@)^@)^@)^@)^@)^@)^@)^@)^@)^@)^@)^@)^@)^@)^@)^@)^@)^@)^@)VQ )@@G@@^@)^@)^@)^@)^@)^@)^@)^@)^@)^@)^@)^@)^@)^@)[*H[*H@Q@@@@@@@@[+^@)^@)^@)^@)VR )@@G@@^@)^@)^@)^@)^@)^@)^@)^@)^@)^@)^@)^@)^@)^@)^@)^@)^@)^@)^@)^@)^@)^@)^@)^@)VS )@@G@@^@)^@)^@)^@)^@)^@)^@)^@)^@)^@)^@)^@)[*H[*H@Q@@@@@@@@[^@)^@)^@)^@)^@)^@)^@)^@)^@)^@)VX )@@G@@^@)^@)^@)^@)^@)^@)^@)^@)^@)^@)^@)^@)^@)^@)^@)^@)^@)^@)^@)^@)^@)^@)^@)^@)VY )@@G@@^@)^@)^@)^@)^@)^@)[*H[*H@Q@@@@@@@@[&E-*HD3^[&I(,GT4HD\H0)GD?H-\I93^[9H95VZ )@@G@@^[4H8)IL>H-\GD=^[2HD=IS)I-*GD4^[*GD6G*)GL>G(,^[0IL>I1(H95IT?JC)GD2GT*HD6WA )@@G@@G(= 0)^@)^@)[*H[*H@Q@@@@@@@@[$CD,JC)IL(G-3^[4H[-I))GD2G*)IL>H-\GD=G(=^[7WB )@@G@@HD?H))IT4HD?H))IL>H(-HD,^[-ILG)?^[4H[>JC)G-\^[,H94^[,G(>G))^@)^@)WC )@@G@@^@)^@)[*H[*H@Q@@@@@@@@[*I-\^[+G*)GD2GT*HD6G(=^[-G9-HD, 0)^@)^@)^@)^@)^@)WD )@@G@@^@)^@)^@)^@)^@)^@)^@)^@)^@)^@)^@)^@)^@)^@)^@)^@)^@)^@)^@)^@)^@)^@)^@)^@)WE )@@G@@[*H[*H@Q@@@@@@@@[(^@)^@)^@)^@)^@)^@)^@)^@)^@)^@)^@)^@)^@)^@)^@)^@)^@)^@)WF )@@G@@^@)^@)^@)^@)^@)^@)^@)^@)^@)^@)^@)^@)^@)^@)^@)^@)^@)^@)^@)^@)^@)^@)[*H[*HWG )@@G@@@Q@@@@@@@@[%E-\^[2G(?H9-G))GD2GT*HD6G(=^[2HD=IS?^[5I[=GD4G*)I-*G*)G-(IT0WH )@@G@@H--JC\I(0G--I->^[?HD3I))GL9^[0H--GT(H1$^[-H0)D))HD,^@)^@)^@)[*H[*H@Q@@@@WI )@@G@@@@@@[:I-*G*)F@)GT\H-5H(,^[&H92^[>GDI-5IL,^[4H8)I-*G*)H(>H15^[-H1=^[4H[>H0)I-2GD,IT!HD4^[&IL\H*)I-*G*)EL>WL )@@G@@H-\GD=^[-ILG))ELDC-3^[(I->H*,^@)^@)^@)^@)[*H[*H@Q@@@@@@@@[!^@)^@)WM )@@G@@^@)^@)^@)^@)^@)^@)^@)^@)^@)^@)^@)^@)^@)^@)^@)^@)^@)^@)^@)^@)^@)^@)^@)^@)WN )@@G@@^@)^@)^@)^@)^@)^@)^@)^@)^@)^@)^@)^@)^@)^@)[*H[*H@Q@@@@@@@@[,E-*G*)IL>H-\WO )@@G@@GD=^[0IL\GT>IT3^[7HD?H))IT4GD2I))GC)GL-I-IS)WP )@@G@@I-*G*)GT\H(0I(4G(2^[\I[>IL-I-\IK)^@)[*H[*H@Q@@@@@@@@[\I-\^[!H95H14^[4H[>WQ )@@G@@^[4GD0G*)I-*GD4^[H->GT4G(=^[2HD= [3 C,^[JH1WR )@@G@@H-\GD=G(=^[4H8)G-(IT: ))^@)^@)[*H[*H@Q@@@@@@@@[0GD,H94H[>IK)D([E[KC(M^[2WS )@@G@@I(,^[7HD?H))IT4GD2I))I-\^[2G(4IL(G(6G*)G(-GT*^[2HD=^[(H14H8)D([E[KC(M 0)WT )@@G@@E-*HD3^[0IL\GT>IT3^@)^@)[*H[*H@Q@@@@@@@@[1H(-JC)I--HT>^[5I@)I-\^@1A*)H((WU )@@G@@H15I->IS)H92^[3H8,^@)^@)^@)^@)^@)^@)^@)^@)^@)^@)^@)^@)^@)^@)^@)^@)^@)^@)WV )@@G@@^@)^@)^@)^@)^@)^@)[*H[*H@Q@@@@@@@@[2^@)^@)^@)^@)^@)^@)^@)^@)^@)^@)^@)^@)WW )@@G@@^@)^@)^@)^@)^@)^@)^@)^@)^@)^@)^@)^@)^@)^@)^@)^@)^@)^@)^@)^@)^@)^@)^@)^@)WX )@@G@@^@)^@)^@)^@)[*H[*H@Q@@@@@@@@[3E9*G(,^[4H[>^[2HD=IS)GD2G*)IL>H-\GD=G(= ))WY )@@G@@I-*G(9^[7HD?H))GL>^[0H--GT>G))HD,I-\^[4H[>^[,G(8I))GD6GD(H--GL?G*)IL(G))WZ )@@G@@^@)^@)[*H[*H@Q@@@@@@@@[4H15H(+G(2^[(H0)I-*G*)G1\IL!^[4JD0G*,^[OH[>JC)I9(XA )@@G@@H-?^[,H94^[+G*)I[?GDIK,^@)XB )@@G@@[*H[*H@Q@@@@@@@@[5E9*G(,^[4H[>^[0IL\GT>IT3^[(IS)GT\H(0H->I-> ))GC)H(>IT3XC )@@G@@GD$G*)I9(H-?^[+G*)IT>H14^[4H8)JD\I(2^[4G(2H((H1-H))I->H-?HD,G8)^@)[*H[*HXD )@@G@@@Q@@@@@@@@[6JD\I*)I9*G(2G*)G(-GT*^[2G(?H9-G->G))IL(G))H[-IS)GL>G(,^[0H--XE )@@G@@GT>G),^@)^@)^@)^@)^@)^@)^@)^@)^@)^@)^@)^@)^@)^@)^@)^@)^@)^@)[*H[*H@Q@@@@XF )@@G@@@@@@[7^@)^@)^@)^@)^@)^@)^@)^@)^@)^@)^@)^@)^@)^@)^@)^@)^@)^@)^@)^@)^@)^@)XG )@@G@@^@)^@)^@)^@)^@)^@)^@)^@)^@)^@)^@)^@)^@)^@)^@)^@)^@)^@)[*H[*H@Q@@@@______XH )@@G@@^@)^@)^@)^@)^@)^@)^@)^@)^@)^@)^@, 0, 0,^[ D1^^[MC(KD9ME)) 0, 0, 0)^@)^@)XI )@@G@@^@)^@)^@)^@)^@)^@)^@)^@)^@)^@)^@)^@)^@)^@)^@)^@)[*H[*H_@@@@@^[+JC)I-*G*)XJ )@@G@@GD2GT*HD6GD?^[2I(, 0)^@)^@)^@)^@)^@)^@)^@)^@)^@)^@)^@)^@)^@)^@)^@)^@)^@)XK )@@G@@*[@@@[*SDFF*@ @@@@EL(G))CD2GT*HD6GD?^[NJD3I->H*)@@@@@@@N@@@@E-*HD3^[3JD3XL )@@G@@I->H*)HD3^[5IT>G))HD,^[^[HGD,GD$G(2XM )@@G@@^[NJD3I->H*)I-\^[-IL^@)@O@@@@D([E[KC(M^[2HD=IS)I-\^[4GD0G*)I(3HD,XN )@@G@@G8)I-*G*)C1[ES)GD2GT*HD6GD?^[^[AHD?G*)D(-H1-G9>IK)XO )@@G@@IT9IT4G(!^@)@O@@@@H(5IT4^[+G*)I(3G(=^[(H0)H92G->IK)I-\^[5IT>^[4H[(IS)IL(XP )@@G@@G))GD2GT*HD6GD?^[3JD3I->H*,^[OH[(IS)IT9IT4G(!^[-H-?H97IS)I-*G*)^@)@N@@@@XQ )@@G@@I(3G(2^[4H8)IL>ID5G(3I))D([E[KC(M^[2G(0H92I-3^[+G*)GD2GT*HD6G(=^[4H8)I--XR )@@G@@I[> 0)E-*G*)I(3G(2^[H-\GD=@K@@@@I-*G(3G*)IL>I[\IL4IS)GL-XS )@@G@@GT:^[(H14H8)D([E[KC(M^[\IK)G->H->I->^[4H[>H*)G12H9!^[4H[>^[-IL 0)XT )@@G@@@@@@@@@A@@@@CT\H14G(,I-3^[\G0)I-*G*)G1(H->BK)^@)@@@@@@@J@@@@ETTD*)^@)E-TXU )@@G@@E[ *0A*2 9MDD^ *4AS*A@(^@)^@)^@,^[[ILG))IL(G))H(-IT4G(2^[2G(0H92XV )@@G@@I))^@)@G@@@@ETTD*)^@)E-TE[ *0A00 9MDD^ *1AC5 @0 C)^@)^@,^[MDD^CDMCTCDDQXW )@@G@@C*)IL5H0)^@)@G@@@@ETTD*)^@)E-TE[ *0A00 9MDD^ *1AC6 @0 C)^@)^@,^[MDD^CDMXX )@@G@@CTCEL E))IL5H0)^@)@M@@@@ETTD*)^@)E-TE[ *0A*4 9MDD^ *1A0*A@(^@)^@)^@,^[CXY )@@G@@G(?I@)HD,G1\^[&H92^[3JD3I->H*?^[5IT>G))HD,^[MDD^CDMCTCDDQC*)@@@@@@@C@@@@XZ )@@G@@E-*HD3^[3JD3I->H*)I9\IL:IS)GD3^[&H9?H-\I93BK)^@)@@@@@@@O@@@@AC,^[PIT>IK)YA )@@G@@IL5H13^[MDD^CDMCTCDDQC*)I-\^[3G(?G(I[\IL4IS)I-\^[+G*)GD2GT*HD6G(=YB )@@G@@ 0)CC)G1(H->^[(IS)GT2G(-I->G))G1\IK)@N@@@@^@)^[>GDIK)GD,G))I(,HD1I(>^[&HD?G(,GD!G*,^[HGD3I->IK)IL(G))HD3YD )@@G@@^[5I[=GD4G(=@O@@@@^@)^[7HD4H@)HD,G1\^[-GL\I(4^[2HD= 0)E-*G*)G1(H->^[!GD,YE )@@G@@GD$G(2^[2G(0H92I))G1\IK)I-*G*)I(3G(2^[2G(3I[\H13HD+H->^[&H92^[4H[>@O@@@@YF )@@G@@^@)^[HCDKE[ EK)ID5GD?HD&HD>IK)HD3^[5I[=GD4G(=^[7HD4H@)G1(H->^[GD4G(=YG )@@G@@^[-H-\H1$^[7HD4H@)I-*G*)CC)G1?GD$^[(H0)GDH0)CDMCTCDDQC*)IL5H0)HD3^[3GT*G(=YI )@@G@@I(?G(= 0)^@)@O@@@@AK,^[PIT>IK)GT-H0)G-(IT0H--JC)H(-IT4G(2^[2HD=^[(H1&H8)YJ )@@G@@G1\IK)I-*G((IK)IL(G-3 0)E-*G(9^[I[\IL4^[4H8)GL>^@)@N@@@@YK )@@G@@^@)^[=G(?G(4G(=^[\IK)IL>H-\GD=G(= 0)DD&^[2G(?H9-G))HD3^[2G(1I(>IT4G(= ))YL )@@G@@GL-I-H0)ELDC-[EL#D[MC(O^[%H9+^[(IS)IT4GD2I->G))I-\^[2G(4IL(G(6G*)G1(H->YN )@@G@@^[+GDH->I->^[(IS)IL>ID5G(3I->YO )@@G@@G)?^[4H[>^[-ILG))G1(H->^[?HD3I))G1\IK)I-*G*)I(3G(2^[7HD4H@)@O@@@@YP )@@G@@^@)^[HCDKE[ EK)ID5GD?HD&HD>IK)HD3^[5I[=GD4G(=^[7HD4H@)C))HD,^[-GT4HD\H0)YQ )@@G@@GT\H-5H(,^[3H8)G1(H->^[7HD?H))GL>^[2G(!H96G(=^@)@G@@@@^@)^[&IL\H*)GD2GT*YR )@@G@@HD6G*)I9*G(,^[4H[>^[[EL#C- D- E- ^[2I(,^[(IS)IL5H0,^@)@@@@@@@A@@@@DD,IT4YS )@@G@@GD?H--I-(H9,^[0IL\GT>G-5IL>IS'@@@@@@@C@@@@AC,^[DH13I--H-?^[AHD?G*)D(-H1-YT )@@G@@G9>IK)IT9IT4G(! 0)@N@@@@AK,^[MG(4IL(G(6G*)D(-IT4G(2^[2HD=^@&^[*G(?I@)IL(YU )@@G@@G),^[KIL>G1>IL-GL?JC)I-\^[3GD!G*)H(\G->^[-IS)C1(H->^[HGD,GD$G(2 0)@M@@@@YV )@@G@@AS,^[MG(4IL(G(6G*)^0)IL>G9(IT4G(2^[4H[>^[4I9\^[2I(,IS,^[HGD:G*)I-*G*)G1\YW )@@G@@H-?H97HD,G8)H(\G-(G1(GT-I-(H9,IS'^@)@B@@@@^@)^@!^[#H[-H1$G*)HT>JD3^[4H8)YX )@@G@@C-GD9#^))^@)@J@@@@^@)^@!^[#H[-H1$G*)GDGT4YY )@@G@@ ((G))H9&^[+GD4GT*^[2I(,^[YZ )@@G@@IS)G1\IK)H(\G->^@&^[&H92H*)I-9I[>IS)H9&^[&HD?G*)H(-H1-G9>IK?^[!GD3I->IK)ZA )@@G@@^0)H[>H-0^[2HD=IS)@M@@@@^@)^@!^[#H[-H1$G*)D([E[KC(M^[&HD?G*)ID5GD?HD&HD>ZB )@@G@@IK)G1\IK)GD2GT*HD6G(=^[&HD?G(3^[4H8)G->IT(IL>G))I1-H-5G(3^@)@I@@@@^@)^@!ZC )@@G@@^[#H[-H1$G*)IT4GD4HD\H0)H15H(+G(2^[&H92^[3G(,G))H9&^[>IL2H92^[!G(3IT-G9>ZD )@@G@@IS)^@)@J@@@@^@)^@!^[#H[-H1$G*)I(3G(2HD=^@&^[=G(0I))G1\IK)GL-I-@@@@@W@@WBE )@@G@@@@@@N)@@@@@@@@@@@@[ICPOLL[ 159[PLANNING [SUSAN [RUN* [08:4BF )@@G@@0:38[ 0.465[K00700[ 27[ 377[ 77[ 8[ 2[ 0[ BG )@@G@@0.000[]]]]]]@@JW$Y@N&@@@@@W@@W@@@@N-@@@@@@@@@@@@[ICPOLL[ 159[PLANNING BH )@@G@@[SUSAN [RUN* [08:40:42[ 0.050[K00700[ 27[ 2[ BI )@@G@@ 1[ 1[ 0[ 0[ 0.000[]]]]]]@@JW$Y@N$@@@@@W@@W@@@@N>@@@@@@BJ )@@G@@@@@@@@[ICPOLL[ 159[PLANNING [SUSAN [RUN* [08:40:52[ BK )@@G@@5.361[K00700[ 27[ 1823[ 1626[ 87[ 47[ 0[ 0.000[]]]]]]BL )@@G@@@@JW$Y@N:@@@@@W@@W@@@@N&@@@@@@@@@@@@[ICPOLL[ 159[PLANNING [SUSAN BM )@@G@@[RUN* [08:40:56[ 0.022[K00700[ 27[ 3[ 1[ 1[BN )@@G@@ 0[ 0[ 0.000[]]]]]]@@JW$Y@N?@@@@@W@@W@@@@N$@@@@@@@@@@@@[ICPOLBO )@@G@@L[ 159[PLANNING [SUSAN [RUN* [08:40:58[ 0.673[K00700BP )@@G@@[ 27[ 213[ 73[ 7[ 2[ 0[ 0.000[]]]]]]@@JW$Y@N!@@@BQ )@@G@@@@W@@W@@@@N%@@@@@@@@@@@@[ICPOLL[ 159[PLANNING [SUSAN [RUN* BR )@@G@@ [08:41:03[ 0.051[K00700[ 27[ 3[ 1[ 1[ 0[ 0[ BS )@@G@@ 0.000[]]]]]]@@JW$Y@N0@@@@@W@@W@@@@N?@@@@@@@@@@@@[ICPOLL[ 159[PLANNBT )@@G@@ING [SUSAN [RUN* [08:41:05[ 1.453[K00700[ 27[ 7BU )@@G@@16[ 97[ 20[ 3[ 0[ 0.000[]]]]]]@@JW$Y@N2@@@@@W@@W@@@@N!BV )@@G@@@@@@@@@@@@@@[ICPOLL[ 159[PLANNING [SUSAN [RUN* [08:41:15[ BW )@@G@@ 0.035[K00700[ 27[ 1[ 1[ 1[ 0[ 0[ 0.000[BX )@@G@@]]]]]]@@JW$Y@N3@@@@@W@@W@@@@N\@@@@@@@@@@@@[ICPOLL[ 159[PLANNING [SUSANBY )@@G@@ [RUN* [08:41:21[ 4.651[K00700[ 27[ 1986[ 1956[BZ )@@G@@ 31[ 29[ 0[ 0.000[]]]]]]@@JW$Y@N5@@@@@W@@W@@@@N1@@@@@@@@@@@@CA )@@G@@[ICPOLL[ 159[PLANNING [SUSAN [RUN* [08:41:25[ 0.223[CB )@@G@@K00700[ 27[ 230[ 22[ 6[ 0[ 0[ 0.000[]]]]]]@@JW$YCC )@@G@@@N7@@@@@W@@W@@@@N3@@@@@@@@@@@@[ICPOLL[ 159[PLANNING [SUSAN [RUN* CD )@@G@@ [08:41:28[ 0.400[K00700[ 27[ 299[ 57[ 7[ 3[CE )@@G@@ 0[ 0.000[]]]]]]@@JW$Y@N9@@@@@W@@W@@@@N4@@@@@@@@@@@@[ICPOLL[ 159CF )@@G@@[PLANNING [SUSAN [RUN* [08:41:30[ 0.286[K00700[ 27[CG )@@G@@ 97[ 97[ 2[ 3[ 0[ 0.000[]]]]]]@@JW$Y@N'@@@@@W@@WCH )@@G@@@@@@N5@@@@@@@@@@@@[ICPOLL[ 159[PLANNING [SUSAN [RUN* [08:4CI )@@G@@1:33[ 0.050[K00700[ 27[ 3[ 1[ 1[ 0[ 0[ CJ )@@G@@0.000[]]]]]]@@JW$Y@N;@@@@@W@@W@@@@N6@@@@@@@@@@@@[ICPOLL[ 159[PLANNING CK )@@G@@[SUSAN [RUN* [08:41:34[ 0.521[K00700[ 27[ 305[ CL )@@G@@ 77[ 7[ 2[ 0[ 0.000[]]]]]]@@JW$Y@N/@@@@@W@@W@@@@N8@@@@@@CM )@@G@@@@@@@@[ICPOLL[ 159[PLANNING [SUSAN [RUN* [08:41:43[ CN )@@G@@0.081[K00700[ 27[ 2[ 1[ 1[ 0[ 0[ 0.000[]]]]]]CO )@@G@@@@JW$Y@N"@@@@@W@@W@@@@N'@@@@@@@@@@@@[ICPOLL[ 159[PLANNING [SUSAN CP )@@G@@[RUN* [08:41:54[ 5.789[K00700[ 27[ 1478[ 1271[ 86[CQ )@@G@@ 52[ 0[ 0.000[]]]]]]@@JW$Y@O@@@@@@W@@W@@@@N;@@@@@@@@@@@@[ICPOLCR )@@G@@L[ 159[PLANNING [SUSAN [RUN* [08:41:58[ 0.028[K00700CS )@@G@@[ 27[ 3[ 1[ 1[ 0[ 0[ 0.000[]]]]]]@@JW$Y@O[@@@CT )@@G@@@@W@@W@@@@N/@@@@@@@@@@@@[ICPOLL[ 159[PLANNING [SUSAN [RUN* CU )@@G@@ [08:41:59[ 0.376[K00700[ 27[ 290[ 77[ 6[ 2[ 0[ CV )@@G@@ 0.000[]]]]]]@@JW$Y@O]@@@@@W@@W@@@@N"@@@@@@@@@@@@[ICPOLL[ 159[PLANNCW )@@G@@ING [SUSAN [RUN* [08:42:03[ 0.037[K00700[ 27[ CX )@@G@@ 2[ 1[ 1[ 0[ 0[ 0.000[]]]]]]@@JW$Y@O^@@@@@W@@W@@@@O@CY )@@G@@@@@@@@@@@@@@[ICPOLL[ 159[PLANNING [SUSAN [RUN* [08:42:14[ CZ )@@G@@ 5.592[K00700[ 27[ 1457[ 1261[ 79[ 42[ 0[ 0.000[DA )@@G@@]]]]]]@@JW$Y@OA@@@@@W@@W@@@@O[@@@@@@@@@@@@[ICPOLL[ 159[PLANNING [SUSANDB )@@G@@ [RUN* [08:42:27[ 0.057[K00700[ 27[ 3[ 1[DC )@@G@@ 1[ 0[ 0[ 0.000[]]]]]]@@JW$Y@OB@@@@@W@@W@@@@O]@@@@@@@@@@@@DD )@@G@@[ICPOLL[ 159[PLANNING [SUSAN [RUN* [08:42:29[ 0.861[DE )@@G@@K00700[ 27[ 293[ 77[ 6[ 2[ 0[ 0.000[]]]]]]@@JW$YDF )@@G@@@OC@@@@@W@@W@@@@OB@@@@@@@@@@@@[ICPOLL[ 159[PLANNING [SUSAN [RUN* DG )@@G@@ [08:43:03[ 0.039[K00700[ 27[ 2[ 1[ 1[ 0[DH )@@G@@ 0[ 0.000[]]]]]]@@JW$Y@OH@@@@@W@@W@@@@OH@@@@@@@@@@@@[ICPOLL[ 159DI )@@G@@[PLANNING [SUSAN [RUN* [08:43:16[ 7.300[K00700[ 27[DJ )@@G@@ 1735[ 1524[ 88[ 51[ 0[ 0.000[]]]]]]@@JW$Y@ON@@@@@W@@WDK )@@G@@@@@@OI@@@@@@@@@@@@[ICPOLL[ 159[PLANNING [SUSAN [RUN* [08:4DL )@@G@@3:22[ 0.046[K00700[ 27[ 3[ 1[ 1[ 0[ 0[ DM )@@G@@0.000[]]]]]]@@JW$Y@OO@@@@@W@@W@@@@OJ@@@@@@@@@@@@[ICPOLL[ 159[PLANNING DN )@@G@@[SUSAN [RUN* [08:43:23[ 0.415[K00700[ 27[ 307[ DO )@@G@@ 61[ 8[ 3[ 0[ 0.000[]]]]]]@@JW$Y@OP@@@@@W@@W@@@@O)@@@@@@DP )@@G@@@@@@@@[ICPOLL[ 159[PLANNING [SUSAN [RUN* [08:43:58[ DQ )@@G@@0.068[K00700[ 27[ 2[ 1[ 2[ 0[ 0[ 0.000[]]]]]]DR )@@G@@@@JW$Y@O&@@@@@W@@W@@@@O$@@@@@@@@@@@@[ICPOLL[ 159[PLANNING [SUSAN DS )@@G@@[RUN* [08:46:01[ 0.045[K00700[ 27[ 3[ 1[ 1[DT )@@G@@ 0[ 0[ 0.000[]]]]]]@@JW$Y@O!@@@@@W@@W@@@@O(@@@@@@@@@@@@[ICPOLDU )@@G@@L[ 159[PLANNING [SUSAN [RUN* [08:46:02[ 0.649[K00700DV )@@G@@[ 27[ 213[ 73[ 7[ 2[ 0[ 0.000[]]]]]]@@JW$Y@O\@@@DW )@@G@@@@W@@W@@@@O%@@@@@@@@@@@@[ICPOLL[ 159[PLANNING [SUSAN [RUN* DX )@@G@@ [08:46:07[ 0.034[K00700[ 27[ 3[ 1[ 1[ 0[ 0[ DY )@@G@@ 0.000[]]]]]]@@JW$Y@O0@@@@@W@@W@@@@O:@@@@@@@@@@@@[ICPOLL[ 159[PLANNDZ )@@G@@ING [SUSAN [RUN* [08:46:09[ 1.270[K00700[ 27[ 4EA )@@G@@60[ 97[ 14[ 3[ 0[ 0.000[]]]]]]@@JW$Y@O1@@@@@W@@W@@@@O\EB )@@G@@@@@@@@@@@@@@[ICPOLL[ 159[PLANNING [SUSAN [RUN* [08:46:18[ EC )@@G@@ 0.043[K00700[ 27[ 1[ 1[ 1[ 0[ 0[ 0.000[ED )@@G@@]]]]]]@@JW$Y@O5@@@@@W@@W@@@@O2@@@@@@@@@@@@[ICPOLL[ 159[PLANNING [SUSANEE )@@G@@ [RUN* [08:46:25[ 5.798[K00700[ 27[ 1989[ 1959[EF )@@G@@ 31[ 29[ 0[ 0.000[]]]]]]@@JW$Y@O8@@@@@W@@W@@@@O3@@@@@@@@@@@@EG )@@G@@[ICPOLL[ 159[PLANNING [SUSAN [RUN* [08:46:29[ 0.323[EH )@@G@@K00700[ 27[ 229[ 15[ 6[ 0[ 0[ 0.000[]]]]]]@@JW$YEI )@@G@@@O9@@@@@W@@W@@@@O5@@@@@@@@@@@@[ICPOLL[ 159[PLANNING [SUSAN [RUN* EJ )@@G@@ [08:46:32[ 0.367[K00700[ 27[ 372[ 20[ 9[ 0[EK )@@G@@ 0[ 0.000[]]]]]]@@JW$Y@O;@@@@@W@@W@@@@O7@@@@@@@@@@@@[ICPOLL[ 159EL )@@G@@[PLANNING [SUSAN [RUN* [08:46:34[ 0.350[K00700[ 27[EM )@@^@@ 97[ 97[ 2[ EN @EOF @COPY,IO TEMP.1074-002-002,1074-002-002. @FREE TEMP.