TITLE COMCON - COMMAND DECODER AND SAVEGET ROUTINES - V433\r
SUBTTL /RCC 03 JUN 69\r
XP VCOMCN,433\r
+\r
;THIS MACRO PUTS VERSION NO. IN STORAGE MAP AND GLOB\r
\r
ENTRY COMCON ;ALWAYS LOAD COMCON IF LIBRARY SEARCH\r
COMCON:\r
\r
;CALLED FROM CLOCK ROUTINE WHEN 'COMCNT' IS GREATER THAN 0\r
-\r
;AS SET BY TTY SERVICE ROUTINE\r
;ALL AC'S HAVE BEEN SAVED BY CLOCK CHANNEL\r
;THE COMMAND DECODER CALLS TTYCOM WHICH SCANS FOR TTY WHICH TYPED\r
JRST CHKNO ;YES\r
JSP TAC,COMER ;NO, TYPE "LOGIN PLEASE"\r
ASCIZ /LOGIN PLEASE\r
-/>\r
+/\r
+>\r
CHKNO: JUMPN ITEM,CHKRUN ;JOB NUMBER ALREADY ASSIGNED?\r
TLNE TAC1,NOJOBN ;NO, DOES THIS COMMAND NEED A JOB NUMBER?\r
JRST COMGO ;NO\r
JSP TAC,COMER ;YES, NONE LEFT, PRINT "JOB CAPACITY EXCEEDED"\r
ASCIZ /JOB CAPACITY EXCEEDED\r
/\r
+\r
; EVEN THROUGH THIS IS A NEW JOB NUMBER\r
; IT MAY HAVE CORE ASSIGNED NOW BECAUSE IT WAS DELAYED\r
; UNTIL IT COULD BE SWAPPED IN(LOGIN WITH CORE FULL)\r
+\r
NEWJOB: MOVEI T1,ASSCON ;SET ASSIGNED BY CONSOLE BIT FOR TTY\r
IORM T1,DEVMOD(DEVDAT) ;SO OTHER JOBS CAN NOT USE\r
SETZM DEVLOG(DEVDAT) ;SET LOGICAL NAME TO ZERO\r
ANDCAM IOS,(PDP) ;NO, CLEAR REQUEU BIT IN DISP. FLAGS\r
MOVEM T,JBTSTS(ITEM)\r
\r
+\r
COMDIS: MOVEI IOS,0 ;CLEAR IOS FOR SETTING DISPATCH ADDRESSES\r
PUSHJ PDP,(TAC1) ;DISPATCH TO COMMAND SETUP ROUTINE.\r
\f;RETURN FROM COMMAND SETUP ROUTINE\r
LDB ITEM,PJOBN ;GET JOB NUMBER FROM TTY DEVICE DATA BLOCK\r
JUMPE ITEM,CPOPJ \r
TLNE T1,CMWRQ ;REQUEUE JOB AFTER COMMAND WAIT OR ERROR?\r
-\r
JRST REQUE ;YES\r
>\r
POPJ PDP,\r
; WHEN COMMAND RESPONSE STOPS TYPING\r
NOMESS=10 ;NO COMMAND RESPONSE EVER, DO NOT CALL TTYSTR\r
\r
- ;T TAKEN ABOVE BY 'PLSXPN' BIT\r
+ ;4 TAKEN ABOVE BY 'PLSXPN' BIT\r
+\r
\r
ERRFLG=1 ;COMMAND ERROR\r
\fDEFINE NAMES<\r
DEFINE C(A,B,D) <\r
<SIXBIT /A/>\r
>\r
+\r
COMTAB: NAMES\r
+ XWD NOCORE+NOJOBN+NOLOGIN+NOINCK,NOCOM\r
DISPL=.-COMTAB ;LENGTH OF TABLE\r
\f;GENERATE THE DISPATCH TABLE PLUS SPECIAL BITS\r
\r
Z B (D)\r
>\r
DISP: NAMES\r
-\f;CALLED FROM COMMAND DECODER WHICH IS CALLED FROM CLOCK ROUTINE\r
+\f\r
+;CALLED FROM COMMAND DECODER WHICH IS CALLED FROM CLOCK ROUTINE\r
;WITH FOLLOWING AC'S SET:\r
;TAC= BYTE POINTER TO COMMAND STRING(SPACE OR CR AFTER COMMAND NAME)\r
;ITEM = JOB NUMBER\r
PUSHJ PDP,TTYKIL ;RETURN TTY TO VIRGIN STATE\r
JRST KSTOP ;CLEAR JOB STATUS WORD AND STOP JOB\r
\r
+\r
;ERROR IN COMMAND\r
\r
+\r
CERR: JRST ERRMES\r
\r
JOBKB: SETZM -1(PDP) ;CLEAR NOJOBN SO COMRET WILL PRINT ERROR MSG.\r
; IF ASKING FOR 0 CORE\r
>\r
LSH TAC1,12 ;CONVERT 1K BLOCKS TO WORDS\r
- \r
MOVEI TAC,-1(TAC1) ;HIGHEST RELATIVE ADDRESS=LENGTH-1 OF LOW SEG\r
PUSHJ PDP,CORE0 ;TRY TO ASSIGN CORE\r
JRST COR2 ;CORE NOT AVAILABLE. GO PRINT MESSAGE\r
\r
CCLRUN: MOVE TAC,[SIXBIT /COMPIL/] ;CUSP NAME\r
JRST ARCOM ;RUN IT\r
+\r
>\r
;"LOGIN" - LOGIN COMMAND\r
\r
; BEFORE [P,P] IN ATT AND GET COMMANDS.\r
JRST CPOPJ2 ;YES. SKIP RETURN\r
CAIE TEM,"-" ;DASH?\r
- CAIG TEM,400 ;SPACE OR CONTROL CHAR?\r
+ CAIG TEM,40 ;SPACE OR CONTROL CHAR?\r
JRST CPOPJ2 ;YES, ONLY LEGAL TERMINATORS\r
CAIE TEM,"," ;COMMA?\r
CAIN TEM,"]" ;RIGHT BRACKET?\r