X-Git-Url: http://gitweb.hachti.de/?a=blobdiff_plain;f=lib%2Fhachti%2Fsrc%2Fmatrix.asm;h=812fd23adcc4bfa378baa701728f35ee92f9b496;hb=8eb8811723f247b223acf77c00171318fb1db645;hp=34c42fb9903b7148e2ee050293c000e84c359d86;hpb=13f9c770845e6d9d77cc779c0d86cea366e721d0;p=h316.git diff --git a/lib/hachti/src/matrix.asm b/lib/hachti/src/matrix.asm index 34c42fb..812fd23 100644 --- a/lib/hachti/src/matrix.asm +++ b/lib/hachti/src/matrix.asm @@ -144,7 +144,7 @@ * JST M$ROT * DAC MATRIX MATRIX TO MODIFY * DAC ANGLE RADIANT ANGLE -* +* DAC 0 FOR FORTRAN IV COMPATIBILITY * * M$SCLE: SCALE MATRIX * @@ -154,6 +154,7 @@ * JST M$SCLE * DAC MATRIX MATRIX TO MODIFY * DAC SCALE SCALE FACTOR +* DAC 0 FOR FORTRAN IV COMPATIBILITY * * ******************************************************************************** @@ -346,6 +347,7 @@ SCLE DAC ** SCALE MATRIX STA SX STA SY IRS SCLE TALLY RETURN ADDRESS + IRS SCLE AGAIN * CALL L$22 SM11 DAC 0 @@ -367,17 +369,165 @@ TM22 DAC 0 ******************************************************************************** * * -**** ROTATE MATRIX +**** ADD ROTATION TO MATRIX +* +* +* M = M * MROT +* +* | M11 M12 | | COS(X) -SIN(X)| +* = | | * | | +* | M21 M22 | | SIN( X) COS(X)| * -* THIS ROUTINE IS NOT YET FINISHED! +* | M11*COS(X)+M12*SIN(X) M12*COS(X)-M11*SIN(X) | +* = | | +* | M21*COS(X)+M22*SIN(X) M22*COS(X)-M21*SIN(X) | +* +* CALL: +* JST ROT +* DAC MATRIX +* DAC ANGLE +* DAC 0 DON'T FORGET! * **************************************** * ROT DAC ** ENTRY - IRS ROT TALLY RETURN ADDRESS - JMP* ROT EXIT +* + LDA* ROT GET MATRIX POINTER + STA R111 M11, FIRST COPY + STA R211 M11, SECOND COPY + STA R311 M11, THIRD COPY + ADD =2 + STA R112 + STA R212 + STA R312 + STA R412 + ADD =2 + STA R121 + STA R221 + STA R321 + ADD =2 + STA R122 + STA R222 + STA R322 + IRS ROT + LDA* ROT + STA RA1 + STA RA2 + IRS ROT + IRS ROT +* +* +**** M11 CALCULATION +* + CALL SIN FLOATING POINT SINE +RA1 DAC ** POINTER TO ANGLE + CALL H$22 SAVE TO TMP1 + DAC TMP1 +* CALL L$22 +* DAC TMP1 + CALL M$22 MULTIPLY +R112 DAC ** M12 + CALL H$22 STORE TO TMP3 + DAC TMP3 +* +************************************* +* + CALL COS FLOATING POINT COSINE +RA2 DAC ** POINTER TO ANGLE + CALL H$22 SAVE TO TMP2 + DAC TMP2 + CALL M$22 MULTIPLY +R111 DAC ** M11 + CALL A$22 ADD TMP3 + DAC TMP3 + CALL H$22 SAVE NEW M11 TO TMP3 + DAC TMP3 +* +* +* M12 CALCULATION +* +* M12 = M12*COS(X)-M11*SIN(X) +* +* + CALL L$22 LOAD SINE + DAC TMP1 + CALL M$22 MULTIPLY +R211 DAC ** M11 + CALL H$22 STORE TO TMP4 + DAC TMP4 + CALL L$22 LOAD COSINE + DAC TMP2 + CALL M$22 MULTIPLY +R212 DAC ** +* + CALL S$22 SUBSTRACT !! + DAC TMP4 +* + CALL H$22 SAVE TO NEW M12 +R312 DAC ** +* + CALL L$22 LOAD NEW M11 FROM TMP3 + DAC TMP3 + CALL H$22 AND SAVE TO NEW M11 +R311 DAC ** * * +* ****************************************** +* +* M21 CALCULATION +* +* M21*COS(X)+M22*SIN(X) +* +* M22*SIN(X) -> TMP3 +* M21*COS(X) - TMP3 +* +* +* + CALL L$22 LOAD SINE + DAC TMP1 + CALL M$22 MULTIPLY +R122 DAC ** M22 + CALL H$22 STORE TO TMP3 + DAC TMP3 + CALL L$22 LOAD COSINE + DAC TMP2 + CALL M$22 MULTIPLY +R121 DAC ** M11 + CALL A$22 ADD TMP3 + DAC TMP3 + CALL H$22 SAVE NEW M21 TO TMP3 + DAC TMP3 +* +* M22 CALCULATION +* +* M22*COS(X)-M21*SIN(X) +* +* +* JMP NN + CALL L$22 LOAD SINE + DAC TMP1 + CALL M$22 MULTIPLY +R221 DAC ** M21 + CALL H$22 STORE TO TMP4 + DAC TMP4 + CALL L$22 LOAD COSINE + DAC TMP2 + CALL M$22 MULTIPLY +R222 DAC ** + CALL S$22 SUBSTRACT + DAC TMP4 + CALL H$22 SAVE TO NEW M22 +R322 DAC ** + CALL L$22 LOAD NEW M21 FROM TMP3 + DAC TMP3 + CALL H$22 AND SAVE TO NEW M21 +R321 DAC ** +* +* + JMP* ROT RETURN. +* +R412 DAC ** +* ******************************************************************************** * * @@ -397,25 +547,25 @@ ROT DAC ** ENTRY * APII DAC ** * - LDA* APII - STA MP11 - ADD =2 - STA MP12 - ADD =2 - STA MP21 - ADD =2 - STA MP22 - IRS APII -* - LDA* APII - STA XP1 - STA XP2 - IRS APII - LDA* APII - STA YP1 - STA YP2 - IRS APII - IRS APII + LDA* APII POINTER TO MATRIX + STA MP11 STORE M11 + ADD =2 ADD 2 + STA MP12 STORE M12 + ADD =2 ADD 2 + STA MP21 STORE M21 + ADD =2 ADD 2 + STA MP22 STORE M22 + IRS APII JUMP TO NEXT ARGUMENT (X) +* + LDA* APII LOAD X VALUE + STA XP1 STORE TO X-POINTER + STA XP2 STORE TO X-POINTER + IRS APII JUMP TO NEXT ARGUMENT (Y) + LDA* APII LOAD Y VALUE + STA YP1 STORE TO Y-POINTER + STA YP2 STORE TO Y-POINTER + IRS APII CORRECT RETURN ADDRESS + IRS APII FOR FORTRANIV COMPATIBILITY JST APL CALL REAL ROUTINE JMP* APII * @@ -475,13 +625,13 @@ XP1 DAC 0 CALL M$22 MULTIPLY FLOAT*FLOAT MP11 DAC 0 CALL H$22 STORE FLOAT - DAC TMP + DAC TMP1 CALL FLOAT YP1 DAC 0 CALL M$22 MP12 DAC 0 CALL A$22 - DAC TMP + DAC TMP1 JST RND ROUND AND CONVERT TO INTEGER STA PA21 STORE NEW X VALUE INTO TEMPORARY LOCATION **** @@ -490,14 +640,14 @@ XP2 DAC 0 CALL M$22 MP21 DAC 0 CALL H$22 - DAC TMP + DAC TMP1 * CALL FLOAT YP2 DAC 0 CALL M$22 MP22 DAC 0 CALL A$22 - DAC TMP + DAC TMP1 JST RND NOW INTEGER IN AC STA* YP1 STORE NEW Y VALUE * @@ -540,7 +690,10 @@ HLF OCT '040100 CONSTANT 0.5 * **** VARIABLES * -TMP BSS '10 SOME SPACE +TMP1 BSS '2 TEMPORARY 2-WORD VARIABLE +TMP2 BSS '2 " " " +TMP3 BSS '2 " " " +TMP4 BSS '2 " " " * * ********************************************************************************