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               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



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