.PAGE .SBTTL ****** TRUNK WRITE ISR ****** ; .GLOBL TW0,TW1,TWPTR,DA2,DA3,PCB,PCBDAT,POLTAB,SAVE,RSTOR .GLOBL CRTAB,CR1,CR2,CR3,CR4,CR5,CR6,CONFLG,TRKRSP .GLOBL RCSRI,RBUFI,XCSRI,XBUFI,BOMB ; ; ; (NOTES LATER) ; NORMAL CHAR EXECUTES 39. INSTRUCTIONS ; NOCR2=1 ;DEFINED TO STRIP CR'S ; TW0: MOV #DA2,TWPTR ;SET TABLE PTR BR TWCOM TW1: MOV #DA3,TWPTR ;SET TABLE PTR ; TWCOM: JSR PC,SAVE ;DON'T MESS UP MAINLINE MOV TWPTR,R5 ;GET D.A. TABLE PTR MOV (R5)+,R4 ;GET # PCB'S 5$: MOV (R5)+,R3 ;GET PCB # MOV (R5)+,R2 ;GET D.A. ADD #XCSR,R2 ;POSITION TO XCSR ADR MOV R2,XCSRI ; SAVE IT CMP #X.RDY+X.IE,@XCSRI ;INTERRUPTED? BEQ 10$ ;YES 7$: SOB R4,5$ ;NO - MORE? JSR PC,BOMB ;NO - ERROR: WHO? 10$: ADD #2,R2 ; NEXT REG PLEASE MOV R2,XBUFI ;SET XBUF ADR REF CLC ;COMPUTE ROL R3 ;PCBDAT ROL R3 ;OFFSET MOV PCBDAT(R3),R0 ;GET PCB ADR 15$: ; DECB P.WC(R0) ;COUNT CHAR AS SENT - MORE? BEQ 30$ ;NO INC P.WBP(R0) ;YES - NEXT CHAR .IF DF,NOCR2 ; ;****************************RELEASE 17************************************** CMPB #1,P.WC(R0) ;BCC? * BEQ 16$ ;YES * ;****************************RELEASE 17************************************** ; CMPB #CR,@P.WBP(R0) ;IS THIS A CARRIAGE RETURN? BEQ 15$ ;YES - STRIP IT ; ;****************************RELEASE 17************************************** 16$: ; * ;****************************RELEASE 17************************************** ; .ENDC MOVB @P.WBP(R0),@XBUFI ; LOAD CHAR FOR OUTPUT 20$: JSR PC,RSTOR ;RESET REG'S ;EXIT ISR RTI ;USE THIS ?? 30$: ; CLRB P.WTIM(R0) ;KILL XMIT TIMER ; ; TRANSMISSIONS TO BURROUGHS ARE TIMED WHEN WE ARE TRYING TO ; BREAK CONTENTION, HENCE WE NO LONGER RESET THIS TIMER ; BIC #X.IE,@XCSRI ;KILL XMIT INTERRUPTS CMP P.WBFA(R0),#CR6+1 ;WAS THIS WRITE A CONTENTION BREAK? BNE 20$ ;NO CLR P.WBFA(R0) ;YES - CLEAR BUFFER ADR AREA BR 20$ ;EXIT ; .END