/ RT01 INTERRUPT HANDLER ROUTINE 3-JUL-91 / / / / RRRR TTTTT 000 1 / R R T 0 0 11 / R R T 0 0 1 1 / RRRR T 0 0 1 / R R T 0 0 1 / R R T 0 0 1 / R R T 000 11111 / / / / /EDIT HISTORY: / /2-JUL-91 (LHN) FOR VERSION 4 / 1) CONVERTED TASK TO SEND DATA MESSAGE TO ROLLDT / / THE RT01 HANDLER GATHERS DATA FROM THE RT01 DATA / TERMINAL FOR THE 'ROLLDT' TASK. AFTER INITIALIZATION / THE RT01 IS ENABLED, AND THE DATA ENTERED IS PUT IN / A MESSAGE PACKET. WHEN A CONTROL CHARACTER (B,C,D,E / OR F) IS DETECTED, IT IS PLACED AT THE HEAD OF THE / MESSAGE ALONG WITH THE CURRENT STATUS INDICATOR, AND / THE NUMBER OF DIGITS ENTERED. THE MESSAGE IS THEN / SENT TO 'ROLLDT'. THIS TASK ALSO ECHOES NUMERIC INPUT, / AND THE "A" CONTROL KEY FUNCTIONS OF DISPLAY CLEAR, / AND ROTATING THE STATUS INDICATOR. TASK= RT01 CUR= RT01FLD INIWT= 0 VERS= 4 FIELD RT01FLD%10 *RT01LOC / / /%RX RT01 DATA ENTRY TERMINAL COMMANDS / / RTKCF= 6300 /CLEAR THE KEYBOARD FLAG RTKSF= 6301 /SKIP IF THE KEYBOARD FLAG IS SET RTKCC= 6302 /CLEAR THE AC AND THE KEYBOARD FLAG RTKRS= 6304 /READ THE KEYBOARD BUFFER STATICALLY RTKIE= 6305 /PUT AC BIT 11 IN THE INTERRUPT ENABLE F-F RTKRB= 6306 /CLEAR THE AC, READ THE KEYBOARD BUFFER, AND /CLEAR THE KEYBOARD FLAG RTTFL= 6310 /SET THE DISPLAY FLAG RTTSF= 6311 /SKIP IF THE DISPLAY FLAG IS SET RTTCF= 6312 /CLEAR THE DISPLAY FLAG RTTPC= 6314 /LOAD THE DISPLAY BUFFER AND DISPLAY RTTSK= 6315 /SKIP IF THE RTO1 INTERRUPT OCCURRED RTTLS= 6316 /LOAD THE DISPLAY BUFFER, DISPLAY, AND /CLEAR THE DISPLAY FLAG / / / / OPERATOR DATA MESSAGE FORMAT / / /RTMSG, ZBLOCK 3 /RTS8 OVERHEAD /RTTYPE, MESSAGE TYPE = * /RTSIND, STATUS INDICATOR /RTFUNC, FUNCTION CODE /RTDECF, CHARACTER COUNT OF DATA /RTDBUF, DATA CHARACTER 1 / ... / ... / DATA CHARACTER N (UP TO 13) / 0 / / / / RT01 INTERRUPT HANDLER ROUTINE / / START, CLB CAL /INSERT RT01 INTO SKIP CHAIN SKPINS RT01IN CAL /NOW TELL POWER FAIL WHAT TO DO. SEND PWRF PWRFMG NEXTM, CLB TAD (100) /CLEAR THE RT01 DISPLAY. RTTLS CLB TAD (RTDBUF) /SET UP POINTER TO DATA BUFFER DCA RTDPTR DCA RTDFLG /CLEAR RT01 DATA ACTIVE FLAG. TAD ("*) /RESET OUR MESSAGE TYPE DCA RTDTYP NEXTC, ISZ RTDEVF /SET OUR EVENT FLAG PENDING. CAL WAITE /WAIT FOR NEXT CHARACTER RTDEVF TAD RTDCHR /FETCH CHARACTER TAD (-100) /IS THE CHARACTER = A NUMBER ? SMA JMP RT02 /NO, GO ON TAD (100) /YES, REFORM THE CHARACTER. DCA I RTDPTR /PUT THE NEW CHARACTER IN THE BUFFER ISZ RTDPTR /INCREMENT THE DATA BUFFER POINTER ISZ RTDFLG /INCREMENT THE RT01 DATA ACTIVE FLAG TAD RTDFLG /IS THE POINTER STILL WITHIN THE TAD (-13) /BUFFER ? SMA CLA JMP RT03 /NO, EXIT. TAD RTDCHR /EHCO THE NEW DATA RTTLS CLB JMP NEXTC /ON TO THE NEXT CHARACTER. / RT02, DCA RTDFNC TAD RTDFNC TAD (-1) /IS THE NEW CHARACTER = AN "A" ? SZA CLA JMP RT03 /NO, GO ON TAD RTDFLG /YES, IS THE BUFFER EMPTY ? SZA CLA JMP NEXTM /NO, GO RESET DATA POINTERS. TAD RTDIND /YES, ROTATE THE STATUS INDICATOR CLL RAL /BIT AND (17) SNA CLB IAC TAD (120) RTTLS /DISPLAY THE ACTIVE STATUS INDICATOR AND (17) DCA RTDIND /SAVE THE STATUS INDICATOR BIT JMP NEXTC RT03, CLB CAL /SEND THE DATA TO ROLLDT TASK SENDW ROLLDT RTMSG JMP NEXTM /GO WAIT FOR NEXT MESSAGE RTDPTR, 0 /RT01 DATA BUFFER POINTER RTDEVF, 1 /RT01 EVENT FLAG RTDCHR, 0 /CHARACTER STORE / / OPERATOR DATA MESSAGE / RTMSG, ZBLOCK 3 /RTS8 OVERHEAD RTDTYP, "* /MESSAGE TYPE - ALWAYS * RTDIND, 0 /RT01 INDICATOR STATUS RTDFNC, 0 /RT01 FUNCTION CODE RTDFLG, 0 /RT01 DATA COUNT (AND ACTIVE FLAG) RTDBUF, ZBLOCK 13 /RT01 INPUT DATA 0 / / /%R RT01 INTERRUPT LEVEL CODE / /%TW COME HERE WHEN AN RT01 KEYBOARD INTERRUPT IS / DETECTED. TEST FOR A CONTROL KEY AND SET UP THE / NECESSARY RESPONCE. / WHEN A NEW CHARACTER IS DETECTED, SAVE IT AND / WAKE UP THE TASK LEVEL CODE. / / RT01IN, ZBLOCK 2 /EXEC INTERUPPT STORAGE RTTSK /IS RT01 INTERRUPT SET ? JMP I RT01IN /NO, GO TO NEXT MODULE IN CHAIN CDI CUR /YES, CONTINUE RTTSF /IS THE DISPLAY FLAG SET ? SKP /NO, CONTINUE RTTCF /YES, CLEAR THE DISPLAY FLAG RTKSF /IS THE KEYBOARD FLAG SET ? JMP RTDPST /NO, EXIT RTKRB /YES, READ THE NEW CHARACTER AND (177) /REMOVE THE PARITY BIT DCA RTDCHR /SAVE THE CHARACTER FOR LATER TAD (RTDEVF) RTDPST, CIF 0 POSTDS /DISMISS THE INTERRUPT AND POST FLAG PWRFMG, ZBLOCK 3 /POWER FAIL RESTART . JMP NEXTM PAGE NOPUNCH XLIST 1