File: OD.TK of Tape: V50/Multi8/Multi-4
(Source file text)
/OD.TK 14-MAY-80 / /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 AWAIT YOUR /COMMANDS. / /E=END OR EXIT / /2F=OPEN FIELD 2 / /1234/=OPEN LOCATION 1234 IN THE CURRENT FIELD. /THE INITIAL FIELD IS 0 / /WHEN A LOCATION IS OPENEND, ODT TYPES: /1234/7402 / /NOW YOU MAY CLOSE THE LOCATION WITH CR, OR CLOSE IT AND OPEN THE /NEXT LOCATION WITH LF, OR DO EITHER AFTER ENTERING A NEW VALUE /TO BE STORED IN THE OPEN LOCATION, E.G. / /1234/7402 7000 (LF) /1235 7300 (CR) /E / /*THIS IS A PRIVILIGED TASK, AS IT IS QUITE CAPABLE OF DESTROYING* /*THE SYSTEM* *200 ODSWITCH,"O^100+"D&3777 /NAME IS "OD" 200 /ONE PAGE, NO CONNECTED INTERRUPTS ODTMP, 0 ODDELIM, OD, JMS MONITOR /AC IS TELETYPE HANDLER NAME ODPNTR, CALL RELEASE 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 ODODEV /("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 M1 /("E-"F SZA CLA /"F" MEANS SET FIELD JMP ODOPEN /EVERY THING ELSE IS OPEN TAD ODNUMB RTL RAL AND C70 TAD C6201 /MAKE A CDF DCA ODCDF1 / TAD ODCDF1 DCA ODCDF2 JMP ODCRLF /GET NEXT COMMAND ODOPEN, ISZ ODSWITCH /NEW LOCATION ? JMP ODCDF1 /NO TAD ODNUMB DCA ODPNTR /SET INPUT IN POINTER JMP ODCDF1 ODOPE1, TAD ODPNTR /GET POINTER TO OPEN LOCATION JMS ODOCT /AND PRINT ITS ADDRESS ODCDF1, CDF //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 GIVEN TAD ODNUMB ODCDF2, CDF //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 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, "T-"K^100 /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 (-260 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 ODNUMB, 0 $