.MCALL .MODULE .MODULE GACWK,RELEASE=V00,VERSION=30,COMMENT= .ENABLE LC .NLIST CND ;+ ;************************************************************************ ;*.ST ACTIVATE WORKSTATION * ;*.PAGE * ;*.X ACTIVATE * ;*.X WORKSTATION * ;*.X GACWK * ;*.LIT * ;************************************************************************ ;* * ;* FORTRAN calling sequence: * ;* SUBROUTINE GACWK (WKID) * ;* * ;* Input parameters: * ;* INTEGER WKID workstation identifier * ;* * ;************************************************************************ ;*.ELI * ;************************************************************************ ;- .LIBRARY /GKS.MLB/ .MCALL $GKS $GKS .LIBRARY /CGI.MLB/ .MCALL $CGI $CGI .LIBRARY /UTL.MLB/ .MCALL $UTL $UTL .MCALL .ENTER .NLIST .INCLUDE /GOPSTA.INC/ .INCLUDE /GKSSL.INC/ .INCLUDE /WSSL.INC/ .INCLUDE /CGIVTD.INC/ .INCLUDE /GERROR.INC/ .LIST ; Workstation ID .PSECT G$$COD,RW,I,LCL,REL,CON GACWK:: BIT G$OPST,#GKOP ; What is the state of GKS? BNE 10$ ; Branch if its open. HALT ; Error. 10$: BIS #WSAC,G$OPST ; Set the WorkStation active bit. 20$: MOV @2(R5),R1 ; Get the workstation ID. DEC R1 ; Change (1 - N) to (0 - N-1) MOV R1,R3 ASL R3 ; Convert byte to word addressing. MOV GS.SAW,R2 ; Get the address of the set of active ; workstations. INC (R2)+ ; Increment the number of active workstations. ADD R3,R2 MOV @2(R5),@R2 ; Save the workstation ID. RTS PC .END