/CREATED 8-JANUARI-75, ELC / /FOREGROUND ODT TASK / /RUN WHITH HELP OF "CD". MUST BE ENTERRED WHITH AC=NAME OF TELETYPE / /WHEN THE PASSWORD IS OK, IT WILL GIVE A CR-LF AND AWIT YOUR /COMMANDS. / /E=END OR EXIT / /20F=OPEN FIELD 20 / /1234/=OPEN LOCATION 1234 IN THE CURRENT FIELD. /THE INITIAL FIELD IS 70 / /WHEN A LOCATION IS OPENEND, ODT TYPES: /1234 7402 / /NOW YOU MAY CLOSE THE LOCATION WITH CR, OR CLOASE IT AND OPEN THE /NEXT LOCATION WITH LF, OR DO EITHER AFTER ENTERRING A NEW VALUE /TO BE STORED IN THE OPEN LOCATION, E.G. / /1234/ /1234 7402 7000 (LF) /1235 7300 (CR) /E / /*THIS IS A PRIVILIGED TASK, AS IT IS QIUTE CAPABLE OF DESTROYING* /*THE SYSTEM* *200 ODSWITCH,"O^100+"D&3777 /NAME IS "OD" ODNUMB, 200 /ONE PAGE, NO CONNECTED INTERRUPTS ODTMP, 0 ODDELIM, OD, JMS MONITOR /AC IS TELETYPE HANDLER NAME ODPNTR, CALL+SWPOUT ODCNT, "P^100+"A&3777 /PASSWORD CHECKING TASK JMP .-3 /BUSY ? LOOP SZL /LINK IS ZERO IF OK JMP ODEXIT+2 /UNAUTHORISED PERSON DCA ODIDEV /SET UP INPUT REQUEST TAD ODIDEV TAD ("T-"K^100 DCA ODODEV /SET UP OUTPUT REQUEST ODCRLF, TAD C215 JMS ODTYPE ODLF, TAD C212 JMS ODTYPE ODCMND, JMS ODREAD /GET COMMAND TAD ODDELIM /GET DELIMITER TAD (-"E /"E" IS "END" OR "EXIT" SNA JMP ODEXIT TAD ("E-"F SZA CLA /"F" MEANS SET FIELD JMP ODOPEN /EVERY THING ELSE IS OPEN TAD ODNUMB AND C70 TAD C6201 /MAKE A CDF DCA ODCDF+1 /STORE IN FIELD-CHANGE ROUTINE JMP ODCRLF /GET NEXT COMMAND ODOPEN, TAD ODNUMB DCA ODPNTR /SET INPUT IN POINTER ODOPE1, TAD ODPNTR /GET POINTER TO OPEN LOCATION JMS ODOCT /AND PRINT ITS ADDRESS JMS ODCDF //CHANGE FIELD TO DATAFIELD TAD I ODPNTR //FETCH CONTENTS OF OPEN LOCATION JMS ODOCT //TYPE CONTENTS IN OCTAL, DOES CDTOIF JMS ODREAD /GET POSSIBLE NEW CONTENTS TAD ODDELIM /WHAT WAS THE DELIMITER ? TAD M215 SZA /CR ? TAD C3 SZA CLA /LF ? JMP ODERR ISZ ODSWITCH /WAS THERE NUMBER INPUT ? JMP ODOPE2 /NO NEW INPUT GIVVEN TAD ODNUMB JMS ODCDF //CHANGE FIELD TO DATA'S FIELD DCA I ODPNTR //STORE NEW CONTENTS IN OPEN LOCATION ODOPE2, TAD ODDELIM // RAR // SZL CLA //WAS IT LINEFEED ? JMP ODLF //NO, GET NEXT COMMAND ISZ ODPNTR //YES, BUMP POINTER TO NEXT LOCATION ODQ, "? //NOP, PROTECTS ISZ TAD C215 //GIVE HIM A CR TOO JMS ODTYPE // JMS ODTYPE /AND ONE BLANK AS FILLER JMP ODOPE1 //OPEN NEXT LOCATION ODEXIT, AC4000 JMS ODTYPE /RELEASE TELETYPE JMS MONITOR EXIT SWPOUT ODCDF, 0 /ROUTINE TO CHANGE THE DATAFIELD CDF 70 //CHANGED BY "F"-COMMAND JMP I ODCDF // ODERR, TAD ODQ JMS ODTYPE /OUTPUT "?" JMP ODCRLF /GIVE CR-LF AND GET NEXT COMMAND ODTYPE, 0 /SINGLE CHARACTER OUTPUT ROUTINE TAD (4000 /SET TELETYPE HOLD-BIT JMS MONITOR CALL ODODEV, 0 /NAME OF OUTPUT HANDLER TASK JMP .-3 /BUSY ? LOOP JMP I ODTYPE /RETURN ODOCT, 0 /OCTAL OUTPUT ROUTINE DCA ODTMP TAD M4 DCA ODCNT /SET COUNTER FOR FOUR DIGITS ODOCT1, TAD ODTMP RAL RTL DCA ODTMP TAD ODTMP RAL AND C7 TAD C260 JMS ODTYPE ISZ ODCNT /COUNT FOUR DIGITS JMP ODOCT1 /STILL MORE TO PRINT TAD C240 JMS ODTYPE /ADD A SPACE JMP I ODOCT ODREAD, 0 /OCTAL INPUT ROUTINE DCA ODNUMB /CLEAR INPUT ACCUMULATOR ODR1, DCA ODSWITCH /RESET VALID INPUT SWITCH JMS MONITOR CALL ODIDEV, 0 /NAME OF INPUT HANDLER TASK JMP .-3 /BUSY ? LOOP DCA ODDELIM TAD ODDELIM JMS ODTYPE /GIVE ECHO TAD ODDELIM AND C7770 TAD M260 SZA CLA /IS IT OCTAL ? JMP I ODREAD /NO, THIS IS THE DELIMETER TAD ODDELIM /GET CHAR AND C7 DCA ZTEM1 TAD ODNUMB CLL RAL CLL RAL CLL RAL TAD ZTEM1 /ADD THE NEW DIGIT DCA ODNUMB CLA CMA /SET VALID INPUT FLAG JMP ODR1 /GET MORE INPUT $