ASMB,R,L,C HED "PRMPT" AMD SESSION ATTENTION ROUTINE 9-76 (DLB) *9-7 NAM PRMPT,2,1 PRE-REL 7-29-76 (DLB) *10-5 NAM PRMPT,2,1 PRE-REL 9-13-76 (DLB) *10-10 NAM PRMPT,2,1 PRE-REL 10-5-76 (DLB) * NAM PRMPT,2,1 PRE-REL 10-14-76 (DLB) * NAM PRMPT,2,1 09570-16661 REV. A 761013 * NAM PRMPT,2,1 09570-16661 REV. A 761110 NAM PRMPT,1,1 PRE-REL REV D. 780526 (DLB) RTE-IV * *-------------------------------------------------------- * * RELOC. 09570-16661 * SOURCE 09570-18661 * * D. L. BASKINS 13 OCT 76 REV. A * *-------------------------------------------------------- EXT EXEC,KYBRD,IDSGA EXT $LIBR,$LIBX EXT .XSA,.XLA,.XLB *780405 EXT ICLRW,GTSTB,MKIDS,CLAS# A EQU 0 B EQU 1 EQTA EQU 1650B DRT EQU 1652B LUMAX EQU 1653B XTEMP EQU 1721B SPC 1 * :RUIH,PRMPT,, TO FAKE AN ATTENTION INTERRUPT TO * SCHEDULE THE LOGON OR PROGENITIOR MODULE. SPC 1 PRMPT STB EQT4 SAVE B-REG VALUE CPB XTEMP CHECK IF DIRECT CALL? JMP PRMP2 YES, CHECK IF KEY SUPPLIED? SPC 1 * PROBABLY SCHEDULED FROM DV.00 OR DV.05 SPC 1 CLA INIT LU = 0 STA LU GET CURRENT LU # -1 PRMP1 LDA LU GET CURRENT LU # CPA LUMAX CHECK IF SEARCHED ALL JMP PRMP8 YES, IGNORE THE SCHEDULE ISZ LU BUMP TO CURRENT LU ADA DRT INDEX INTO THE DRT LDA A,I AND GET CONTENTS AND O77 MASK TO EQU NUMBER MPY D15 CALCULATE ADDRESS OF WORD 4 ADA DM12 SUBTRACT ONE EQT + 3 WORDS ADA EQTA INDEX TO EQT TABLE CPA EQT4 MATCH? RSS YES, GO CHECK IF IT IS A TERMINAL? JMP PRMP1 NO, TRY NEXT LU JSB KYBRD CHECK IF LU IS A TERMINAL DEF *+2 DEF LU CLE,SSA CHECK IF OK? JMP PRMP1 NO, TRY NEXT EQT LDA LU JSB CASCI CONVERT TO ASCII FOR PROMPT JMP PRMPZ YES, GO CONVERT TO ASCII SPC 1 * DIRECT SCHEDULE (OPERATOR?) -- CHECK IF KEY SUPPLIED? SPC 1 PRMP2 JSB .XLA GET 1ST PARAMETER EQT4 DEF * B-REG POINTS TO XTEMP ISZ EQT4 BUMP TO NEXT PARAMETER JSB CASCI CONVERT TO ASCII JSB .XLB CHECK IF PASSED BY CALLER CORRRECTLY DEF EQT4,I ADDRESS OF XTEMP(2) CPB ASCLU P2 PARAMETER = ASCII LU? SZA,RSS YES, CHECK IF NON ZERO JMP PRMP8 IGNORE IMPROPER DIRECT CALL SPC 1 PRMPZ IOR O400 READY PRINT BACK STA RLU SAVE READ LU + PRINT BIT SPC 1 * NOW GET THE CLASS NUMBER ADDRESS IN THE SYSTEM MAP SPC 1 LDA CLASS GET CLASS NUMBER ADDRESS SZA,RSS CHECK IF FOUND? HLT 0 NO, SORRY ABOUT THAT!! RSS NOW GET THE DIRECT ADDRESS LDA A,I FOR THE RTE-III GENERATOR RAL,CLE,SLA,ERA BUG WORK AROUND JMP *-2 STA CLASS SPC 1 * ROUTINE TO FIND A LOGICAL UNIT MATCH IN TABLE * THE TABLE ENTRYS LOOK AS FOLLOWS * !S! F ! M ! * ! G ! 0 ! * ! 7 !AT! LU=7 ! * ! 1ST PARAM ! * ! 2ND PARAM ! * ! 3RD PARAM ! * ! 4TH PARAM ! * ! 5TH PARAM ! * * WHERE 'AT' = AUTHORIZATION LEVEL 0 TO 3 (2 BITS) * WHERE 'S' = PRMPT WILL IGNORE ATTENTION IF SET. * THE 1ST WORD HAS THREE POSSIBILITIES. * 1) 0 >> SCHEDULE LOGON * 2) - >> IGNORE INTERRUPT * 3) + >> CONTINUE * JSB GTSTB GET PROGENTORS SESSION TABLE ENTRY DEF *+4 DEF LU FROM THE TERMINAL LU NUMBER DEF PNAME 8 WORD ARRAY DEF SYSAD LOCATION IN SYSTEM MAP SPC 1 * NOTE: THIS ROUTINE WILL RETURN PNAME = 0 IF NO SESSION ENTRY * AND SYSAD = 0 IF NO SESSION TABLE * SYSAD = ADDRESS OF NEW ENTRY IF PNAME = 0 * A-REG IS NEG IF TERMINAL IS BUSY, = 0 IF NO SESSION PROGENTOR SPC 1 * BEGIN THE FOUR WAY BRANCH * 1) R$PN$ IS BUSY PROCESSING A REQUEST FOR THIS TERMINAL--IGNORE. * 2) PROGENITOR IS NON-EXISTANT, RUN LOGON PROGRAM * 2A. LOGON IS NON-EXISTANT, DO MTM THING. * 3) PROGENITOR IS DORMANT, SCHEDULE AND EXIT. * 4) PROGENITOR IS BUSY, DO THE MTM THING. SPC 1 SSA SIGN BIT SET = DISABLED! JMP PRMP7 IGNORE SCHEDULE, R$PN$ IS BUSY!! SZA,RSS CHECK IF THERE IS ONE? JMP PRMP4 NO, GO SCHEDULE LOGON JSB IDSGA CHECK IF A PROGENITOR ID? DEF *+2 DEF PNAME SZA,RSS CHECK IF ONE? JMP PRMP4 NO, DO THE LOGON THING ADA D8 INDEX TO THE POINT OF SUSPENSION WORD JSB .XLA IN THE ID & AND CHECK IF BUSY DEF A,I SZA TRULY DORMANT? JMP PRMP5 NO, DO THE MTM THING JSB EXEC SCHEDULE PROGENITOR IF DORMANT DEF *+8 DEF NA10 NO ABORT IF NON-EXISTANT DEF PNAME DEF PNAME+3 DEF PNAME+4 DEF PNAME+5 DEF PNAME+6 DEF PNAME+7 JMP PRMP4 IF NON-EXISTANT, DO LOGON SZA CHECK IF SCHEDULED? JMP PRMP5 NO, DO THE MTM THING JSB MKIDS MAKE THE PROGENITORS ID SESSION-FIED DEF *+3 DEF PNAME PROGRAMS NAME DEF LU JSB ICLRW GO DO CLASS WRITE OF PROGENTOR DEF *+7 DEF O2 WRITE DEF CLASS ADDRESS OF CLASS NUMBER DEF LU DEF SYSAD ADDRESS OF SESSION TABLE ENTRY DEF PNAME NAME OF PROGENITOR DEF OM5 FIVE CHARACTERS JMP PRMP7 DONE!!!, CLASS GET FROM R$PN$ SPC 1 * WE MAY NOT HAVE A SESSION TABLE ENTRY, SO DEFAULT THE ADDRESS * TO SOME SEMI-SAFE LOCATION IN SYSTEM MAP. SPC 1 PRMP4 LDA SYSAD CHECK IF SESSION TABLE ENTRY SZA,RSS IF = 0, THEN NO SESSION TABLE ENTRY JMP PRMP6 GO DO THE STOCK MTM THING JSB EXEC SCHEDULE THE LOGON PROGRAM DEF *+4 DEF NA10 WITH CALL EXEC(10 NO ABORT) DEF LOGON PROGRAM NAME = LOGON DEF LU PASS THE LOGICAL UNIT NUMBER JMP PRMP5 NON-EXISTANT, PLAY STOCK MTM SZA,RSS CHECK IF DORMANT? JSB IGNOR YES, SET THE IGNORE BIT JMP PRMP8 LET OPERATOR TRY AGAIN IF BUSY SPC 1 * IN THIS NEXT SERIES OF CLASS I/O THERE IS LITTLE CHANCE OF * ANYBODY GETTING IN BETWEEN THEM, NO MATTER WHAT THE PRIORITY SPC 1 PRMP5 JSB IGNOR SET THE IGNORE BIT PRMP6 JSB ICLRW WRITE ZERO LENGTH RECORD DEF *+5 DEF O2 DEF CLASS DEF LU DEF SYSAD JSB ICLRW NOW WRITE OUT THE PRMPT DEF *+7 DEF O2 DEF CLASS DEF LU DEF SYSAD DEF ASCLU ASCII LU BUFFER DEF O2 TWO WORDS JSB ICLRW GO DO CLASS READ OF 52 CHARACTERS DEF *+7 DEF O1 DEF CLASS DEF RLU LOGICAL UNIT WITH PRINT BIT DEF SYSAD PROGENITORS KEYWORD DEF O0 DUMMY BUFFER DEF DM52 AND BUFFER LENGTH PRMP7 JSB EXEC SCHEDULE R$PN$ W/O WAIT DEF *+3 DEF D10 DEF R$PN$ * * IGNORE NOT SCHEDULED ERRORS SINCE R$PN$ IS CLASS GET SUSPENDED * PRMP8 JSB EXEC TERMINATE DEF *+4 DEF O6 & DEF O0 DEF OM1 MAKE SERIAL RE-USABLE SPC 1 IGNOR NOP ENTRY TO SET THE IGNORE BIT LDB SYSAD CHECK IF A SESSION ENTRY CCE,SZB,RSS TO SET THE DISABLE THE TERMINAL BIT? JMP IGNOR,I NO, SKIP THE DISABLE STUFF JSB $LIBR O0 NOP JSB .XLA GET THE 1ST WORD OF SESSION ENTRY DEF B,I ADDRESS THRU THE SYSTEM MAP RAL,ERA SET BIT 15 JSB .XSA AND SET THE R$PN$ BUSY BIT DEF B,I JSB $LIBX DEF IGNOR RETURN SPC 1 * CONVERT A-REG TO ASCII SPC 1 CASCI NOP ENTRY A-REG = LU STA LU SAVE IN GLOBAL CLB DIV D10 ALF,ALF POSITION MOST SIG DIGIT ADB A MERGE IN WITH LEAST DIGIT ADB ASC00 CHANGE TO ASCII LDA LU RESTORE A-REG STB ASCLU AND SAVE THE ASCII LOGICAL UNIT NUMBER JMP CASCI,I AND RETURN SPC 1 O400 OCT 400 NA10 OCT 100012 NO ABORT 10 O1 OCT 1 O2 OCT 2 O6 OCT 6 D8 DEC 8 D10 DEC 10 D15 DEC 15 O77 OCT 77 OM1 OCT -1 OM5 OCT -5 DM12 DEC -12 DM52 DEC -52 LU NOP LU OF TERMINAL RLU NOP LU + 400B LOGON ASC 3,LOGON !!!!!!LOG ON PROGRAM NAME!!!!!!!!! ASCLU ASC 2,00>_ PROMPT MESSAGE ASC00 ASC 1,00 R$PN$ ASC 3,R$PN$ PNAME BSS 8 HOLDS CURRENT SESSION TABLE ENTRY CLASS DEF CLAS#+0 ADDRESS OF CLASS NUMBER IN SYSTEM MAP. SYSAD ABS 0 ADDRESS OF CURRENT SESSION ENTRY PROGENITORS NAME END PRMPT