; ======================================================================= ; ; SYSTEM/MACHINE - IAS V2.0 / PDP-11/70, TEKTRONIX-4662 ; ; AUTHOR - J.N. GUIDI ; ; DATE - 4-OCT-78 ; ; TYPE/LANGUAGE - SUBROUTINE / ASSEMBLY (MACRO-11) ; ; RESIDENCE - [133,45]MOVE.MAC ; ; RESTRICTIONS - THIS ROUTINE REQUIRES THAT LUN 1 BE CONNECTED ; TO A TEKTRONIX-4662 DIGITAL PLOTTER ; ; MODIFICATIONS - NA ; ; ABSTRACT - THIS SUBROUTINE WILL ALLOW A CALLING ROUTINE ; TO EXECUTE AN ABSOLUTE MOVE ON A TEKTRONIX-4662 DIGITAL PLOTTER ; WHICH IS ASSOCIATED WITH LUN 1. ; ; CALL - CALL MOVE(X,Y) X,Y ARE 1 WORD INTEGERS ; ; ======================================================================= .TITLE MOVE .IDENT /V1.0/ .PSECT $$PLOT,RW,I,CON,LCL .MCALL DIR$,QIOW$ PLTLUN=1 ;PLOTTER LUN PLTBUF: .BLKB 6 ;PLOTTER OUTPUT BUFFER BUFSIZ=.-PLTBUF .EVEN DARKV: QIOW$ IO.WVB,PLTLUN,1,,,, ; ; X AND Y ARE SENT ACROSS AS 12-BIT BINARY INTEGERS ; MOVE:: CMPB #2,(R5) ;MAKE SURE WE HAVE BOTH ARGUMENTS BEQ 1$ ;YES WE DO JMP 99$ ;NOPE - EXIT WITH DISGRACE ; ; SAVE THE REGISTERS ; 1$: MOV R0,-(SP) MOV R1,-(SP) MOV R2,-(SP) MOV R3,-(SP) MOV R4,-(SP) ; ; SET UP THE PLOTTER OUTPUT BUFFER ; MOV #PLTBUF,R4 ;R4 IS ADDRESS OF PLOTTER BUFFER MOVB #35,(R4)+ ;GROUP SEPARATOR SYMBOL (GS) ; ; HI-Y BYTE BIT REPRESENTATION: ; ------------------------------------------- ; : 6 : 5 : 4 : 3 : 2 : 1 : 0 : BIT ; ------------------------------------------- ; : 0 : 1 : 5 MSB OF Y-COORDINATE : VALUE ; ------------------------------------------- ; MOV @4(R5),R0 ;Y ASH #71,R0 ;STRIP OFF THE LS 7 BITS OF Y BIC #177740,R0 ;RETAIN ONLY THE MS 5 BITS OF Y BIS #40,R0 ;SET TAG BITS :6:5: TO :0:1: MOVB R0,(R4)+ ;(R4) IS HI-Y ; ; X-LO-Y BYTE BIT REPRESENTATION: ; ------------------------------------------- ; : 6 : 5 : 4 : 3 : 2 : 1 : 0 : BIT ; ------------------------------------------- ; : 1 : 1 : - : 2 LSB Y : 2 LSB X : VALUE ; ------------------------------------------- ; MOV @2(R5),R0 ;X BIC #177774,R0 ;CHOP OFF ALL BUT 2 LSB OF X BIS #140,R0 ;SET TAG BITS :6:5: TO :1:1: MOV @4(R5),R1 ;Y BIC #177774,R1 ;CHOP OFF ALL BUT 2 LSB OF Y ASL R1 ;THE 2 LSB OF Y ARE SHIFTED INTO ASL R1 ;BITS 3:2 BIC #177763,R1 ;CLEAR THE REST OF THE BITS IN R1 BIS R1,R0 ;COMBINE R1 INTO R0 MOVB R0,(R4)+ ;(R4) IS X-LO-Y ; ; LO-Y BYTE BIT REPRESENTATION: ; ------------------------------------------- ; : 6 : 5 : 4 : 3 : 2 : 1 : 0 : BIT ; ------------------------------------------- ; : 1 : 1 : 5 INTERM. Y-COORDINATE BITS : VALUE ; ------------------------------------------- ; MOV @4(R5),R0 ;Y ASR R0 ;STRIP OFF THE 2 LSB BITS OF Y ASR R0 BIC #177740,R0 ;RETAIN ONLY THE INTERM. 5 BITS OF Y BIS #140,R0 ;SET TAG BITS :6:5: TO :1:1: MOVB R0,(R4)+ ;(R4) IS LO-Y ; ; HI-X BYTE BIT REPRESENTATION: ; ------------------------------------------- ; : 6 : 5 : 4 : 3 : 2 : 1 : 0 : BIT ; ------------------------------------------- ; : 0 : 1 : 5 MSB OF X-COORDINATE : VALUE ; ------------------------------------------- ; MOV @2(R5),R0 ;X ASH #71,R0 ;STRIP OFF THE LS 7 BITS OF X BIC #177740,R0 ;RETAIN ONLY THE MS 5 BITS BIS #40,R0 ;SET TAG BITS :6:5: TO :1:0: MOVB R0,(R4)+ ;(R4) IS HI-X ; ; LO-X BYTE BIT REPRESENTATION: ; ------------------------------------------- ; : 6 : 5 : 4 : 3 : 2 : 1 : 0 : BIT ; ------------------------------------------- ; : 1 : 0 : 5 LSB OF X-COORDINATE : VALUE ; ------------------------------------------- ; MOV @2(R5),R0 ;X ASR R0 ;STRIP OFF LS 2 BITS OF X ASR R0 BIC #177740,R0 ;RETAIN ONLY THE LS 5 BITS BIS #100,R0 ;SET TAG BITS :6:5: TO :1:0: MOVB R0,(R4)+ ;(R4) IS LO-X ; ; ; NOW DO THE QIO TO THE PLOTTER ; DIR$ #DARKV ; ; RESTORE THE REGISTERS AND LEAVE ; MOV (SP)+,R4 MOV (SP)+,R3 MOV (SP)+,R2 MOV (SP)+,R1 MOV (SP)+,R0 99$: RTS PC .END