.TITLE SCALE - SFGL70 ROUTINE TO SCALE X & Y COORDINATES .IDENT 'SCAL00' .PSECT SCALE ; KEN DEMERS ; UTRC ; OCTOBER ; THIS ROUTINE IS PART OF THE SMALL FAST ; GRAPHIC LIBRARY ON THE 11/70(SFGL70), WHICH ; IS SIMILAR IN FUNCTION TO THE PDP-6 ; MEMO SCOPE LIBRARY. THIS ROUTINE SCALES ; THE X & Y COORDINATES TO THE SYSTEM SET UP ; BY THE USER'S CALL TO GRID. ; ON ENTRY: ; R1 = A(X FLOINTING POINT COORDINATE) ; R2 = A(Y FLOATING POINT COORDINATE) ; INTERNAL GLOBALS .GLOBL S$CALE ; EXTERNAL GLOBALS .GLOBL X$MIN,X$ABMAX,X$RANGE,Y$MIN,Y$ABMAX,Y$RANGE .GLOBL A$RG21,X$MXCOR,Y$MXCOR,R$IDGX,R$IDGY ; ASSIGNMENTS AC0 = 0 ;FPP ACCUMULATOR 0 S$CALE: MOV R0,-(SP) ;SAVE R0 MOV #A$RG21,R0 ;R0= A(X COORD POSITION) SETF ;FPP MODE S.P. SETI ;FPP MODE SHORT INTEGER LDF (R1),AC0 ;VALUE - X$MIN ABS COORD SUBF X$MIN,AC0 ;----------- = ----------- MULF X$ABMAX,AC0 ;XMAX - X$MIN 1023. - R$IDGX DIVF X$RANGE,AC0 STCFI AC0,(R0) ;STORE ABS X COORD CMP #X$MXCOR,(R0) ;IS X OUT OF RANGE? BGE SCA10 ;NO MOV #X$MXCOR,(R0) ;SET X TO MAX BR SCA20 SCA10: TST (R0) ;IS X BELOW MIN? BGE SCA20 ;NO CLR (R0) ;SET IT TO SCOPE MIN SCA20: ADD #R$IDGX,(R0)+ ;ALLOW LABEL ON LEFT ;R0 NOW = A(ARG22 Y COORD POSIT) LDF (R2),AC0 ;VALUE - Y$MIN ABS COORD SUBF Y$MIN,AC0 ;----------- = ----------- MULF Y$ABMAX,AC0 ;YMAY - X$MIN 780. -R$IDGY DIVF Y$RANGE,AC0 STCFI AC0,(R0) ;STORE ABS Y COORD CMP #Y$MXCOR,(R0) ;IS Y OUT OF RANGE? BGE SCA30 ;NO MOV #Y$MXCOR,(R0) ;SET Y TO MAX BR SCA40 SCA30: TST (R0) ;IS Y BELOW MIN? BGE SCA40 ;NO CLR (R0) ;SET IT TO SCOPE MIN SCA40: ADD #R$IDGY,(R0) ;ALLOW LABEL ON BOTTOM CMP (R1)+,(R1)+ ;BUMP PTR TO NEXT F.P. X COORD CMP (R2)+,(R2)+ ;BUMP PTR TO NEXT F.P. Y COORD MOV (SP)+,R0 ;RESTORE R0 RETURN .END