ASMB,R,B,L NAM .GRAF 09601-16020 REV. A * * ENT GRAPH * *********************************** * * ERS: A-09601-16020-1 * LISTING: A-09601-16020-2 * SOURCE: 09601-18020 * RELOC: 09601-16020 * *********************************** * * M. SCHOENDORF SEPTEMBER 12,1974 REV. A * * *** UTILITY ROUTINES * EXT #GRFU,.DLD,.ENTR,ERRCD,ERROR,#ERRU EXT EXEC,.FAD,.IENT * * * GRAPH(N,X(I),Y(I)) * * N = 0 CLEAR (X(I) AND Y(I) IGNORED) * ELSE * N = NUMBER OF POINTS IN X-Y BUFFER (1-32) * * X(I) = ARRAY WHOSE ELEMENTS ARE THE X-COORDINATES * OF THE ANALOG VOLTAGE * * Y(I) = ARRAY WHOSE ELEMENTS ARE THE Y-COORDINATES * OF THE ANALOG VOLTAGE * * WHERE EACH ELEMENT OF THE X AND Y ARRAY CAN * VARY FROM 0 TO 255 AND THE CORRESPONDING * VOLTAGE IS CALCULATED BY THE FOLLOWING * FORMULA: * * V = (X(I) OR Y(I) / 255)*10 * * SKP * * NDATA BSS 1 XARAY BSS 1 YARAY BSS 1 GRAPH NOP JSB .ENTR DEF NDATA CLA CLEAR GLOBAL ERROR CODE STA ERRCD LDA NDATA,I GET NUMBER OF ELEMENTS IN ARRAY SSA <0? JMP ERR1 YES, ERROR EXIT SZA,RSS =0? JMP CLEAR YES CMA,INA ADA .32 >32? SSA JMP ERR1 YES, ERROR EXIT LDA YARAY GET ADD. OF Y ELEMENTS OF ARRAY LDB BUFAD JSB INIT SUBROUTINE TO INITIALIZE VALUES JSB PACK SUBROUTINE TO PACK INTEGERS LDA XARAY GET ADDRESS OF X AND Y ELEMENTS LDB BUFAD OF ARRAY JSB INIT SUBROUTINE TO INITIALIZE VALUES JSB PACK SUBROUTINE TO PACK INTEGERS JSB EXEC EXEC WRITE CALL DEF *+5 RETURN ADDRESS DEF .2 WRITE REQUEST DEF #GRFU LOGICAL UNIT NUMBER DEF BUFAD,I BUFFER LOCATION DEF NDATA,I BUFFER LENGTH JMP GRAPH,I RETURN TO CALLING PROGRAM * CLEAR JSB EXEC DEF *+3 DEF .3 DEF #GRFU JMP GRAPH,I * .2 DEC 2 .3 DEC 3 .32 DEC 32 BUFAD DEF *+1 BSS 32 SKP * * ERROR PROCESSING * ERR1 ISZ ERRCD TYPE 1 ERROR JSB ERROR CALL ERROR SUBROUTINE DEF *+5 RETURN ADDRESS DEF ERRCD TYPE OF ERROR DEF ERMSG ERROR MESSAGE DEF #ERRU DEF GRAPH ENTRY POINT JMP GRAPH,I RETURN TO CALLING PROGRAM ERMSG DEC 3 ASC 2,GRAPH * * SUBROUTINE TO INITIALIZE COUNTERS AND ARRAYS * INIT NOP STA ARRAY ADDRESS OF DATA ORIGIN STB BUFF ADDRESS OF DATA DESTINATION LDA NDATA,I NUMBER OF DATA POINTS CMA,INA STA INCR STORE FOR INCREMENTING JMP INIT,I * * SUBROUTINE TO PACK VALUES FROM TWO FLOATING POINT * ARRAYS TO ONE INTEGER ARRAY * PACK NOP GNUDT JSB .DLD GET FLOATING POINT VALUE DEF ARRAY,I JSB .FAD ADD 1/2 FOR ROUND OFF DEF HALF JSB .IENT CONVERT TO INTEGER JMP ERR1 WON'T CONVERT, ERROR EXIT LDB 0 SSB >0? JMP ERR1 NO, ERROR EXIT LDA BUFF,I GET CONTENTS OF INTEGER ARRAY AND B377 MASK OFF LOWER 8 BITS ALF,ALF SHIFT 8 BITS TO LEFT IOR 1 MERGE WITH NEXT INTEGER STA BUFF,I STORE IN INTEGER ARRAY CMB,INB ADB B377 SSB INTEGER > 255? JMP ERR1 YES, ERROR EXIT ISZ ARRAY INCREMENT ADD. OF SOURCE ARRAY ISZ ARRAY INCREMENT ADD. OF SOURCE ARRAY ISZ BUFF INCREMENT ADD. OF DESTINATION ARRAY ISZ INCR INCR. NO. OF VALUES LEFT TO CONVERT JMP GNUDT GET NEXT FLT. PT. NO. FOR CONV. JMP PACK,I * B377 OCT 377 ARRAY BSS 1 BUFF BSS 1 INCR BSS 1 HALF DEC 0.5 END