.TITLE LASPLR SPOOLER FOR LA36 .IDENT /RJDK02/ .MCALL GET$R,PUT$R,OPEN$M .MCALL GET$,OFNB$R,MRKT$C,WTSE$C,FSRSZ$,FDBDF$,FDAT$A .MCALL FDOP$A,FDRC$A,GTSK$C,RCVX$C .MCALL EXIT$S .MCALL FINIT$,RDAF$C,QIOW$C,QIO$C,WTLO$C .MCALL DELET$ .MCALL QIOW$S,CLOSE$,GTIM$C,GTSK$C ; PROGRAM TO SPOOL FILES TO THE LA36 ; ; ; ; CHANNEL 1 TI ; CHANNEL 2 TT6 ; CHANNEL 3 SY: FSRSZ$ 1 .EVEN FLAGS: .WORD 0 INFDB: FDBDF$ FDRC$A ,RECBUF,140. FDOP$A 3,,,FO.RD!FA.SHR OBUF: .BLKB 134. OPTR: .WORD OBUF OLEN: .WORD 0 LINCNT: .WORD 0 RECBUF: .BLKB 140. .WORD 0 RECLEN: .WORD 0 START: .WORD 0 END: .WORD 0 TMPBUF: .BLKW 16. SPRREC: .BLKB 64. 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 WTSE$S,MRKT$S BEGIN: FINIT$ QIOW$C IO.ATT,2,1 1$: OPEN$M #CFDB ;OPEN CONTROL BCC NXTFIL MRKT$S #1,#5,#1 WTSE$S #1 BR 1$ NXTFIL: CLR RECPRI CLR RECNO MOV #1,CFDB+F.RCNM+2 1$: GET$R #CFDB,#SPRREC,#64. BCS 10$ MOV CFDB+F.NRBD+2,R5 CMP (R5),#<^RLA.> 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,#SPRREC,#64. DEC CFDB+F.RCNM+2 BIS #100000,SPRREC+4 PUT$R #CFDB,#SPRREC,#64. CLOSE$ ;HERE WITH DATA RECORD ;** HERE COPY FNB DATA TO INFDB+F.FNB MOV #INFDB+F.FNB,R0 MOV #SPRREC+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 SPRREC+10,FLAGS OFNB$R #INFDB ;READ ON SY: BCS EOFIL ;NO GOOD GO TO NEXT FILE CLR LINCNT CLR RECLEN CALL PRINTF ;PRINT THE FILE TST FLAGS BMI 14$ CLOSE$ #INFDB ;CLOSE BR EOFIL ;AND TO NEXT 14$: DELET$ #INFDB EOFIL: OPEN$M #CFDB BCC 11$ MRKT$S #1,#5,#1 WTSE$S #1 BR EOFIL 11$: ;NOW NULL OUT RECORD.... MOV #SPRREC,R5 MOV #32.,R4 1$: CLR (R5)+ SOB R4,1$ PUT$R #CFDB,#SPRREC,#64.,RECNO JMP NXTFIL PRINTF: ;ROUTINE TO PRINT FILE AND HEADER MOV #RECBUF,R0 MOV R0,START MOVB #15,(R0)+ MOV #40,R3 2$: MOVB #'*,(R0)+ SOB R3,2$ MOVB #' ,(R0)+ MOV SPRREC+6,R3 MOV R0,R2 MOV #1,R4 CALL .PPASC MOV R2,R0 MOVB #40,(R0)+ MOV #SPRREC+38.,R1 MOV #26.,R2 1$: MOVB (R1)+,(R0)+ SOB R2,1$ MOVB #' ,(R0)+ GTIM$C TMPBUF MOVB #'O,(R0)+ MOVB #'N,(R0)+ MOVB #' ,(R0)+ MOV #TMPBUF,R1 CALL $DAT MOV #3,R2 MOVB #' ,(R0)+ MOVB #'A,(R0)+ MOVB #'T,(R0)+ MOVB #' ,(R0)+ CALL $TIM MOVB #' ,(R0)+ MOV #40,R3 3$: MOVB #'*,(R0)+ SOB R3,3$ MOVB #15,(R0)+ MOVB #12,(R0)+ MOV R0,END SUB START,END MOV #1,LINCNT QIOW$S #IO.CCO,#2,#1,,,,<#RECBUF,END> CALL PRINTL RTS PC GETLIN: ;ROUTINE TO READ NEW RECORD INTO RECBUF APPENDING LF IF NEEDED CLR RECLEN GET$ #INFDB BCS 10$ MOV INFDB+F.NRBD,RECLEN MOV #RECBUF,START MOV START,END ADD RECLEN,END CMPB INFDB+F.RATT,#FD.FTN BEQ 7$ CMPB INFDB+F.RATT,#FD.CR BNE 8$ MOVB #15,@END INC END MOVB #12,@END INC END BR 9$ 7$: MOV #RECBUF,R0 MOVB (R0),R1 CMPB R1,#'1 BNE 1$ MOVB #14,(R0) BR 5$ 1$: CMPB R1,#'+ BNE 2$ MOVB #15,(R0) BR 5$ 2$: MOVB #12,(R0) 5$: MOVB #15,@END INC END 8$: 9$: CLC 10$: RTS PC GETC: CMP START,END BLO 2$ CALL GETLIN BCC GETC MOV #14,R0 SEC RTS PC 2$: MOVB @START,R0 INC START CLC RTS PC PUTC: MOVB R0,@OPTR INC OPTR CMP OPTR,#OBUF+134. BEQ PUTLIN CMP R0,#15 BEQ PUTLIN RTS PC PUTLIN: MOV OPTR,OLEN SUB #OBUF,OLEN BEQ 1$ QIOW$S #IO.WLB,#2,#2,,,,<#OBUF,OLEN,#0> 1$: CLR OLEN MOV #OBUF,OPTR RTS PC PUTEOP: CMP LINCNT,#2 BLOS 7$ BIT #20000,FLAGS BNE 7$ MOV #12,R0 CMP LINCNT,#66. BEQ 6$ INC LINCNT CALL PUTC BR PUTEOP 6$: CLR LINCNT 7$: CALL PUTLIN RTS PC PRINTL: CALL GETC BCS 1$ CMP R0,#14 BGT 2$ BEQ 3$ CMP R0,#12 BEQ 4$ BGT 5$ 2$: CALL PUTC BR PRINTL 4$: MOV #1,R1 BR 6$ 5$: MOV #4,R1 6$: CMP LINCNT,#62. BEQ 3$ MOV #12,R0 CALL PUTC INC LINCNT SOB R1,6$ BR PRINTL 3$: CALL PUTEOP BR PRINTL 1$: CALL PUTEOP RTS PC .END BEGIN