File RT01.PA (PAL assembler source file)

Directory of image this file is from
This file as a plain text file

/ RT01 INTERRUPT HANDLER ROUTINE               24-JUL-78
/
/

/	THE RT01 HANDLER GATHERS DATA FROM THE RT01 DATA
/	TERMINAL FOR OTHER TASKS.  AFTER INITIALIZATION
/	THIS TASK WAITS FOR A MESSAGE FROM ANOTHER TASK.
/	WHEN A MESSADGE IS RECEIVED, THE RT01 IS ENABLED,
/	AND THE DATA ENTERED IS PUT IN THE CALLER'S MESSAGE.
/	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 POSTED. 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=	1




	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 / / / / MESSAGE BUFFER FORMAT / /RT01MSG,ZBLOCK 3 /EXECUTIVE STORE /RTSIND, 0 /INDICATOR STATUS /RTFUNC, 0 /FUNCTION CODE /RTDECF, 0 /CHARACTER COUNT /RTDBUF, ZBLOCK 14 /CHARACTER BUFFER
/ / / 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 TAD (100) /CLEAR THE RT01 DISPLAY. RTTLS NEXTM, CLB CAL RECEIVE /GO TO SLEEP TIL NEEDED MADDR, 0 DCA MSGCDF /SAVE CDF TO MESSAGE TAD MSGCDF DCA BUFCDF /SET MESSAGE CDF NEXTO, CLB TAD (3) TAD MADDR DCA RTDPTR /SET POINTER TO BUFFER DCA RTDFLG 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 RT00 /NO, GO ON TAD (100) /YES, REFORM THE CHARACTER. BUFCDF, HLT DCA I RTDPTR /PUT THE NEW CHARACTER IN THE BUFFER CDF CUR 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 RT02 /NO, EXIT. TAD RTDCHR /EHCO THE NEW DATA RTTLS CLB JMP NEXTC /ON TO THE NEXT CHARACTER.
/ RT00, DCA RTDFNC TAD RTDFNC TAD (-1) /IS THE NEW CHARACTER = AN "A" ? SZA CLA JMP RT02 /NO, GO ON TAD RTDFLG /YES, IS THE BUFFER RESET FLAG SET ? SNA CLA JMP RT03 TAD (100) RTTLS JMP NEXTO /NO, GO ON RT03, 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 RT02, CLB TAD MADDR DCA RTDPTR /SET UP POINTER TO MSG AREA TAD MSGCDF DCA .+1 /SET UP CDF TO MSG AREA 0 TAD RTDIND DCA I RTDPTR /MOVE RT01 INDICATOR STATUS ISZ RTDPTR TAD RTDFNC DCA I RTDPTR /MOVE RT01 FUNCTION STATUS ISZ RTDPTR TAD RTDFLG DCA I RTDPTR /MOVE CHARACTER COUNT TAD (100) /CLEAR THE RT01 DISPALY. RTTLS CDF CUR AC7775 TAD MADDR CAL POST MSGCDF, 0 JMP NEXTM /GO WAIT FOR NEXT MESSAGE RTDFLG, 0 /RT01 DATA ACTIVE FLAG RTDPTR, 0 /RT01 DATA BUFFER POINTER RTDEVF, 1 /RT01 EVENT FLAG RTDIND, 0 /RT01 INDICATOR STATUS RTDFNC, 0 /RT01 FUNCTION STATUS RTDCHR, 0 /CHARACTER STORE
/ / /%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 THE RT01 INTERRUPT ENABLED ? 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 (FOR EPL). 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 RT02 PAGE NOPUNCH XLIST 1



Feel free to contact me, David Gesswein djg@pdp8online.com with any questions, comments on the web site, or if you have related equipment, documentation, software etc. you are willing to part with.  I am interested in anything PDP-8 related, computers, peripherals used with them, DEC or third party, or documentation. 

PDP-8 Home Page   PDP-8 Site Map   PDP-8 Site Search