X-Git-Url: http://git.sky-visions.com/cgi-bin/gitweb.cgi/retro-software/dec/tops10/v4.5.git/blobdiff_plain/cda2ba6d27526e5ef6f27f7b3391cfb55055bf2e..cac5183c0f5a53b1874c2685f1b2d84e990ddd7d:/src/ptysrh.mac diff --git a/src/ptysrh.mac b/src/ptysrh.mac index 1e2b1e5..08a5184 100644 --- a/src/ptysrh.mac +++ b/src/ptysrh.mac @@ -7,12 +7,10 @@ ENTRY PTYSRH ;DUMMY GLOBAL FOR FULL DUPLEX PTY PTYSRH: - ;ACCUMULATOR ASSIGNMENTS DDB=DEVDAT LINE=TAC1 - CHREC=TEM SCNHAC=12 PIOS=13 @@ -29,6 +27,7 @@ IOPTW=4000 ;OUTPUT WAIT (OBJ. JOB HAS DONE INPUT) IOPTRE=2000 ;PTY RESPONSE IS READY MONMOD=1000 ;PTY IS IN MONITOR MODE + INTERNAL FTCHECK,FTMONP IFN FTCHECK+FTMONP,< EXTERNAL PTYDDB,PTYCSV,PTYSAC,PTYBND,PTYBM1,PTYDDS,PIOSAV,PDDSAV @@ -47,22 +46,24 @@ PTYDDB: SIXBIT /PTY0/ EXP PTYDSP XWD DVIN+DVOUT,3 Z + Z XWD PROG,0 XWD PROG,0 Z XP PTYCSV,.-ZZ Z - XP PTYDDS,.-ZZ + XP PTYSAC,.-ZZ BLOCK 13 XP PTYBND,PTYSAC+12 - XP PTYDM1,PTYBND-1 + XP PTYBM1,PTYBND-1 XP PTYDDS,.-ZZ ;SIZE OF PTY DDB PTYSA2: BLT SCNHAC,0 PIOSAV: 0 PDDSAV: 0 > - INTERNAL PTYDSP + +INTERNAL PTYDSP EXTERNAL OUT POPJ PDP, ;INITIALIZE POPJ PDP, ;PRINT ERROR, STOP JOB @@ -106,9 +107,8 @@ PTYREL: LDB LINE,[POINT 6,DEVCHR(DDB),23] ;SET IN THE OF IOS) -EXTERNAL TCONLN,TTYTIBTPYTAB,PTYTAB,SETIOD -EXTERNAL ADVBFF,RUNIT,RECIN3,PUTCHI -EXTERNAL TTIBUF,SPCHEK,DDBSRC,LINTAB,CNCTST,TIFCTR,INBFUL +EXTERNAL TCOMLN,TTYTAB,TCOMM,TPYTAB,PTYTAB,ITMCNT,SETIOD +EXTERNAL ADVBFE,PUNIT PTYOUT: LDB LINE,PUNIT JSR PTYSAV @@ -127,7 +127,7 @@ PTYOUT: LDB LINE,PUNIT POPJ PDP, PTYOU6: TLO IOS,T37+IOFST ;FORCE BUFFER RESET - ;T37 SO TABS, ETC NOT TRNSLATED (TIMING ERRO OTHERWI) + ;T37 SO TABS, ETC NOT TRNSLATED (TIMING ERROR OTHERWISE) MOVEM IOS,DEVIOS(DDB) JSR PTYRET ;RESTORE ACS @@ -146,6 +146,7 @@ PTYOU0: TRNE IOS,IOPTRE JUMPE ITEM,PTYOU8 ;BUFFER EMPTY> PUSHJ PDP,ITMCNT MOVEM ITEM,DEVCTR(DDB) + PTYOU1: TRO IOS,IOACT TRZ IOS,IOPTRE JSR PTYSAV ;SAVE ACS @@ -165,14 +166,13 @@ PTYOU7: PUSHJ PDP,TCOMM ;SEND NEXT CHARACTER JRST PTYOU3 ;YES, BUFFER NOT MOVED INTO OBJECT ;JOB TTY IN BUFFER JRST PTYOU2 ;NO - PTYOU4: CAIE CHREC,"^" JRST PTYOU7 MOVEM CHREC,PTYCSV(PDDB);YES. FLUSH OUTPUT MOVEM IOS,DEVIOS(DDB) ;SAVE TTY STATE TRO PIOS,IOPTRE ;LET USER KNOW -PTYOU3: JRS PTYRET ;RESTORE ACS +PTYOU3: JSR PTYRET ;RESTORE ACS EXCH IOS,PIOS PTYOU8: TLZE IOS,IOW PUSHJ PDP,SETIOD ;START PTY JOB @@ -189,7 +189,7 @@ PTYOU5: TRZ IOS,IOACT+IOPTW ;CONSIDER OUTPUT COMPLETED TLO IOS,IOFST MOVEM IOS,DEVIOS(DDB) POPJ PDP, - EXTERNAL TCONLN,TTYTAB,SETIOD,ADVBFF,STOSQD,ADRERR + EXTERNAL TCONLN,TTYTAB,SETIOD,STODAT,ADVBFF,STOSQD,ADRERR PTYIN: LDB LINE,[POINT 6,DEVCHR(DDB),23] ADDI LINE,TCONLN @@ -213,7 +213,7 @@ PTYIN1: PUSH PDP,LINE JUMPE CHREC,PTYIN5+1 ;NO ;YES,SAVE LINE NO. PTYIN4: TLNN PIOS,IO+SP ;IS TTY DONE? - JRST PTYI38 ;YES. THATS ALL + JRST PTYI3B ;YES. THATS ALL MOVE DAT,CHREC PUSHJ PDP,STODAT ;STORE CHARACTER JRST ADRERR @@ -232,7 +232,9 @@ PTYIN5: JUMPE ITEM,PTYI3A ;IF COUNT RUNS OUT EXCH PDDB,DDB PUSH PDP,LINE JRST PTYIN4 - PTYI3A: TRZ IOS,IOBKTL + + +PTYI3A: TRZ IOS,IOBKTL TRO IOS,IOPTRE ;INPUT READY PTYI3B: PUSHJ PDP,STOSQD JRST ADRERR @@ -250,6 +252,8 @@ PTYI10: TLZE IOS, IOW POP PDP, LINE PTYIN8: MOVEM IOS, DEVIOS(DDB) POPJ PDP, + + ;SAVE ACCUMULATORS ;CALL MOVEI DDB,ADDRESS OF PTYDB ; JSR PTYSAV @@ -258,19 +262,21 @@ PTYIN8: MOVEM IOS, DEVIOS(DDB) IFE FTCHECK+FTMONP,< PTYSAV: 0 > -PTYSA0: MOVEM SCHHAC,PTYBDN(DDB) ;SAVE HIGH AC +PTYSA0: MOVEM SCNHAC,PTYBND(DDB) ;SAVE HIGH AC HRRZ SCNHAC,DDB - ADDI SCHNHAC,PTYBM1 + ADDI SCNHAC,PTYBM1 HRRM SCNHAC,PTYSA2 SUBI SCNHAC,SCNHAC-1 XCT PTYSA2 ;DO BLT SCNHAC MOVE PDDB,DDB JRST @PTYSAV + ;RESTORE ACCUMULATORS ;CALL MOVEI PDDB,PTY DATA BLOCK ADDRESS ; JSR PTYRET + IFE FTCHECK+FTMONP,< PTYRET: 0 > @@ -282,6 +288,7 @@ PTYRE0: HRRZ SCNHAC,PDDB ;SAVE ONLY PIOS AND PDDB + IFE FTCHECK+FTMONP,< PACSAV: 0 > @@ -311,7 +318,6 @@ PTYPE: MOVE PDDB,LINE PTWAKE: PUSH PDP,TEM PUSH PDP,TAC1 LDB TAC,[POINT 6,DEVCHR(PDDB),5] ;PTY JOB NR - HRRZ TAC1,CLOCK ;LAST JOB IN CLOCK QUEUE PTWAK2: CAIN TAC1,CIPWTM1 ;LOOKED AT ALL JOBS JRST PTWAK1 ;YES, WAS NOT SLEEPING @@ -333,15 +339,16 @@ PTWAK1: POP PDP,TAC1 INTERNAL PTYOW,PTMNMD,PTMNMZ -PTMNMD: PUSH PDP,PIOS + +PTMNMD: JSR PACSAV ;SAVE 2 AC'S MOVEI PIOS,MONMOD ;PTY INTO MONITOR MODE JRST PTYSET -PTMNMZ: PUSH PDP,PIOS +PTMNMZ: JSR PACSAV ;SAVE AC'S HRROI PIOS,MONMOD ;PTY OUT OF MONITOR MODE JRST PTYSET -PTYOW: PUSH PDP,PIOS +PTYOW: JSR PACSAV MOVEI PIOS,IOPTW ;PTY IN OUTPUT WAIT PTYSET: MOVE PDDB,LINE @@ -352,6 +359,6 @@ PTYSET: MOVE PDDB,LINE IORB PIOS,DEVIOS(PDDB) TRNE PIOS,IOPTW ;IS LINKED TTY JOB IN INPUT WAIT? PUSHJ PDP,PTWAKE ;YES, WAKE UP CONTROL JOB - JSRT ACRET + JRST ACRET + END -