.TITLE TTPOOL ; WRITTEN BY: FRANK PENNER ; THIS PROGRAM WILL DISPLAY THE NUMBER OF FREE ; BUFFERS IN THE RSX-11M V32. FULL DUPLEX TERMINAL DRIVER ; TO USE JUST RUN TTPOOL .MCALL EXIT$S,QIOW$,DIR$ .MCALL PCBDF$ PCBDF$ ;DEFINE PCB OFFSETS 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 UISAR0 =177640 ;DEFINE SYMBOL FOR USER APR 0 UISAR1 =177642 ;DEFINE SYMBOL FOR USER APR 1 SAVEM0: .BLKW 1 ;SPACE TO SAVE APR 0 SAVEM1: .BLKW 1 ;SPACE TO SAVE APR 1 .EVEN START: ;SEARCH PARTITION LIST FOR TTPAR MOV $PARHD,R0 ;POINT TO FIRST PCB IN LIST 10$: CMP P.NAM(R0),#^RTTP ;FIRST HALF OF NAME MATCH ? BNE 20$ ;IF NE NO CMP P.NAM+2(R0),#^RAR ;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 TTPAR SO GIVE UP 30$: ;FOUND IT MOV @#UISAR0,SAVEM0 ;SAVE MEMORY MANAGEMENT REGS MOV @#UISAR1,SAVEM1 ;SAVE MEMORY MANAGEMENT REGS MOVB #1,$CXDBL ;DISABLE CONTEXT SWITCHING MOV P.REL(R0),R1 ;PUT PHYSICAL ADDRES OF TT: IN R1 MOV R1,@#UISAR0 ;REMAP TO TT DRV PAR ADD #200,R1 ;NEXT APR MOV R1,@#UISAR1 ;REMAP TO TT DRV PAR 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 -120000(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 SAVEM0,@#UISAR0 ;RESTORE MAPPING MOV SAVEM1,@#UISAR1 ;RESTORE MAPPING 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