.TITLE PSEUDO .ENABL LC ; ; These subroutines assign a logical unit number to a ; terminal and sets the various device dependent ; parameters as required. The calls are as follows: ; ; CALL "NAME" "ARGUMENTS" where, ; ; NAME: PSEUDO ; PSUEDO - for those of us who cann't spell ; PLOTTO - for compatability with Jack ; ; ARGUMENTS: NONE assigns LUN=5 to TI0: ; (LUN) assigns LUN to TI0: ; (LUN,n) assigns LUN to TTn: ; (LUN,DEV,NCHRS) assigns LUN to device ; specified by character ; string DEV ; ; .PSECT PSEUDO .GLOBL PSEUDO,PSUEDO,PLOTTO,.MOLUN .MCALL ALUN$S,GLUN$S,QIOW$S ; PSEUDO: ; PSUEDO: ;ENTRY POINTS PLOTTO: ; TST ILun ;REASSIGNING PLOTTER? BEQ B ;BRANCH IF NOT CMP #10,IFancy ;SET AS NOT AN ACTIVE FILE BNE B ;BRANCH IF SO MOV R5,-(SP) ;SAVE R5 MOV #LIST0,R5 ;SET ARGUMENT LIST FOR CLOSE JSR PC,CLOSE ;CLOSE FILE MOV (SP)+,R5 ;RESTORE R5 ; B: CMP (R5),#1 ;HOW MANY ARGUMENTS? BLT B0 ;BRANCH IF NONE TO B0 BGT B2 ;BRANCH IF TWO TO B2 ; MOV @2(R5),ILun ;GET SPECIFIED LUN MOV #"TI,DEVICE ;SET DEFAULT DEVICE CLR UNIT ;SET DEFAULT UNIT BR DOIT ;BRANCH TO ASSIGN LUN ; B0: MOV #5,ILun ;SET DEFAULT LUN MOV #"TI,DEVICE ;SET DEFAULT DEVICE CLR UNIT ;SET DEFAULT UNIT BR DOIT ;BRANCH TO ASSIGN LUN ; B2: MOV @2(R5),ILun ;GET SPECIFIED LUN CMP (R5),#3 ;THREE ARGUMENTS? BEQ B3 ;BRANCH IF TRUE MOV #"TT,DEVICE ;SET GENERAL TERMINAL MOV @4(R5),UNIT ;SET SPECIFIED UNIT BR DOIT ;BRANCH TO ASSIGN LUN ; B3: JSR PC,ASSIGN ;ASSIGN LOGICAL UNIT NUMBER BR DONEIT ;BRANCH TO GET LUN INFO ; DOIT: ALUN$S ILun,DEVICE,UNIT;ASSIGN LOGICAL UNIT NUMBER DONEIT: GLUN$S ILun,#BUFFER ;GET DEVICE INFORMATION ; CMP #"TT,BUFFER ;TERMINAL DEVICE? BNE NOPLOT ;BRANCH IF NOT ; MOVB BYTE3,R0 ;GET UNIT NUMBER BIC #177400,R0 ;MASK OFF JUNK MOV R0,IsTerm ;SET TERMINAL NUMBER CMP R0,Higterm ;IS IT GREATER THAN MAX PLOTTING TERMINAL ;NUMBER BGT NOPLOT ;YES, DON'T TRY TO PLOT ASL R0 ;MULTIPLY BY TWO MOV TYPE(R0),IDev ;SET DEVICE TYPE BNE FILL ;BRANCH IF ACCEPTABLE ; NOPLOT: CLR ILun ;SET ILun=0 MOV #1,IDev ;SET ARTIFICAL DEVICE TYPE QIOW$S #IO.WLB,.MOLUN,#1,,,,<#MSG,NCHRS,#60> ; FILL: MOV IDev,R0 ;GET DEVICE CODE DEC R0 ;REMOVE OFFSET ASL R0 ;MULTIPLY BY TWO MOV CODE(R0),R0 ;ADDRESS PROPER DATA BLOCK MOV (R0)+,IXMax ;SET MAXIMUM X COORDINATE MOV (R0)+,IYMax ;SET MAXIMUM Y COORDINATE MOV (R0)+,Cnvrsn ;SET CONVERSION FACTOR MOV (R0),Cnvrsn+2 ; CONT. MOV Cnvrsn,CnvMag ;SET SCALED CONVERSION FACTOR MOV Cnvrsn+2,CnvMag+2 ; CONT. CLR KSetNo ;DEFAULT CHARACTER SET ; MOV R5,-(SP) ;SAVE R5 CMP #3,IDEV ;TEKTRONIX 4662? BNE 1$ ;BRANCH IF NOT MOV #100.,IBFDV3 ;ALLOW RESET TO BE OUTPUT FIRST MOV #LIST1,R5 ;SET ARGUMENT LIST FOR RESET JSR PC,TOUTPT ;RESET CLR IBFDV3 ;CLEAR INPUT BUFFER COUNT 1$: MOV #LIST2,R5 ;SET ARGUMENT LIST FOR ERASE JSR PC,ERASE ;ERASE PLOTTER MOV (SP)+,R5 ;RESTORE R5 BIC #100000,IFancy ;SET TO REQUEST CHARACTER GEN. TASK RTS PC ;RETURN ; DEVICE: .WORD 0 ;DEVICE LOCATION UNIT: .WORD 0 ;UNIT LOCATION BUFFER: .BLKB 2 ;BUFFER FOR LUN INFORMATION BYTE3: .BYTE 0 ;UNIT NUMBER .BLKB 9. ;REMAINDER OF BUFFER ;****************************************************************** ; ; Must also change buffer assignments in HCS. These are located in ; GEBUDA.MAC at BUFNUM:. And the table of magnification factors in HCMAG. ; ;****************************************************************** CODE: .WORD IDev1,IDev2,IDev3,IDEV4;ADDRESS OF DATA BLOCKS IDev1: .WORD 1023.,767. ;TEKTRONIC 4010 .FLT2 136.4 ; IDev2: .WORD 4095.,3071. ;TEKTRONIC 4014 .FLT2 300. ; IDev3: .WORD 4095.,3124. ;TEKTRONIC 4662 .FLT2 312.1186 ; IDEV4: .WORD 1023.,767. ;TEKTRONIC 4025 .FLT2 121.771 LIST0: .WORD 1,ILUN ;ARGUMENT LIST FOR CLOSE LIST1: .WORD 2,RESET,THREE ;ARGUMENT LIST FOR TOUTPT RESET: .ASCII <33>/AN/ ; A N .EVEN THREE: .WORD 3 ; LIST2: .WORD 0 ;ARGUMENT LIST FOR ERASE MSG: .ASCII /Plotting being disabled, improper plotting device./<7> .EVEN NCHRS: .WORD NCHRS-MSG ;LENGTH OF MESSAGE ; .PSECT TYPE,RW,GBL,OVR,D,REL Higterm:.BLKW 1 ;maximum terminal number TYPE: .BLKW 1 ;table of terminal types