.TITLE PLSPLR SPOOLER FOR PLOTTER .IDENT /RJDK02/ ; BASED ON ANELEX & LA36 SPOOLERS .MCALL GET$,OFNB$R,MRKT$C,WTSE$C,FSRSZ$,FDBDF$,FDAT$A .MCALL FDOP$A,FDRC$A,GTSK$C,RCVX$C .MCALL ALUN$C .MCALL ASTX$S .MCALL FINIT$,RDAF$C,QIOW$C,QIO$C,WTLO$C .MCALL EXIT$S .MCALL GET$R,PUT$R,OPEN$M .MCALL CLEF$S .MCALL QIOW$S,CLOSE$,GTIM$C,GTSK$C .MCALL DELET$ ; PROGRAM TO SPOOL FILES TO THE PLOTTER ; ; CHANNEL 1 TI ; CHANNEL 2 PLOTTER - TT17: CURRENTLY ; CHANNEL 3 SY: FSRSZ$ 1 .EVEN INFDB: FDBDF$ FDRC$A ,RECBUF,132. FDOP$A 3,,,FO.RD!FA.SHR RECBUF: .BLKB 132. RECLEN: .WORD 0 START: .WORD 0 END: .WORD 0 OBF1: .BLKB 132. OLEN1: .WORD 0 RCVBUF: .BLKW 15. OPTR: .WORD OBF1 ERR: .WORD 0 X: .WORD 0 Y: .WORD 0 XPLOTD: .WORD 0 YPLOTD: .WORD 0 DX: .WORD 0 DY: .WORD 0 MSS5: .ASCIZ /PL.... -- NOT A PLOT FILE / .EVEN FLAGS: .WORD 0 RECNO: .WORD 0 RECPRI: .WORD 0 CFDB: FDBDF$ FDRC$A FD.RAN FDOP$A 3,CDSDS,,FO.MFY CDSDS: .WORD 4,CDEV,5,CUIC,12.,CFIL CDEV: .ASCII /SY0:/ CUIC: .ASCII /[1,7]/ CFIL: .ASCII /QUEUEMAN.SYS/ .EVEN .MCALL MRKT$S,WTSE$S BEGIN: FINIT$ SETI SETF ALUN$C 1,TI,0 ALUN$C 2,TT,17 QIOW$C IO.ATT,2,1 2$: OPEN$M #CFDB BCC 1$ MRKT$S #1,#5,#1 WTSE$S #1 BR 2$ 1$: NXTFIL: CLR RECPRI CLEF$S #55. CLR RECNO MOV #1,CFDB+F.RCNM+2 1$: GET$R #CFDB,#OBF1,#64. BCS 10$ MOV CFDB+F.NRBD+2,R5 CMP (R5),#<^RPL.> BNE 1$ CMP 4(R5),RECPRI BLO 1$ MOV 4(R5),RECPRI MOV CFDB+F.RCNM+2,RECNO BR 1$ 10$: TST RECNO BNE 11$ ;NO WORK -- EXIT CLOSE$ #CFDB EXIT$S 11$: DEC RECNO MOV RECNO,CFDB+F.RCNM+2 GET$R #CFDB,#OBF1,#64. DEC CFDB+F.RCNM+2 BIS #100000,OBF1+4 PUT$R #CFDB,#OBF1,#64. CLOSE$ ;HERE WITH DATA RECORD ;** HERE COPY FNB DATA TO INFDB+F.FNB MOV #INFDB+F.FNB,R0 MOV #OBF1+14,R1 MOV #10,R2 12$: MOV (R1)+,(R0)+ SOB R2,12$ CLR (R0)+ CLR (R0)+ MOV #5,R2 13$: MOV (R1)+,(R0)+ SOB R2,13$ MOV OBF1+10,FLAGS OFNB$R #INFDB ;READ ON SY: BCS 14$ ;NO GOOD GO TO NEXT FILE CLR RECLEN CALL PRINTF ;PRINT THE FILE TST FLAGS BMI 16$ CLOSE$ #INFDB ;CLOSE BR 14$ 16$: DELET$ #INFDB 14$: OPEN$M #CFDB BCC 29$ MRKT$S #1,#5,#1 WTSE$S #1 BR 14$ 29$: ;NOW NULL OUT RECORD.... MOV #OBF1,R5 MOV #32.,R4 17$: CLR (R5)+ SOB R4,17$ PUT$R #CFDB,#OBF1,#64.,RECNO JMP NXTFIL PRINTF: ;ROUTINE TO PRINT FILE AND HEADER CLR END MOV #RECBUF,START CALL PRINTL CALL PUTLIN RTS PC VEC: ;ROUTINE TO DRAW A VECTOR GIVEN X ,Y IN R0,R1 ;USES ALL REGISTERS ;R2 - AX ;R3 - AY ;R4 - VMAJ ;R5 - VMIN ;R3 IS OVERWRITTEN WITH M ;F0 =F ;F3 - N ;F2 - M MOV R0,R2 ;AX:=IABS(X) BGE 1$ NEG R2 1$: MOV R1,R3 ;AY:=IABS(Y) BGT 2$ NEG R3 BNE 2$ ;<>0 TST R2 BNE 2$ ;&AX<>0 RTS PC ;NO - RETURN 2$: CMP R2,R3 ;IF AX>AY BLE 4$ LDCIF R2,R2 ;GET M LDCIF R3,R3 ;GET N MOV R2,R3 ;SETUP M MOV #'P+40,R4 ;MAK VMAJ TST R0 BGT 5$ MOV #'T+40,R4 ;OR OTHER 3$: BR 5$ 4$: ;OR IF AX<=AY LDCIF R3,R2 LDCIF R2,R3 ;M ALREADY SETUP IN R3 MOV #'R+40,R4 TST R1 BGT 5$ MOV #'V+40,R4 5$: ;HAVE VMAJ IN R4 - M IN R3 ;F2 IS M F3 IS N MOV #4+CHRTBL,R5 TST R0 BEQ 11$ BGT 12$ SUB #3,R5 BR 11$ 12$: ADD #3,R5 11$: TST R1 BEQ 14$ BGT 15$ DEC R5 BR 14$ 15$: INC R5 14$: MOVB (R5),R5 LDF R2,R0 MULF #-0.5,R0 TST R1 BLT 16$ ADDF EMIN6,R0 BR 17$ 16$: SUBF EMIN6,R0 17$: ADDF R3,R0 TSTF R0 CFCC BGE 8$ MOV R4,R0 BR 9$ 8$: SUBF R2,R0 MOV R5,R0 9$: CALL PUTCH SOB R3,17$ RTS PC CHRTBL: .BYTE 165,164,163,166,0,162,167,160,161,0 EMIN6: .FLT2 1E-6 PUTCH: MOVB R0,@OPTR INC OPTR INC OLEN1 CMP OLEN1,#132. BEQ PUTLIN RTS PC PUTLIN: TST OLEN1 BEQ 1$ QIOW$S #IO.WAL,#2,#1,,,,<#OBF1,OLEN1,#0> 1$: CLR OLEN1 MOV #OBF1,OPTR RTS PC GTC: CMP START,END BLT 2$ CALL GETLIN BCC GTC SEC RTS PC 2$: ;HERE THERE IS A REAL CHARACTER IN THE BUFFER - PERHAPS ; RETURN IT IN R0 IF WE CAN ; MOVB @START,R0 INC START CLC RTS PC GETLIN: CLR RECLEN CLEF$S #55. TST @#$DSW BNE 9$ GET$ #INFDB,#RECBUF,#132. BCS 1$ MOV INFDB+F.NRBD,RECLEN MOV #RECBUF,START MOV #RECBUF,END ADD RECLEN,END CLC 1$: RTS PC 9$: SEC RTS PC TYPEIT: MOV R1,-(SP) MOV R0,R1 1$: TSTB (R1)+ BNE 1$ DEC R1 SUB R0,R1 QIOW$S #IO.WBT,#1,#1,,,, MOV (SP)+,R1 RTS PC PEN: CALL PUTCH MOV #7,R2 CLR R0 1$: CALL PUTCH SOB R2,1$ BR PRINTL PENUP: MOV #'X+40,R0 BR PEN PENDWN: MOV #'Y+40,R0 BR PEN SHORT: MOV #DX,R1 CALL GTC MOV R0,(R1)+ CALL GTC MOV R0,(R1)+ SVEC: ADD DX,X ADD DY,Y MOV DX,R0 MOV DY,R1 CALL VEC BR PRINTL LONG: MOV #DX,R1 MOV #4,R2 1$: CALL GTC MOVB R0,(R1)+ SOB R2,1$ BR SVEC PRINTL: CALL GTC BCC 4$ 3$: RTS PC 4$: CMP R0,#177 BNE PRINTE CLR ERR CALL GTC BCS 3$ BIC #177640,R0 CMP R0,#'L BEQ LONG CMP R0,#'S BEQ SHORT CMP R0,#'U BEQ PENUP CMP R0,#'D BEQ PENDWN CMP R0,#'C BEQ CHPENS CMP R0,#'M BEQ PRINTL ;NOT IMPLEMENTED YET PRINTE: INC ERR CMP ERR,#30 BNE PRINTL MOV #MSS5,R0 CALL TYPEIT CLR OLEN1 MOV #OBF1,OPTR RTS PC CHPENS: call gtc ;pen number BR PRINTL ;AND GO AGAIN .END BEGIN