/******* MULTI8 COMMAND DECODER ******* /NAME: CD /LENGTH:1 PAGE /FUNCTION:THIS MODULE ENABLES THE OPERATOR TO PUT EACH / OTHER MODULE TO ACTION FROM THE KEYBOARD. /CONCEPT:AS THE FOREGROUND MONITOR FUNCTIONS ARE ALL PRO- / GRAMMABLE, AND NO SUCH THING AS A KEYBOARD MONITOR / HAS BEEN IMPLEMENTED, THIS MODULE ACTS AS A SORT / OF KEYBOARD MONITOR IN ORDER TO HAVE SOME GRIP / ON ALL THE MODULES FROM THE KEYBOARD. THIS ALSO HAS / THE ADVANTAGE THAT THIS MODULE NORMALLY RESIDES ON / THE DISK AND SWAPS INTO CORE ONLY WHEN NECESSARY. / A SPECIAL BREAK-CHARACTER(201 CTRL/A) / ACTIVATES THIS MODULE. / GENERAL FORMAT: / AS FOR EXAMPLE:>R LOAD / FIELD1:RUN OR CONTINUE,KILL,STOP. / FIELD2:THE NAME OF THE MODULE;EXCESSIVE CHARACTERS / ARE ALLOWED. / 377(RUB):DELETES THE WHOLE COMMAND /ERRORS:THIS MODULE HAS NO ERROR RETURN. / ERRORS FROM THE CALLED MODULES CAUSE TYPE-OUT OF "?". /TASK CIRCULATION: WHEN INTERRUPT. /MODULES USLED,RUNNED ETC. /SUBROU TYPE THE CTRL/A CHARACT / STOP THIS MODULE BY TYPING A CARRIAGE RETURN /BASIC COMMAND DECODER FOR FOREGROUND /PROCESSES STRINGS LIKE 'R NAME'; 'C NAME'; CDTMP, "C^100+"D&3777 CDAC, 200 /ONE PAGE; NO CONNECTS CDTMP2, 0 / CD, CLA FOR BREAK-CHARACTER EAK IS ALWAYS SLOT #0 ULE TAD CDAC DCA CDI100 DCA CDO CD1, DCA CDMU /CLEAR MICROCODE TAD C215 JMS CDTYPE TAD C212 JMS CDTYPE TAD ("> /CD IDENTIFIES WITH ">" JMS CDTYPE CD2, JMS CDREAD /READ ONE CHAR TAD (-"K SNA JMP CDKILL TAD M7 /(-"R+"K SNA JMP CDRUN TAD C17 /(-"C+"R SNA JMP CDRESTRT TAD (-"S+"C SZA CLA JMP CDERR /ILLEGAL COMMAND CDSTOP, TAD (STOP-RESTRT CDREST, TAD (RESTRT-RUN /SET UP MICROCODE CDRUN, TAD (RUN-KILL CDKILL, TAD (KILL DCA CDMU CDWAIT, JMS CDREAD /IGNORE THE REST UNTIL SPACE JMP .-1 /IGNORE THE REST UNTIL SPACE /ENTRY HERE AFTER SPACE CD4, JMS CDREAD /READ CHAR CLL RTL RTL CLL RAL CLL RAL DCA CDMU+1 /PACK IN 'NA' JMS CDREAD TAD CDMU+1 DCA CDMU+1 JMP CDWAIT /WAIT FOR CR OR "= /ENTRY HERE AFTER CR,DETECTED BY CDREAD CD5, TAD (4212 /TYPE A LF FOR CLARITY, RELEASE TTY JMS CDTYPE TAD CDMU /GET FUNCTION SZA CLA /MUST BE SET TAD CDMU+1 /GET NAME SNA SPA CLA /MUST BE REASONABLE JMP CDERR /NO NAME GIVEN TAD CDA 0 /FUNCTION 0 /OR RET JMP CD CDERR CDTYPE JMP CD /CDRTY:,ECHOES IT /AND TESTS WHETHER IT IS A CR. IF CR THEN JUMPS TO CD5. CDCHAR, CDREAD, 0 TAD (-40^DGNTICK /TIMEOUT TO FREE CD JMS MONITOR CALL CDI, "K^100+"0&3777 JMP .-3 SPA JMP CDERR /TIMETAD CDTMP JMS CDTYPE /-377 SNA JMP CD1 /R JMP CD5 /CR TAD (- /SPACE TAD (-"=+240 SNA CLA JMP CD6 /= TAD CDTMP /NOT IN LIST JMP I CDREAD /CDTYPE ONLY TYPES A CHARACTER CDTYPE, 0 TAD (4000 /SET TELETYPE-HOLD BIT JMS MONITOR CALL CDO, "T^100+"0&3777 JMP .-3 JMP I CDTYPE CD6, DCA CDAC /CLEAR OCTAL # JMS CDREAD /READ CHAR AND C7 /MASK OCTAL VALUE DCA CDTMP2 /SAVE TEMP. TAD CDAC /GET PREVIOUS VALUE CLL RAL CLL RAL CLL RAL /MPY BY 10 TAD CDTMP2 /+3 NEW BITS JMP CD6 /CONTINUE TILL (CR) $$$