File Edit Confirm Menu Utilities Compilers Test Help
-------------------------------------------------------------------------------
EDIT JCONN.ASM(CRC32) - 01.01 Columns 00001 00072
Command ===> Scroll ===> CSR
****** ***************************** Top of Data ******************************
000001 *+-------------------------------------------------------------------+*
000002 *| |*
000003 *| THIS ROUTINE CALCULATES A 32-BIT CYCLIC REDUNDANCY CHECK |*
000004 *| VALUE FOR THE SUPPLIED INPUT DATA. |*
000005 *| |*
000006 *| THIS CODE BASED UPON DOCUMENTATION AND ALGORITHMS PROVIDED BY |*
000007 *| BY DR. ROSS N. WILLIAMS IN THE DOCUMENT "A PAINLESS GUIDE TO |*
000008 *| CRC ERROR DETECTION ALGORITHMS." THIS DOCUMENT MAY BE DOWNLOADED |*
000009 *| FROM http://www.naaccr.org/standard/crc32/document.html |*
000010 *| |*
000011 *| CALLING PARMS |*
000012 *| 0(,R1) ADDRESS OF DATA TO BE CRC'D |*
000013 *| 4(,R1) LENGTH OF DATA TO BE CRC'D |*
000014 *| 8(,R1) INITIAL VALUE FOR CRC |*
000015 *| |*
000016 *| RETURN VALUE: |*
000017 *| R15: COMPUTED CRC VALUE |*
000018 *| |*
000019 *+-------------------------------------------------------------------+*
000020 CRC32 SAVE (14,12)
000021 *
000022 LR R12,R15 BASE REG
000023 USING CRC32,R12 TELL ASSEMBLER
000024 *
000025 LM R4,R5,0(R1) ADDRESS AND LENGTH
000026 L R6,=X'000000FF' FAST "AND" VALUE
000027 L R15,8(,R1) INITIAL VALUE
000028 *
000029 LOOP SLR R7,R7 CLEAR REG 7
000030 IC R7,0(,R4) PICK UP THE NEXT CHARACTER
000031 XR R7,R15 APPLY ACCUMULATED CRC
000032 NR R7,R6 CLEAR ALL BUT LOW ORDER BYTE
000033 SLL R7,2 VALUE TIMES 4 = TABLE OFFSET
000034 L R7,CRC32TAB(R7) PICK UP POLYNOMIAL VALUE
000035 SRL R15,8 SHIFT ACCUMULATION FOR NEW BYTE
000036 XR R15,R7 APPLY THE POLYNOMIAL
000037 LA R4,1(,R4) POINT TO NEXT INPUT BYTE
000038 BCT R5,LOOP PROCESS ALL INPUT BYTES
000039 *
000040 X R15,=X'FFFFFFFF' FINAL XOR
000041 RETURN (14,12),RC=(15)
000042 *+-------------------------------------------------------------------+*
000043 *| TABLE OF POLYNOMIAL VALUES USED TO CREATE A 32 BIT CRC |*
000044 *+-------------------------------------------------------------------+*
000045 DS 0F FORCE FULLWORD ALIGNMENT
000046 CRC32TAB DC X'00000000',X'77073096',X'EE0E612C',X'990951BA' 00-03
000047 DC X'076DC419',X'706AF48F',X'E963A535',X'9E6495A3' 04-07
000048 DC X'0EDB8832',X'79DCB8A4',X'E0D5E91E',X'97D2D988' 08-0B
000049 DC X'09B64C2B',X'7EB17CBD',X'E7B82D07',X'90BF1D91' 0C-0F
000050 DC X'1DB71064',X'6AB020F2',X'F3B97148',X'84BE41DE' 10-13
000051 DC X'1ADAD47D',X'6DDDE4EB',X'F4D4B551',X'83D385C7' 14-17
000052 DC X'136C9856',X'646BA8C0',X'FD62F97A',X'8A65C9EC' 18-1B
000053 DC X'14015C4F',X'63066CD9',X'FA0F3D63',X'8D080DF5' 1C-1F
000054 DC X'3B6E20C8',X'4C69105E',X'D56041E4',X'A2677172' 20-23
000055 DC X'3C03E4D1',X'4B04D447',X'D20D85FD',X'A50AB56B' 24-27
000056 DC X'35B5A8FA',X'42B2986C',X'DBBBC9D6',X'ACBCF940' 28-2B
000057 DC X'32D86CE3',X'45DF5C75',X'DCD60DCF',X'ABD13D59' 2C-2F
000058 DC X'26D930AC',X'51DE003A',X'C8D75180',X'BFD06116' 30-33
000059 DC X'21B4F4B5',X'56B3C423',X'CFBA9599',X'B8BDA50F' 34-37
000060 DC X'2802B89E',X'5F058808',X'C60CD9B2',X'B10BE924' 38-3B
000061 DC X'2F6F7C87',X'58684C11',X'C1611DAB',X'B6662D3D' 3C-3F
000062 DC X'76DC4190',X'01DB7106',X'98D220BC',X'EFD5102A' 40-43
000063 DC X'71B18589',X'06B6B51F',X'9FBFE4A5',X'E8B8D433' 44-47
000064 DC X'7807C9A2',X'0F00F934',X'9609A88E',X'E10E9818' 48-4B
000065 DC X'7F6A0DBB',X'086D3D2D',X'91646C97',X'E6635C01' 4C-4F
000066 DC X'6B6B51F4',X'1C6C6162',X'856530D8',X'F262004E' 50-53
000067 DC X'6C0695ED',X'1B01A57B',X'8208F4C1',X'F50FC457' 54-57
000068 DC X'65B0D9C6',X'12B7E950',X'8BBEB8EA',X'FCB9887C' 58-5B
000069 DC X'62DD1DDF',X'15DA2D49',X'8CD37CF3',X'FBD44C65' 5C-5F
000070 DC X'4DB26158',X'3AB551CE',X'A3BC0074',X'D4BB30E2' 60-63
000071 DC X'4ADFA541',X'3DD895D7',X'A4D1C46D',X'D3D6F4FB' 64-67
000072 DC X'4369E96A',X'346ED9FC',X'AD678846',X'DA60B8D0' 68-6B
000073 DC X'44042D73',X'33031DE5',X'AA0A4C5F',X'DD0D7CC9' 6C-6F
000074 DC X'5005713C',X'270241AA',X'BE0B1010',X'C90C2086' 70-73
000075 DC X'5768B525',X'206F85B3',X'B966D409',X'CE61E49F' 74-77
000076 DC X'5EDEF90E',X'29D9C998',X'B0D09822',X'C7D7A8B4' 78-7B
000077 DC X'59B33D17',X'2EB40D81',X'B7BD5C3B',X'C0BA6CAD' 7C-7F
000078 DC X'EDB88320',X'9ABFB3B6',X'03B6E20C',X'74B1D29A' 80-83
000079 DC X'EAD54739',X'9DD277AF',X'04DB2615',X'73DC1683' 84-87
000080 DC X'E3630B12',X'94643B84',X'0D6D6A3E',X'7A6A5AA8' 88-8B
000081 DC X'E40ECF0B',X'9309FF9D',X'0A00AE27',X'7D079EB1' 8C-8F
000082 DC X'F00F9344',X'8708A3D2',X'1E01F268',X'6906C2FE' 90-93
000083 DC X'F762575D',X'806567CB',X'196C3671',X'6E6B06E7' 94-97
000084 DC X'FED41B76',X'89D32BE0',X'10DA7A5A',X'67DD4ACC' 98-9B
000085 DC X'F9B9DF6F',X'8EBEEFF9',X'17B7BE43',X'60B08ED5' 9C-9F
000086 DC X'D6D6A3E8',X'A1D1937E',X'38D8C2C4',X'4FDFF252' A0-A3
000087 DC X'D1BB67F1',X'A6BC5767',X'3FB506DD',X'48B2364B' A4-A7
000088 DC X'D80D2BDA',X'AF0A1B4C',X'36034AF6',X'41047A60' A8-AB
000089 DC X'DF60EFC3',X'A867DF55',X'316E8EEF',X'4669BE79' AC-AF
000090 DC X'CB61B38C',X'BC66831A',X'256FD2A0',X'5268E236' B0-B3
000091 DC X'CC0C7795',X'BB0B4703',X'220216B9',X'5505262F' B4-B7
000092 DC X'C5BA3BBE',X'B2BD0B28',X'2BB45A92',X'5CB36A04' B8-BB
000093 DC X'C2D7FFA7',X'B5D0CF31',X'2CD99E8B',X'5BDEAE1D' BC-BF
000094 DC X'9B64C2B0',X'EC63F226',X'756AA39C',X'026D930A' C0-C3
000095 DC X'9C0906A9',X'EB0E363F',X'72076785',X'05005713' C4-C7
000096 DC X'95BF4A82',X'E2B87A14',X'7BB12BAE',X'0CB61B38' C8-CB
000097 DC X'92D28E9B',X'E5D5BE0D',X'7CDCEFB7',X'0BDBDF21' CC-CF
000098 DC X'86D3D2D4',X'F1D4E242',X'68DDB3F8',X'1FDA836E' D0-D3
000099 DC X'81BE16CD',X'F6B9265B',X'6FB077E1',X'18B74777' D4-D7
000100 DC X'88085AE6',X'FF0F6A70',X'66063BCA',X'11010B5C' D8-DB
000101 DC X'8F659EFF',X'F862AE69',X'616BFFD3',X'166CCF45' DC-DF
000102 DC X'A00AE278',X'D70DD2EE',X'4E048354',X'3903B3C2' E0-E3
000103 DC X'A7672661',X'D06016F7',X'4969474D',X'3E6E77DB' E4-E7
000104 DC X'AED16A4A',X'D9D65ADC',X'40DF0B66',X'37D83BF0' E8-EB
000105 DC X'A9BCAE53',X'DEBB9EC5',X'47B2CF7F',X'30B5FFE9' EC-EF
000106 DC X'BDBDF21C',X'CABAC28A',X'53B39330',X'24B4A3A6' F0-F3
000107 DC X'BAD03605',X'CDD70693',X'54DE5729',X'23D967BF' F4-F7
000108 DC X'B3667A2E',X'C4614AB8',X'5D681B02',X'2A6F2B94' F8-FB
000109 DC X'B40BBE37',X'C30C8EA1',X'5A05DF1B',X'2D02EF8D' FC-FF
000110 R0 EQU 0
000111 R1 EQU 1
000112 R2 EQU 2
000113 R3 EQU 3
000114 R4 EQU 4
000115 R5 EQU 5
000116 R6 EQU 6
000117 R7 EQU 7
000118 R8 EQU 8
000119 R9 EQU 9
000120 R10 EQU 10
000121 R11 EQU 11
000122 R12 EQU 12
000123 R13 EQU 13
000124 R14 EQU 14
000125 R15 EQU 15
000126 END
****** **************************** Bottom of Data ****************************
|