|
********************************************************************* ; * ; PROCESS FOURTH 8 INPUTS. Y(0,3)...Y(7,3) -> Z(0,3)...Z(7,3) * ; * *********************************************************************
LD ROUND3, A ; + ROUND3 ADD *AR2+, 9, A ; + (Y0) ADD *AR2+, 9, A ; + (Y1) ADD *AR2+, 9, A ; + (Y2) ADD *AR2+, 9, A ; + (Y3) ADD *AR2+, 9, A ; + (Y4) ADD *AR2+, 9, A ; + (Y5) ADD *AR2+, 9, A ; + (Y6) ADD *AR2, 9, A ; + (Y7) STH A, Z03 ; = Z03
RPTZ A, #7 MACP *AR2-, COEF_F1, A SFTA A, -6 MAR *AR2+ ; (128)[A*Y0+B*Y1+C*Y2-D*Y3-D*Y4 ADD ROUND2, A ; -C*Y5-B*Y6-A*Y7] + 2*ROUND2 STH A, 1, Z13 ; = Z13
LD ROUND2, -6, A ; (ROUND1)/64 LD E_P7, T MAC *AR2+0, A ; + Y0*E_P7 MAS *AR2+, A ; - Y3*E_P7 MAS *AR2+0, A ; - Y4*E_P7 MAC *AR2-, A ; + Y7*E_P7 LD F_P7, T MAC *AR2-, A ; + Y6*F_P7 MAS *AR2-0, A ; - Y5*F_P7 MAS *AR2-, A ; - Y2*F_P7 MAC *AR2-, A ; + Y1*F_P7 STH A, -5, Z23 ; Multiply prev summation by 128 ; = Z23
RPTZ A, #7 MACP *AR2+, COEFF2, A ; 128(B*Y0-D*Y1-A*Y2-C*Y3+C*Y4+A*Y5 SFTA A, -6 MAR *AR2- ADD ROUND2, A ; +D*Y6-B*Y7) + 2*ROUND2 STH A, 1, Z33 ; = Z33
LD ROUND3, A ADD *AR2-, 9, A ; Y7 SUB *AR2-, 9, A ; - Y6 SUB *AR2-, 9, A ; - Y5 ADD *AR2-, 9, A ; + Y4 ADD *AR2-, 9, A ; + Y3 SUB *AR2-, 9, A ; - Y2 SUB *AR2-, 9, A ; - Y1 ADD *AR2, 9, A ; + Y0 STH A, Z43 ; = Z43
RPTZ A, #7 MACP *AR2+, COEFF3, A ; 218(D*Y0-C*Y1+B*Y2-A*Y3+A*Y4-B*Y5 SFTA A, -6 ; +C*Y6-D*Y7) MAR *AR2- ADD ROUND2, A ; + 2*ROUND2 STH A, 1, Z53 ; = Z53
LD ROUND2, -6, A ; (ROUND1)/64 LD F_P7, T MAC *AR2-0, A ; + F_P7*Y7 MAS *AR2-, A ; - F_P7*Y4 MAS *AR2-0, A ; - F_P7*Y3 MAC *AR2+, A ; + F_P7*Y0 LD E_P7, T MAS *AR2+, A ; - E_P7*Y1 MAC *AR2+0, A ; + E_P7*Y2 MAC *AR2+, A ; + E_P7*Y5 MAS *AR2+, A ; - E_P7*Y6 STH A, -5, Z63 ; Multiply prev summation by 128 ; = Z63
RPTZ A, #7 MACP *AR2-, COEF_F4, A ; 128(D*Y0-C*Y1+B*Y2-A*Y3+A*Y4-B*Y5 SFTA A, -6 ; +C*Y6-D*Y7) MAR *AR2+ ADD ROUND2, A ; + 2*ROUND2 STH A, 1, Z73 ; = Z73 MAR *+AR2(8) ; Set AR1 to point to the next set ; of 8 inputs
********************************************************************* ; * ; PROCESS FIFTH 8 INPUTS. Y(0,4)...Y(7,4) -> Z(0,4)...Z(7,4) * ; * *********************************************************************
LD ROUND3, A ; + ROUND3 ADD *AR2+, 9, A ; + (Y0) ADD *AR2+, 9, A ; + (Y1) ADD *AR2+, 9, A ; + (Y2) ADD *AR2+, 9, A ; + (Y3) ADD *AR2+, 9, A ; + (Y4) ADD *AR2+, 9, A ; + (Y5) ADD *AR2+, 9, A ; + (Y6) ADD *AR2, 9, A ; + (Y7) STH A, Z04 ; = Z04
RPTZ A, #7 MACP *AR2-, COEF_F1, A SFTA A, -6 MAR *AR2+ ; (128)[A*Y0+B*Y1+C*Y2-D*Y3-D*Y4 ADD ROUND2, A ; -C*Y5-B*Y6-A*Y7] + 2*ROUND2 STH A, 1, Z14 ; = Z14
LD ROUND2, -6, A ; (ROUND1)/64 LD E_P7, T MAC *AR2+0, A ; + Y0*E_P7 MAS *AR2+, A ; - Y3*E_P7 MAS *AR2+0, A ; - Y4*E_P7 MAC *AR2-, A ; + Y7*E_P7 LD F_P7, T MAC *AR2-, A ; + Y6*F_P7 MAS *AR2-0, A ; - Y5*F_P7 MAS *AR2-, A ; - Y2*F_P7 MAC *AR2-, A ; + Y1*F_P7 STH A, -5, Z24 ; Multiply prev summation by 128 ; = Z24
RPTZ A, #7 MACP *AR2+, COEFF2, A ; 128(B*Y0-D*Y1-A*Y2-C*Y3+C*Y4+A*Y5 SFTA A, -6 MAR *AR2- ADD ROUND2, A ; +D*Y6-B*Y7) + 2*ROUND2 STH A, 1, Z34 ; = Z34
LD ROUND3, A ADD *AR2-, 9, A ; Y7 SUB *AR2-, 9, A ; - Y6 SUB *AR2-, 9, A ; - Y5 ADD *AR2-, 9, A ; + Y4 ADD *AR2-, 9, A ; + Y3 SUB *AR2-, 9, A ; - Y2 SUB *AR2-, 9, A ; - Y1 ADD *AR2, 9, A ; + Y0 STH A, Z44 ; = Z44
RPTZ A, #7 MACP *AR2+, COEFF3, A ; 218(D*Y0-C*Y1+B*Y2-A*Y3+A*Y4-B*Y5 SFTA A, -6 ; +C*Y6-D*Y7) MAR *AR2- ADD ROUND2, A ; + 2*ROUND2 STH A, 1, Z54 ; = Z54
LD ROUND2, -6, A ; (ROUND1)/64 LD F_P7, T MAC *AR2-0, A ; + F_P7*Y7 MAS *AR2-, A ; - F_P7*Y4 MAS *AR2-0, A ; - F_P7*Y3 MAC *AR2+, A ; + F_P7*Y0 LD E_P7, T MAS *AR2+, A ; - E_P7*Y1 MAC *AR2+0, A ; + E_P7*Y2 MAC *AR2+, A ; + E_P7*Y5 MAS *AR2+, A ; - E_P7*Y6 STH A, -5, Z64 ; Multiply prev summation by 128 ; = Z64
RPTZ A, #7 MACP *AR2-, COEF_F4, A ; 128(D*Y0-C*Y1+B*Y2-A*Y3+A*Y4-B*Y5 SFTA A, -6 ; +C*Y6-D*Y7) MAR *AR2+ ADD ROUND2, A ; + 2*ROUND2 STH A, 1, Z74 ; = Z74 MAR *+AR2(8) ; Set AR1 to point to the next set ; of 8 inputs
********************************************************************* ; * ; PROCESS SIXTH 8 INPUTS. Y(0,5)...Y(7,5) -> Z(0,5)...Z(7,5) * ; * *********************************************************************
LD ROUND3, A ; + ROUND3 ADD *AR2+, 9, A ; + (Y0) ADD *AR2+, 9, A ; + (Y1) ADD *AR2+, 9, A ; + (Y2) ADD *AR2+, 9, A ; + (Y3) ADD *AR2+, 9, A ; + (Y4) ADD *AR2+, 9, A ; + (Y5) ADD *AR2+, 9, A ; + (Y6) ADD *AR2, 9, A ; + (Y7) STH A, Z05 ; = Z05
RPTZ A, #7 MACP *AR2-, COEF_F1, A SFTA A, -6 MAR *AR2+ ; (128)[A*Y0+B*Y1+C*Y2-D*Y3-D*Y4 ADD ROUND2, A ; -C*Y5-B*Y6-A*Y7] + 2*ROUND2 STH A, 1, Z15 ; = Z15
LD ROUND2, -6, A ; (ROUND1)/64 LD E_P7, T MAC *AR2+0, A ; + Y0*E_P7 MAS *AR2+, A ; - Y3*E_P7 MAS *AR2+0, A ; - Y4*E_P7 MAC *AR2-, A ; + Y7*E_P7 LD F_P7, T MAC *AR2-, A ; + Y6*F_P7 MAS *AR2-0, A ; - Y5*F_P7 MAS *AR2-, A ; - Y2*F_P7 MAC *AR2-, A ; + Y1*F_P7 STH A, -5, Z25 ; Multiply prev summation by 128 ; = Z25
RPTZ A, #7 MACP *AR2+, COEFF2, A ; 128(B*Y0-D*Y1-A*Y2-C*Y3+C*Y4+A*Y5 SFTA A, -6 MAR *AR2- ADD ROUND2, A ; +D*Y6-B*Y7) + 2*ROUND2 STH A, 1, Z35 ; = Z35
LD ROUND3, A ADD *AR2-, 9, A ; Y7 SUB *AR2-, 9, A ; - Y6 SUB *AR2-, 9, A ; - Y5 ADD *AR2-, 9, A ; + Y4 ADD *AR2-, 9, A ; + Y3 SUB *AR2-, 9, A ; - Y2 SUB *AR2-, 9, A ; - Y1 ADD *AR2, 9, A ; + Y0 STH A, Z45 ; = Z45
RPTZ A, #7 MACP *AR2+, COEFF3, A ; 218(D*Y0-C*Y1+B*Y2-A*Y3+A*Y4-B*Y5 SFTA A, -6 ; +C*Y6-D*Y7) MAR *AR2- ADD ROUND2, A ; + 2*ROUND2 STH A, 1, Z55 ; = Z55
LD ROUND2, -6, A ; (ROUND1)/64 LD F_P7, T MAC *AR2-0, A ; + F_P7*X7 MAS *AR2-, A ; - F_P7*X4 MAS *AR2-0, A ; - F_P7*X3 MAC *AR2+, A ; + F_P7*X0 LD E_P7, T MAS *AR2+, A ; - E_P7*X1 MAC *AR2+0, A ; + E_P7*X2 MAC *AR2+, A ; + E_P7*X5 MAS *AR2+, A ; - E_P7*X6 STH A, -5, Z65 ; Multiply prev summation by 128 ; = Z65
RPTZ A, #7 MACP *AR2-, COEF_F4, A ; 128(D*Y0-C*Y1+B*Y2-A*Y3+A*Y4-B*Y5 SFTA A, -6 ; +C*Y6-D*Y7) MAR *AR2+ ADD ROUND2, A ; + 2*ROUND2 STH A, 1, Z75 ; = Z75 MAR *+AR2(8) ; Set AR1 to point to the next set ; of 8 inputs
********************************************************************* ; * ; PROCESS SEVENTH 8 INPUTS. Y(0,6)...Y(7,6) -> Z(0,6)...Z(7,6) * ; * *********************************************************************
LD ROUND3, A ; + ROUND3 ADD *AR2+, 9, A ; + (Y0) ADD *AR2+, 9, A ; + (Y1) ADD *AR2+, 9, A ; + (Y2) ADD *AR2+, 9, A ; + (Y3) ADD *AR2+, 9, A ; + (Y4) ADD *AR2+, 9, A ; + (Y5) ADD *AR2+, 9, A ; + (Y6) ADD *AR2, 9, A ; + (Y7) STH A, Z06 ; = Z06
RPTZ A, #7 MACP *AR2-, COEF_F1, A SFTA A, -6 MAR *AR2+ ; (128)[A*Y0+B*Y1+C*Y2-D*Y3-D*Y4 ADD ROUND2, A ; -C*Y5-B*Y6-A*Y7] + 2*ROUND2 STH A, 1, Z16 ; = Z16
LD ROUND2, -6, A ; (ROUND1)/64 LD E_P7, T MAC *AR2+0, A ; + Y0*E_P7 MAS *AR2+, A ; - Y3*E_P7 MAS *AR2+0, A ; - Y4*E_P7 MAC *AR2-, A ; + Y7*E_P7 LD F_P7, T MAC *AR2-, A ; + Y6*F_P7 MAS *AR2-0, A ; - Y5*F_P7 MAS *AR2-, A ; - Y2*F_P7 MAC *AR2-, A ; + Y1*F_P7 STH A, -5, Z26 ; Multiply prev summation by 128 ; = Z26
RPTZ A, #7 MACP *AR2+, COEFF2, A ; 128(B*Y0-D*Y1-A*Y2-C*Y3+C*Y4+A*Y5 SFTA A, -6 MAR *AR2- ADD ROUND2, A ; +D*Y6-B*Y7) + 2*ROUND2 STH A, 1, Z36 ; = Z36
LD ROUND3, A ADD *AR2-, 9, A ; Y7 SUB *AR2-, 9, A ; - Y6 SUB *AR2-, 9, A ; - Y5 ADD *AR2-, 9, A ; + Y4 ADD *AR2-, 9, A ; + Y3 SUB *AR2-, 9, A ; - Y2 SUB *AR2-, 9, A ; - Y1 ADD *AR2, 9, A ; + Y0 STH A, Z46 ; = Z46
RPTZ A, #7 MACP *AR2+, COEFF3, A ; 218(D*Y0-C*Y1+B*Y2-A*Y3+A*Y4-B*Y5 SFTA A, -6 ; +C*Y6-D*Y7) MAR *AR2- ADD ROUND2, A ; + 2*ROUND2 STH A, 1, Z56 ; = Z56
LD ROUND2, -6, A ; (ROUND1)/64 LD F_P7, T MAC *AR2-0, A ; + F_P7*Y7 MAS *AR2-, A ; - F_P7*Y4 MAS *AR2-0, A ; - F_P7*Y3 MAC *AR2+, A ; + F_P7*Y0 LD E_P7, T MAS *AR2+, A ; - E_P7*Y1 MAC *AR2+0, A ; + E_P7*Y2 MAC *AR2+, A ; + E_P7*Y5 MAS *AR2+, A ; - E_P7*Y6 STH A, -5, Z66 ; Multiply prev summation by 128 ; = Z66
RPTZ A, #7 MACP *AR2-, COEF_F4, A ; 128(D*Y0-C*Y1+B*Y2-A*Y3+A*Y4-B*Y5 SFTA A, -6 ; +C*Y6-D*Y7) MAR *AR2+ ADD ROUND2, A ; + 2*ROUND2 STH A, 1, Z76 ; = Z76 MAR *+AR2(8) ; Set AR1 to point to the next set ; of 8 inputs
********************************************************************* ; * ; PROCESS EIGHTH 8 INPUTS. Y(0,7)...Y(7,7) -> Z(0,7)...Z(7,7) * ; * *********************************************************************
LD ROUND3, A ; + ROUND3 ADD *AR2+, 9, A ; + (Y0) ADD *AR2+, 9, A ; + (Y1) ADD *AR2+, 9, A ; + (Y2) ADD *AR2+, 9, A ; + (Y3) ADD *AR2+, 9, A ; + (Y4) ADD *AR2+, 9, A ; + (Y5) ADD *AR2+, 9, A ; + (Y6) ADD *AR2, 9, A ; + (Y7) STH A, Z07 ; = Z07
RPTZ A, #7 MACP *AR2-, COEF_F1, A SFTA A, -6 MAR *AR2+ ; (128)[A*Y0+B*Y1+C*Y2-D*Y3-D*Y4 ADD ROUND2, A ; -C*Y5-B*Y6-A*Y7] + 2*ROUND2 STH A, 1, Z17 ; = Z17
LD ROUND2, -6, A ; (ROUND1)/64 LD E_P7, T MAC *AR2+0, A ; + Y0*E_P7 MAS *AR2+, A ; - Y3*E_P7 MAS *AR2+0, A ; - Y4*E_P7 MAC *AR2-, A ; + Y7*E_P7 LD F_P7, T MAC *AR2-, A ; + Y6*F_P7 MAS *AR2-0, A ; - Y5*F_P7 MAS *AR2-, A ; - Y2*F_P7 MAC *AR2-, A ; + Y1*F_P7 STH A, -5, Z27 ; Multiply prev summation by 128 ; = Z27
RPTZ A, #7 MACP *AR2+, COEFF2, A ; 128(B*Y0-D*Y1-A*Y2-C*Y3+C*Y4+A*Y5 SFTA A, -6 MAR *AR2- ADD ROUND2, A ; +D*Y6-B*Y7) + 2*ROUND2 STH A, 1, Z37 ; = Z37
LD ROUND3, A ADD *AR2-, 9, A ; Y7 SUB *AR2-, 9, A ; - Y6 SUB *AR2-, 9, A ; - Y5 ADD *AR2-, 9, A ; + Y4 ADD *AR2-, 9, A ; + Y3 SUB *AR2-, 9, A ; - Y2 SUB *AR2-, 9, A ; - Y1 ADD *AR2, 9, A ; + Y0 STH A, Z47 ; = Z47
RPTZ A, #7 MACP *AR2+, COEFF3, A ; 218(D*Y0-C*Y1+B*Y2-A*Y3+A*Y4-B*Y5 SFTA A, -6 ; +C*Y6-D*Y7) MAR *AR2- ADD ROUND2, A ; + 2*ROUND2 STH A, 1, Z57 ; = Z57
LD ROUND2, -6, A ; (ROUND1)/64 LD F_P7, T MAC *AR2-0, A ; + F_P7*Y7 MAS *AR2-, A ; - F_P7*Y4 MAS *AR2-0, A ; - F_P7*Y3 MAC *AR2+, A ; + F_P7*Y0 LD E_P7, T MAS *AR2+, A ; - E_P7*Y1 MAC *AR2+0, A ; + E_P7*Y2 MAC *AR2+, A ; + E_P7*Y5 MAS *AR2+, A ; - E_P7*Y6 STH A, -5, Z67 ; Multiply prev summation by 128 ; = Z67
RPTZ A, #7 MACP *AR2-, COEF_F4, A ; 128(D*Y0-C*Y1+B*Y2-A*Y3+A*Y4-B*Y5 SFTA A, -6 ; +C*Y6-D*Y7) MAR *AR2+ ADD ROUND2, A ; + 2*ROUND2 STH A, 1, Z77 ; = Z77 MAR *+AR2(8) ; Set AR1 to point to the next set ; of 8 inputs
DCT3 NOP NOP
** PLACE FDCT COEFFICIENTS IN FILE POINTED BY PA2
.IF MODE=1 STM #63, AR0 ; AR0= # of outputs - 1 STM #Z00, AR1 ; AR1= addr of first output BEG1 PORTW *AR1+, #PA2BIS ; Send output value NOP NOP BANZ BEG1, *AR0- ; Repeat above process (64x) .ENDIF
EXIT NOP B START ; Go to start of program. ; Grab another 64 pixels
****************************************************** * SET OF COEFFICIENTS BEING USED IN TRANFORM MATRIX * ******************************************************
COEF_F1 .WORD -22725,-19266,-12873,-4520,4520,12873,19266,22725 COEFF2 .WORD 19266,-4520,-22725,-12873,12873,22725,4520,-19266 COEFF3 .WORD 12873,-22725,4520,19266,-19266,-4520,22725,-12873 COEF_F4 .WORD -4520,12873,-19266,22725,-22725,19266,-12873,4520
* with: A = cos(?16)*?*16384 = 22725 * B = cos(3?16)*?*16384 = 19266 * C = cos(5?16)*?*16384 = 12873 * D = cos(7?16)*?*16384 = 4520 * E = cos(?8)*?*16384 = 21407 * F = cos(3?8)*?*16384 = 8867 *
.END
|