.TITLE TTPOOL ; WRITTEN BY: Frank Penner ; ; Modified for MPLUS BY J.Goodman 18-JUL-83 ; ; This program will display the number of free ; buffers in the RSX-11MPLUS V2.1 FULL DUPLEX TERMINAL DRIVER ; To use just RUN TTPOOL ; .MCALL EXIT$S,QIOW$,DIR$ .MCALL PCBDF$,HWDDF$ PCBDF$ ;DEFINE PCB OFFSETS HWDDF$ ;DEFINE HARDWARD OFFSETS FOR MEM. MAP REGISTERS INPUT: QIOW$ IO.RLB,LUN,EFN,,IOSTAT,, OUTPUT: QIOW$ IO.WLB,LUN,EFN,,IOSTAT,, IOSTAT: .WORD 0 .WORD 0 EFN =1 ;EVENT FLAG NUMBER LUN =5 ;DEFAULT LUN FOR TERMINAL VFC =40 INBUF: .BLKB 132. OUTBUF: .ASCII / IS THE NUMBER OF FREE TT POOL BUFFERS/ OUTBUS=.-OUTBUF .EVEN SAVEM6: .BLKW 1 ;SPACE TO SAVE APR 6 SAVD6: .BLKW 1 ;SAVE PDR FOR APR 6 .EVEN START: ;SEARCH PARTITION LIST FOR DRVPAR MOV $PARHD,R0 ;POINT TO FIRST PCB IN LIST 10$: CMP P.NAM(R0),#^RDRV ;FIRST HALF OF NAME MATCH ? BNE 20$ ;IF NE NO CMP P.NAM+2(R0),#^RPAR ;SECOND HALF OF NAME MATCH ? BEQ 30$ ;IF EQUALS YES 20$: MOV P.LNK(R0),R0 ;GET LINK TO NEXT PCB TST R0 ;NULL LINK? BNE 10$ ;IF NOT EQUALS NO BR EXIT ;CAN'T FIND DRVPAR SO GIVE UP 30$: ;FOUND IT MOV P.SUB(R0),R0 ;POINT TO NEXT SUBPARTITION TST R0 ;NULL LINK? BEQ EXIT ;YES, GIVE UP CMP P.NAM(R0),#^RTTC ;FIRST HALF OF SUB PAR NAME MATCH BNE 30$ ;NO MATCH, GET NEXT SUB PARTITION CMP P.NAM+2(R0),#^ROM ;SECOND HALF OF SUB PAR NAME MATCH BNE 30$ ;NO MATCH, GET NEXT SUB PAR ; ; ITS A MATCH! MOV @#UISAR6,SAVEM6 ;SAVE MEMORY MANAGEMENT REGS MOV @#UISDR6,SAVD6 ;SAVE PDR ALSO MOVB #1,$CXDBL ;DISABLE CONTEXT SWITCHING MOV P.REL(R0),R1 ;PUT PHYSICAL ADDRES OF TT: IN R1 MOV R1,@#UISAR6 ;REMAP TO TTCOM ( DRV PAR) MOV @#UISDR1,@#UISDR6 ;ASSUME USER PDR 1 MAPPING FULL 4K ; AND USE IT TO COPY TO USER PDR 6 CLR R1 ;USE R1 TO TALLY FREE BUFFER COUNT MOV #FREEB,R3 ;PUT ADDRESS OF FREE BUFFER LIST PTR BEQ 2$ ;IF NULL, NO FREE BUFFERS 1$: INC R1 ;INCREMENT TALLY OF FREE BUFFERS MOV (R3),R3 ;POINT TO NEXT FREE BUF IN LIST BNE 1$ ;IF NOT NULL; DO NEXT BUF IN LIST 2$: ;THAT'S ALL FOLKS MOV SAVEM6,@#UISAR6 ;RESTORE MAPPING MOV SAVD6,@#UISDR6 ;RESTORE USER PDR 6 CLRB $CXDBL ;RENABLE CONTEXT SWITCHING MOV #OUTBUF,R0 ;PUT ADDRESS OF OUTPUT IN R0 CLR R2 ;SUP 0 CALL $CBDMG ;CALL BINARY TO ASCII CONV ROUTINE DIR$ #OUTPUT ;PRINT IT OUT EXIT: EXIT$S .END START