.TITLE GT600 ;DRIVES MATROX GT600 GRAPHICS DISPLAY IN VT100 .MCALL .GTP,.GTV,.GTCR,.GTE,.PRINT,.TTYIN,.TTYOUT .GLOBL .GTP,.GTV,.GTCR,.GTE,GTP,GTV,GTCR,GTE ; .MACRO .GTE ;ERASE SCREEN GTE: .GTE: .PRINT #CLEAR RETURN CLEAR: .BYTE 33,133,62,112,33,61,33,105,103,33,62,200 ; .MACRO .GTV X,Y ;VECTOR (LINE) GTV: .GTV @2(R5),@4(R5) RETURN GT600Y: .BLKW 1 GT600X: .BLKW 1 .GTV: MOV R0,-(SP) MOV GT600X,X MOV GT600Y,Y .TTYOUT #33 ;ESC 1 GS BELL ENTER GRAPH LINE MODE .TTYOUT #61 .TTYOUT #35 BR ZZZ ; .MACRO .GTP X,Y ;POINT GTP: .GTP X,Y RETURN Y: .BLKW 1 X: .BLKW 1 .GTP: MOV R0,-(SP) .TTYOUT #33 ;ESC 1 FS BELL ;ENTER GT600 POINT-PLOT MODE .TTYOUT #61 .TTYOUT #34 ZZZ: .TTYOUT #7 TST Y BGE Z1 ;IS Y OFF SCREEN? CLR Y ;PUT Y BACK ON SCREEN BR Z2 Z1: CMP Y,#779. BLE Z2 MOV #779.,Y Z2: TST X ;IS X OFF SCREEN? BGE Z3 CLR X BR Z4 Z3: CMP X,#1023. BLE Z4 MOV #1023.,X Z4: MOV Y,R0 ;ENCODE 5 MOST SIGNIFICANT BITS OF Y ASH #-5,R0 BISB #^B100000,R0 .TTYOUT R0 MOV Y,R0 BICB #^B11100000,R0 ;ENCODE 5 LEAST SIGNIF BITS OF Y BISB #^B01100000,R0 .TTYOUT R0 MOV X,R0 ;ENCODE 5 MOST SIGNIF BITS OF X ASH #-5,R0 BISB #^B100000,R0 .TTYOUT R0 MOV X,R0 ;ENCODE 5 LEAST SIGNIF BITS OF X BICB #^B11100000,R0 BISB #^B01000000,R0 .TTYOUT R0 .TTYOUT #33 ;ESC 2 RETURN TO NORMAL .TTYOUT #62 MOV (SP)+,R0 RETURN ; .MACRO .GTCR X,Y,B ;RETURNS CROSS-HAIR COORDS X,Y (INTEGERS) & GTCR: .GTCR @2(R5),@4(R5),@6(R5) ;TYPED BYTE B WHEN KEY B HIT RETURN CRB: .BLKW 1 CRY: .BLKW 1 CRX: .BLKW 1 .GTCR: MOV R0,-(SP) .PRINT #MCR .TTYIN CRB ;TYPED CHAR .TTYIN R0 ;GET 5 HIGH-ORDER X-COORD BITS BIC #^B1111111111100000,R0 ASH #5,R0 MOV R0,CRX .TTYIN R0 ;GET 5 LOW-ORDER X-COORD BITS BIC #^B1111111111100000,R0 BIS R0,CRX .TTYIN R0 ;GET 5 HIGH-ORDER Y-COORD BITS BIC #^B1111111111100000,R0 ASH #5,R0 MOV R0,CRY .TTYIN R0 ;GET 5 LOW-ORDER X-COORD BITS BIC #^B1111111111100000,R0 BIS R0,CRY .TTYIN R0 ;CR-DISCARD .TTYIN R0 ;EOT-DISCARD .TTYOUT #7 ;7=BELL, CLEAR BYPASS .TTYOUT #33 ;ESC 2-RETURN TO TRANSPARENT (NORMAL) MODE .TTYOUT #62 ;62=2 MOV (SP)+,R0 RETURN MCR: .BYTE 33,61,33,32,200,0 ;33=ESC, 61=1 ENTER GT-100 GRAPHICS COMMANDS ;33=ESC, 32=SUB ENTER CROSSHAIR MODE .END