PTYSRH:\r
\r
\r
-\r
;ACCUMULATOR ASSIGNMENTS\r
\r
DDB=DEVDAT\r
LINE=TAC1\r
-\r
CHREC=TEM\r
SCNHAC=12\r
PIOS=13\r
IOPTRE=2000 ;PTY RESPONSE IS READY\r
MONMOD=1000 ;PTY IS IN MONITOR MODE\r
\r
+\r
INTERNAL FTCHECK,FTMONP\r
IFN FTCHECK+FTMONP,<\r
EXTERNAL PTYDDB,PTYCSV,PTYSAC,PTYBND,PTYBM1,PTYDDS,PIOSAV,PDDSAV\r
EXP PTYDSP\r
XWD DVIN+DVOUT,3\r
Z\r
+ Z\r
XWD PROG,0\r
XWD PROG,0\r
Z\r
PIOSAV: 0\r
PDDSAV: 0\r
>\r
-\fINTERNAL PTYDSP\r
+\f\r
+INTERNAL PTYDSP\r
EXTERNAL OUT\r
POPJ PDP, ;INITIALIZE\r
POPJ PDP, ;PRINT ERROR, STOP JOB\r
POPJ PDP,\r
\r
PTYOU6: TLO IOS,T37+IOFST ;FORCE BUFFER RESET\r
- ;T37 SO TABS, ETC NOT TRNSLATED (TIMING ERRO OTHERWI)\r
+ ;T37 SO TABS, ETC NOT TRNSLATED (TIMING ERROR OTHERWISE)\r
MOVEM IOS,DEVIOS(DDB)\r
JSR PTYRET ;RESTORE ACS\r
\r
JUMPE ITEM,PTYOU8 ;BUFFER EMPTY>\r
\f PUSHJ PDP,ITMCNT\r
MOVEM ITEM,DEVCTR(DDB)\r
+\r
\fPTYOU1: TRO IOS,IOACT\r
TRZ IOS,IOPTRE\r
JSR PTYSAV ;SAVE ACS\r
JRST PTYOU3 ;YES, BUFFER NOT MOVED INTO OBJECT\r
;JOB TTY IN BUFFER \r
JRST PTYOU2 ;NO\r
-\r
PTYOU4: CAIE CHREC,"^"\r
JRST PTYOU7\r
MOVEM CHREC,PTYCSV(PDDB);YES. FLUSH OUTPUT\r
EXCH PDDB,DDB\r
PUSH PDP,LINE\r
JRST PTYIN4\r
-\fPTYI3A: TRZ IOS,IOBKTL\r
+\r
+\f\r
+PTYI3A: TRZ IOS,IOBKTL\r
TRO IOS,IOPTRE ;INPUT READY\r
PTYI3B: PUSHJ PDP,STOSQD\r
JRST ADRERR\r
POP PDP, LINE\r
PTYIN8: MOVEM IOS, DEVIOS(DDB)\r
POPJ PDP,\r
+\r
+\r
\f;SAVE ACCUMULATORS\r
;CALL MOVEI DDB,ADDRESS OF PTYDB\r
; JSR PTYSAV\r
MOVE PDDB,DDB\r
JRST @PTYSAV\r
\r
+\r
;RESTORE ACCUMULATORS\r
;CALL MOVEI PDDB,PTY DATA BLOCK ADDRESS\r
; JSR PTYRET\r
\r
+\r
IFE FTCHECK+FTMONP,<\r
PTYRET: 0\r
>\r
\r
;SAVE ONLY PIOS AND PDDB\r
\r
+\r
IFE FTCHECK+FTMONP,<\r
PACSAV: 0\r
>\r
PTWAKE: PUSH PDP,TEM\r
PUSH PDP,TAC1\r
LDB TAC,[POINT 6,DEVCHR(PDDB),5] ;PTY JOB NR\r
-\r
HRRZ TAC1,CLOCK ;LAST JOB IN CLOCK QUEUE\r
PTWAK2: CAIN TAC1,CIPWTM1 ;LOOKED AT ALL JOBS\r
JRST PTWAK1 ;YES, WAS NOT SLEEPING\r
\r
INTERNAL PTYOW,PTMNMD,PTMNMZ\r
\r
-PTMNMD: PUSH PDP,PIOS\r
+\r
+PTMNMD: JSR PACSAV ;SAVE 2 AC'S\r
MOVEI PIOS,MONMOD ;PTY INTO MONITOR MODE\r
JRST PTYSET\r
\r
-PTMNMZ: PUSH PDP,PIOS\r
+PTMNMZ: JSR PACSAV ;SAVE AC'S\r
HRROI PIOS,MONMOD ;PTY OUT OF MONITOR MODE\r
JRST PTYSET\r
\r
-PTYOW: PUSH PDP,PIOS\r
+PTYOW: JSR PACSAV\r
MOVEI PIOS,IOPTW ;PTY IN OUTPUT WAIT\r
\r
PTYSET: MOVE PDDB,LINE\r
TRNE PIOS,IOPTW ;IS LINKED TTY JOB IN INPUT WAIT?\r
PUSHJ PDP,PTWAKE ;YES, WAKE UP CONTROL JOB\r
JRST ACRET\r
+\r
\f END\r
-\f\r
-\0\0\0\0
\ No newline at end of file