.TITLE EXSRV - RANDOM EXEC SERVICES FOR TECOIO .IDENT "X0212" ; ; COPYRIGHT (C) 1976 BY DIGITAL EQUIPMENT CORPORATION, ; MAYNARD, MASSACHUSETTS ; ; THIS SOFTWARE IS FURNISHED UNDER A LICENSE FOR USE ONLY ON A ; SINGLE COMPUTER SYSTEM AND MAY BE COPIED ONLY WITH THE IN- ; CLUSION 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 DIGITAL. ; ; THE INFORMATION IN THIS SOFTWARE IS SUBJECT TO CHANGE WITH- ; OUT NOTICE AND SHOULD NOT BE CONSTRUED AS A COMMITMENT BY ; DIGITAL EQUIPMENT CORPORATION. ; ; DIGITAL EQUIPMENT CORPORATION ASSUMES NO RESPONSIBILITY FOR ; THE USE OR RELIABILITY OF ITS SOFTWARE ON EQUIPMENT WHICH IS ; NOT SUPPLIED BY DIGITAL. ; ; ANDREW C. GOLDSTEIN 7-MAR-78 23:11 ; MARK H. BRAMHALL 25-MAR-79 18:17 .MCALL EXRG$S,GTIM$C,GSSW$S .SBTTL SIZER - EXPAND MEMORY IF POSSIBLE .PSECT PURE,RO,D ; ; MEMORY ALLOCATION MESSAGE ; CORMSG: .ASCII "K bytes]"<15><12> CORMSL = .-CORMSG .EVEN ;+ ; ; *** - SIZER EXPAND MEMORY IF POSSIBLE ; ; THIS ROUTINE EXPANDS THE AMOUNT OF MEMORY USED BY TECO. THE ; AMOUNT OF MEMORY ALLOCATED (IF ANY) IS LEFT IN CURFRE(R5). ; ; INPUTS: ; ; R1 = MINIMUM AMOUNT TO ALLOCATE ; ; OUTPUTS: ; ; C=0 IF SUCCESSFUL, C=1 IF FAILED ; CURFRE(R5) UPDATED IF SUCCESSFUL ; ; ALL REGISTERS PRESERVED ; ;- .PSECT CODE,RO,I SIZER:: SAVE ADD #1777,R1 ; ROUND UP TO 1K BYTE BOUNDARY BIC #1777,R1 MOV R1,R2 ; SAVE # BYTES ASR R1 ; FIND # 32WD HUNKS (DIVIDE BY 64) ASR R1 ASR R1 ASR R1 ASR R1 ASR R1 EXRG$S R1 ; ASK FOR SPACE BCS 30$ ; BRANCH ON ANY ERROR, EXIT C=1 ADD R2,CURFRE(R5) ; STORE SIZE FOR TECO ADD R2,CORSIZ ; ACCUMULATE TOTAL SIZE BIT #ET.DET!ET.EXI,ETYPE(R5) ; SEE IF MESSAGES INHIBITED BNE 20$ ; BRANCH IF YES, BUT GO EXIT C=0 MOV #STRING,R0 ; GET STRING BUFFER MOVB #'[,(R0)+ ; START MESSAGE MOV CORSIZ,R1 ; GET TOTAL SIZE CLRB R1 SWAB R1 ; CONVERT TO # OF K BYTES ASR R1 ASR R1 CLR R2 CALL $CBDMG ; CONVERT TO DECIMAL STRING MOV #CORMSG,R1 ; GET REST OF MESSAGE MOV #CORMSL,R2 10$: MOVB (R1)+,(R0)+ SOB R2,10$ MOV #STRING,R3 ; START OF MESSAGE MOV R0,R4 ; END SUB R3,R4 ; COMPUTE BYTE COUNT CALL PRINTC ; OUTPUT TO TERMINAL BIS #1,OUTDNE(R5) ; INDICATE MEMORY MESSAGE OUTPUT (+1) 20$: CLC ; C=0 FOR MEMORY ALLOCATED 30$: RETURN .SBTTL SYSTEM DATE ROUTINE ;+ ; ; *** - DATE GET SYSTEM DATE ; ; THIS ROUTINE RETURNS THE DATE FROM THE SYSTEM IN A ONE WORD ; NUMERICALLY USEFUL FORM. BITS 0-4 CONTAIN THE DAY, BITS 5-8 CONTAIN ; THE MONTH, AND BITS 9-15 CONTAIN THE YEAR-1900. ; ; INPUTS: NONE ; ; OUTPUTS: ; ; R0 = DATE WORD ; ; ALL OTHER REGISTERS ARE PRESERVED. ; ;- DATE:: SAVE GTIM$C TIMBUF,CODE ; GET TIME PARAMETERS FROM RSX BCS DIRERR MOV TIMBUF+G.TIYR,R0 ; GET YEAR SWAB R0 ; INTO HIGH ORDER BIS TIMBUF+G.TIMO,R0 ; GET MONTH ASLB R0 ASLB R0 ASLB R0 ASLB R0 ASL R0 ; ALIGN YEAR AND MONTH BIS TIMBUF+G.TIDA,R0 ; AND GET DAY MOV R0,SR0(SP) ; PUT IN CALLER'S R0 RETURN RETURN .SBTTL SYSTEM TIME ROUTINE ;+ ; ; *** - TIME GET SYSTEM TIME ; ; THIS ROUTINE RETURNS THE TIME OF DAY FROM THE SYSTEM IN A ONE ; WORD NUMERICALLY USEFUL FORM. TIME IS RETURNED AS HALF ; THE NUMBER OF SECONDS SINCE MIDNIGHT. TOO BAD IT CAN'T BE JUST SECONDS, ; BUT THE NUMBER OF SECONDS IN A DAY IS GREATER THAN 16 BITS. ; ; INPUTS: NONE ; ; OUTPUTS: ; ; R0 = TIME WORD ; ; ALL OTHER REGISTERS ARE PRESERVED. ; ;- TIME:: SAVE GTIM$C TIMBUF,CODE ; GET TIME FROM RSX SYSTEM BCS DIRERR CLR R0 MOV TIMBUF+G.TIHR,R1 ; GET HOURS ASL R1 ; *16 ASL R1 ASL R1 ASL R1 SUB TIMBUF+G.TIHR,R1 ; *15 ASL R1 ; *60 ASL R1 ADD TIMBUF+G.TIMI,R1 ; ADD IN MINUTES MOV R1,-(SP) ASL R1 ; *16 ASL R1 ASL R1 ASL R1 SUB (SP)+,R1 ; *15 ASL R1 ; *60 ASL R1 ROL R0 ; CARRY ADD TIMBUF+G.TISC,R1 ; ADD IN SECONDS ADC R0 ROR R0 ; DIVIDE BY 2 ROR R1 MOV R1,SR0(SP) ; PUT IN CALLER'S RETURN REGISTER RETURN .SBTTL GET CONSOLE SWITCHES ROUTINE ;+ ; ; *** - SWITCH GET CONSOLE SWITCHES ; ; THIS ROUTINE RETURNS THE CONSOLE SWITCHES TO THE CALLING PROGRAM. ; ; INPUTS: NONE ; ; OUTPUTS: ; ; R0 = SWITCH WORD ; ; ALL OTHER REGISTERS ARE PRESERVED. ; ;- SWITCH:: SAVE GSSW$S ; GET SWITCH SETTING FROM RSX BCS DIRERR MOV @#$DSW,SR0(SP) ; GET VALUE FROM DSW RETURN ; ; TO HERE ON DIRECTIVE ERROR ; DIRERR: JMP SYSERR .SBTTL NULL ROUTINES ;+ ; ; THESE ARE ENTRIES REQUIRED IN THE TECOIO PACKAGE THAT HAVE NO MEANING ; UNDER RSX-11. THEY ARE APPROPRIATELY NO-OP'ED. ; ;- ;+ ; ; *** - STOPON HANDLE CONTROL C TRAP ; ; THIS ROUTINE IS CALLED TO ALLOW NON-AST SYSTEMS TO HANDLE CONTROL C TRAPS. ; ;- STOPON:: XITNOW:: ; DE-CONDITION TTY CLC RETURN .END