/008 SUBROUTINE TO MOVE A BLOCK THROUGH CORE / / CALLLNG SEQUENCE / JMS MOVE / BEGINADDRESS / ENDADDRESS / DESTINATION OF FIRST WORD / RETURN /AC=0 / / IF BEGINADDRESS AND ENDADDRESS ARE / THE SAME ADDRESS, OR BEGINADDRESS / IS GREATER THAN ENDADDRESS, / NO MOVE IS PERFORMED / / IF BEGINADDRESS AND DESTINATION ARE / THE SAME ADDRESS, A COMPLETE MOVE / IS PERFORMED: YOU SHOULD BE LESS STUPID! / / 56 (OCTAL) CORE LOCATIONS ARE USED 0 0 0 0 / MOVE, 0 TAD I MOVE /GET BEGINADDRESS DCA MOVE-1 ISZ MOVE TAD I MOVE /GET ENDADDRESS DCA MOVE-2 ISZ MOVE TAD MOVE-2 CMA TAD MOVE-1 /CALCULAAE WORDCOUNT SNA /IS IT POSITIV OR ZERO? JMP MOVRET /YES, NO MOVE NEEDED DCA MOVE-4 /SAVE WORDCOUNT TAD MOVE-1 CIA CLL TAD I MOVE /CALCULATE MOVECOUNT DCA MOVE-3 /AND SAVE SZL /LINK IS ON IF MOVE TO HIGHER CORE JMP .+3 /SKIP NEXT INSTTUCTIONS IAC CML /LINK IS OFF TAD MOVE-4 /FIRST IN ADDRESS IS BEGINADDRESS TAD MOVE-2 DCA MOVE-2 /SAVE INPUTPOINTER SZL /SKIP IF MOVE TO LOWER CORE CLL CMA RAL /TO HIGHER CORE, INC = -1 IAC DCA MOVE-1 /SAVE INCREMENT TAD MOVE-2 /SET UP OUTPUTPOINTER TAD MOVE-3 DCA MOVE-3 /AND SAVE MVLOOP, TAD I MOVE-2 /GET A WORD DCA I MOVE-3 /AND STORE IT IN DESTINATION BLOCK TAD MOVE-2 TAD MOVE-1 /INCREMEN INPUTPOINTER DCA MOVE-2 TAD MOVE-3 TAD MOVE-1 /INCREMENT OUTPUTPOINTER DCA MOVE-3 ISZ MOVE-4 /INCREMENT WORDCOUNT JMP MVLOOP /AGAIN IF NOT ZERO / MOVRET, ISZ MOVE /SET UP RETURNADDRESS JMP I MOVE /RETURN