.MCALL .MODULE .MODULE VTCAL1,VERSION=03,COMMENT=,GLOBAL=.VTCL1 ; Copyright (c) 1998 by Mentec, Inc., Nashua, NH. ; All rights reserved ; ; This software is furnished under a license for use only on a ; single computer system and may be copied only with the ; inclusion of the above copyright notice. This software, or ; any other copies thereof, may not be provided or otherwise ; made available to any other person except for use on such ; system and to one who agrees to these license terms. Title ; to and ownership of the software shall at all times remain ; in Mentec, Inc. ; ; The information in this document is subject to change without ; notice and should not be construed as a commitment by Digital ; Equipment Corporation, or Mentec, Inc. ; ; Digital and Mentec assume no responsibility for the use or ; reliability of its software on equipment which is not supplied ; by Digital or Mentec, and listed in the Software Product ; Description. ; Edit History: ; ; 003 14-Jun-1991 WFG ; ACTION #7479, Add GLOBAL=.VTCL1 to fix RESORC display ; .SBTTL INITIALIZATION (CLEAR) ROUTINE .ENABL GBL ; THIS ROUTINE CLEANS UP THE HANDLER AND RESETS COUNTERS AND ; POINTERS. IT REMOVES ALL CALLS TO USER FILES AND THE TRACK OBJECT. DJMP=160000 ;DISPLAY JUMP .PSECT $GT1 .IF DF NOTAG!NOLPEN NOTRAK=1 .ENDC .IF DF NORT11 NOLINK=1 .ENDC $VINIT::MOV R1,-(SP) JSR PC,$VSTP ;STOP THE DISPLAY MOV #$CUSER,R1 ;POINT TO FIRST USER CALL 1$: JSR PC,$VFDEL ;DELETE THE FILE .IF NDF NOUSER CMP #$NULL,R1 ;END OF USER AREA? BHI 1$ ;NO, CONTINUE. .ENDC .IF NDF NOTRAK MOV #DJMP,$CTRAK ;BYPASS TRACK OBJECT CLR $TRAKC ;CLEAR COMPLETION ADDR .ENDC .IF NDF NONAME CLR $NRBUF ;CLEAR NAME STACK BUFR PTR .ENDC .IF NDF NOSTAT CLR $TATBF ;CLEAR BUFFER POINTERS CLR $LPBUF ;CLEAR LP BUFR PTR .ENDC CLR $NR ;CLEAR NAME REGISTER CEXIT: MOV (SP)+,R1 BR STXIT .SBTTL FILE DELETE SUBROUTINE ; $VFDEL -- UTILITY SUBROUTINE FOR INTERNAL USE. ; THIS SUBROUTINE DELETES A CALL TO A USER DISPLAY FILE ; BY REMOVING BOTH THE DJSR CALL AND THE FILE ADDRESS. DJMP=160000 $VFDEL:: .IF NDF NOTAG MOV #DJMP,(R1)+ ;REMOVE THE DJSR CALL .ENDC TST (R1)+ ;POINT TO FILE ADDR. MOV #$NULL,(R1)+ ;AND NULL IT OUT RTS PC .SBTTL EXTERNAL DISPLAY STOP ROUTINE ; STOPS THE DISPLAY, RETURNS WHEN ACCOMPLISHED. SERVICES THE .STOP REQUEST. ; THE DPU IS ACTUALLY STOPPED ONLY WHEN NOLINK IS DEFINED. IN ALL OTHER ; CASES ALL USER FILES ARE BY-PASSED TO SIMULATEA STOP. $VSTOP:: .IF NDF NOLINK JSR PC,$VSTP ;STOP THE DISPLAY MOV #$NULL,$BYPAS ;INSERT BYPASS OF USER BR STXIT ;THEN START DPU & EXIT .IFF JMP $VSTP ;STOP DISPLAY .ENDC .SBTTL INSERT A FILE ROUTINE ; THIS ROUTINE INSERTS A USER DISPLAY FILE INTO THE DISPLAY ; LOOP BY INSERTING A SUBROUTINE CALL TO THE FILE. IF AN EMPTY ; SLOT IS NOT FOUND, THE REQUEST IS IGNORED AND C IS SET DJSR=173400 $VNSRT::MOV R1,-(SP) .IF DF NOTAG JSR PC,$VSTP ;STOP DPU FIRST .ENDC .IF DF NOUSER MOV #$CUSER,R1 ;POINT TO USER CALL MOV R0,-(SP) ;PUSH ADDR ON STACK .IFF JSR PC,$VSRCH ;SEE IF ALREADY THERE. TST R1 ;R1 RETURNS NON-ZERO IF BNE CENBL ;ALREADY IN ROOT. MOV R0,-(SP) ;SAVE FILE ADDR. TEMP. MOV #$NULL,R0 ;NOT THERE SO FIND EMPTY JSR PC,$VSRCH ;SLOT TO PUT IT IN. TST R1 ;FOUND A SLOT? BEQ IEXIT ;NO, SEND MESG. .ENDC .IF NDF NOTAG MOV (SP)+,4(R1) ;YES, INSERT FILE ADDR. .IFF MOV (SP)+,2(R1) ;INSERT FILE ADDR. .ENDC CENBL: MOV #DJSR,(R1) ;THEN A CALL. IEXIT: MOV (SP)+,R1 .IF DF NOTAG BR STXIT ;START DPU & EXIT .IFF RTS PC .ENDC .SBTTL REMOVE A FILE ROUTINE ; THIS ROUTINE REMOVES THE CALL TO A USER DISPLAY FILE FROM ; THE ROOT FILE. IT CAN NOT LATER BE RECOVERED. $VRMOV::MOV R1,-(SP) .IF DF NOTAG JSR PC,$VSTP ;STOP DISPLAY FIRST .ENDC .IF DF NOUSER MOV #$CUSER,R1 ;POINT R1 TO CALL .IFF JSR PC,$VSRCH ;SEARCH FOR CALL TO FILE. TST R1 ;R1 WILL BE ZERO IF IT BEQ IEXIT ;WASN'T FOUND. .ENDC JSR PC,$VFDEL ;FOUND, SO DELETE IT BR IEXIT .SBTTL DISPLAY START ROUTINE ; THIS ROUTINE CAUSES THE DISPLAY PROCESSOR TO START OPERATION. $VSTRT:: .IF NDF NOLINK JSR PC,$VSTP ;STOP DISPLAY MOV #$CTRAK,$BYPAS ;REMOVE BYPASS .ENDC STXIT: JMP $VSTIN ;INIT STACK AND START .END