/******* MULTI8 CONTROL-B MODULE ******* /LAST EDIT: 3-AUGUST-75, JV /LAST EDIT: 10-DECEMBER-74, ELC /THIS MODULE INTERPRETS THE INPUT THAT THE INPUT READER /OF A BACKGROUND HAS ACCUMULATED. IT IS ENTERED WITH /A POINTER TO THE BACKGROUNDS DATA AREA IN THE AC. /IT READS THE COMMAND FROM THE NORMAL INPUT BUFFER. /COMMANDS: / /AC 1234 SET THE BACKGOUNDS AC /BOOT BOOTSTRAP OS/8 FOR THIS BG /FIELD 12 SET THE BG INSTRUCTION AND DATAFIELD /KILL RESTART THE BG AT 7600, FIELD 0 /PC 1234 SET PC TO 1234 /SWITCH 1234 SET USERS SWITCH REGISTER TO 1234 /WHERE PRINT THE CURRENT STATUS OF THIS BG /(RETURN) CONTINUE THE BG WHERE HE WAS INTRPTED / /THE COMMANDS ARE RECOGNISED ON THE FIRST CHARACTER ONLY, /THEN THE INPUT IS SCANNED FOR A NUMBER. *200 "C^100+"B&3777 /NAME IS "CB" 200 /ONE PAGE, NO CONNECTS CBLIST, CBLST-1 /WILL BE ABSOLUTISED BY OUR DEAR MONITOR CBNUMB, 0 CB, DCA BASE //USES SAME ZTEM AS RESIDENT CODE JMS CBREAD //GET THE FIRST CHARACTER TAD M215 /EMPTY LINE ? SNA JMP CBXIT /YES, CONTINUE BG EXECUTION TAD C215 DCA CBCOMND /IT DETERMINES THE ACTUAL COMMAND DCA CBNUMB /HER WE WILL ACCUMULATE THE NUMERIC INPUT CBLOOP, JMS CBREAD TAD M215 SNA JMP CBBRANCH /END OF LINE: DO IT NOW TAD (215-270 /SEE IF IT IS A NUMBER SMA JMP CBLOOP /NO, SKIP IT TAD (10 SPA JMP CBLOOP /NOT OCTAL, SKIP IT DCA ZTEM1 TAD CBNUMB CLL RTL RAL AND C7770 TAD ZTEM1 DCA CBNUMB /WE HAVE TAKEN THE NEW OCTIDE IN ACCOUNT JMP CBLOOP /SEE IF THERE'S MORE CBBRANCH,TAD CBLIST DCA AUTO10 CBBR1, TAD I AUTO10 CIA STL TAD CBCOMND /COMPARE WITH COMMAND SNA CLA JMP I AUTO10 /FOUND IT! ISZ AUTO10 /SKIP PAST JUMP JMP CBBR1 /SEE IF NEXT ONE IS OK CBREAD, 0 /READ A CHAR FROM INPUT BUFFER CLA CLL CDTOIF CIF MONFLD JMS I (MTQ UBUFIN JMP CBERROR JMP I CBREAD CBLST, "A;JMP CBAC "B;JMP CBBOOT "K;JMP CBKILL 203;JMP CBKILL /^C "F;JMP CBFIELD 215;JMP CBXIT /CR "P;JMP CBPC "S;JMP CBSWITCH "W;JMP CBWHERE CBCOMND, 0 /MUST BE HERE TO END THE BRANCH LOOP JMP CBERROR CBAC, TAD CBNUMB /STORE CBNUMB IN USERS AC JMS CBPUT UAC JMP CBNEXT /ASK FOR NEW COMMANDS CBKILL, TAD C7600 JMS CBPUT UPC TAD (BGFLD%10+BGFLD+100 /SET USERMODE, FIELDS 0 JMS CBPUT UFLDS JMP CBXIT /AND START THE BG CBFIELD,TAD CBNUMB IFZERO BGFLDS-2 < AND (4011 /FIELD 0 OR 1, AND LINK > IFNZRO BGFLDS-2 < IFZERO BGFLDS-4 < AND (4033 /FIELD 0,1,2 OR 3, AND LINK > IFNZRO BGFLDS-4 > TAD (BGFLD%10+BGFLD+100 /SET USERMODE JMS CBPUT UFLDS CBNEXT, AC0001 /1 IS GET-NEXT-COMMAND RETURN CBXIT, JMS MONITOR EXIT SWPOUT CBPC, TAD CBNUMB JMS CBPUT UPC /DROP IN HIS PC JMP CBNEXT CBBOOT, TAD CBNAM1 CBWHERE,TAD CBNAM2 DCA CBNAM /STORE NAME IN RUN-REQUEST CDF MONFLD TAD BASE JMS MONITOR CALL CBNAM, 0 CBERROR,ACM1 /BUSY ? -1 IS ERROR RETURN. JMP CBXIT CBSWITCH,TAD CBNUMB JMS CBPUT USW JMP CBNEXT CBPUT, 0 /SUBROUTINE TO STORE IN BG-DATA DCA MONITOR /STORE TEMPORARY TAD I CBPUT TAD BASE DCA X TAD MONITOR CDF MONFLD DCA I X CDTOIF ISZ CBPUT JMP I CBPUT CBNAM1, "B-"B^100+"O-"E CBNAM2, "B^100+"E&3777 $