|
|
DataMuseum.dkPresents historical artifacts from the history of: Philips Data Systems |
This is an automatic "excavation" of a thematic subset of
See our Wiki for more about Philips Data Systems Excavated with: AutoArchaeologist - Free & Open Source Software. |
top - metrics - download
Length: 4696 (0x1258)
Notes: pts_type(SC)
Names: »TABORT.SC«
└─⟦13e5fd45a⟧ Bits:30009699 Philips computer tape "600507"
└─⟦this⟧ »TOSSWORK/TABORT.SC«
└─⟦bc20f3abf⟧ Bits:30009670 Philips computer tape "600126"
└─⟦this⟧ »TOSSWORK/TABORT.SC«
IDENT TABORT REL 11.0 81-01-26 870105041100 * * ************************************************* * * PHILIPS TERMINAL SYSTEM PTS * * TABORT = ABORT I/O REQUEST * * * * * * ************************************************* * * * THIS MODULE CONTAINS THE * ABORT I/O REQUEST LKM PROCESSOR. * * EJECT TABORT * * *********** * ENTRIES * *********** * * ENTRY TABORT EJECT TABORT * * ************* * EXTERNALS * ************* * * EXTRN FNDDWT FIND DWT ADDRESS EXTRN DWTST DWT STATUS EXTRN DWTADR DRIVER ADDRESS BLOCK EXTRN DWTTAB TTAB ADDRESS IN DWT EXTRN DWTWAT WAIT ACTIVATE INDICATOR IN DWT EXTRN DWTECB ECB ADDRESS EXTRN DWTSB2 2ND STACK BASE IN DWT EXTRN DWTECH ECHO DEVICE DWT ADDRESS EXTRN TENDIO END I/O EXTRN ABTADR ABORT ROUTINE ADDRESS EXTRN DISEND TENDIO AND TDISP EXTRN LKMRQE LKM REQUEST ERROR EXTRN FREBLK FREE ONE BLOCK EXTRN ECBRC ECN RETURN CODE EJECT TABORT * * ***************************************** * * CONDITIONAL ASSEMBLY * ***************************************** * * A PROGRAM VERSION USING TOSS MMU PAGING * IS OBTAINED BY SETTING MMUPAG EQU 1. * MMUPAG EQU 0 * EJECT TABORT * * ********** * TABORT * ********** * * * THIS IS THE ABORT I/O REQUEST LKM PROCESSOR. * * IT IS ENTERED FROM THE LKM HANDLER * WITH THE FOLLOWING PARAMETERS: * * A5 = TTAB ADDRESS * A8 = ECB ADDRESS * * A PENDING I/O REQUEST IS ABORTED. * THE ABORT REQUEST MUST BE ISSUED FROM THE SAME TASK * THAT MADE THE I/O REQUEST. THUS I/O WITH WAIT CAN * NOT BE ABORTED. * * TABORT EQU * IFT MMUPAG=0 LDR* A3,A8 FIRST WORD OF ECB XIF * IFT MMUPAG=1 ELR A3,A8 FIRST WORD OF ECB XIF * RF(N) TABRQE REQUEST ALREADY COMPLETED CF A15,FNDDWT LOOK FOR DWT ADDRESS LDR A7,A6 SAVE DWT ADDRESS RF(Z) TABRQE DWT UNKNOWN * EJECT TABORT * * CW A5,DWTTAB,A6 RF(NE) TABRQE ILLEGAL TASK LD A2,DWTADR,A6 ADDRESS TO DRIVER ADDRESS BLOCK LD A9,ABTADR,A2 ABORT ROUTINE ADDRESS CWK A9,1 RF(E) TABRQE ABORT NOT ALLOWED LD A4,DWTST,A6 RF(N) TABRQE DEVICE NOT BUSY SLC A4,2 RF(NN) TAB:20 NOT ECHO REQUEST LD A6,DWTECH,A6 ECHO DWT ADDRESS LD A3,DWTADR,A6 ADDRESS TO ECHO DRIVER ADDRESS BLOCK LD A3,ABTADR,A3 ABORT ROUTINE ADDRESS RF(NZ) TAB:10 CF A15,TENDIO SET ECHO DEVICE FREE * TAB:10 EQU * SUK A3,1 RF(Z) TABRQE ABORT NOT ALLOWED ON ECHO DEVICE LDR A6,A7 RESTORE DWT ADDRESS * TAB:20 EQU * LD A4,DWTWAT,A6 RF(Z) TAB:30 I/O WITH NO WAIT CF A15,FREBLK I/O AND ACTIVATE. FREE DISPATCHER BLOCK * EJECT TABORT * * TAB:30 EQU * LD A8,DWTECB,A6 ACTUAL ECB ADDRESS LDK A1,1 ST A1,DWTWAT,A6 INDICATE WAIT SRC A1,2 A1 := /4000 ORS A1,ECBRC,A8 SET RETURN CODE TO ABORTED LDKL A5,DWTSB2 2ND STACK BASE DISPLACEMENT IN DWT ADR A5,A6 ADD DWT ADDRESS * * EXIT IS MADE TO DRIVER ABORT ROUTINE * WITH THE FOLLOWING PARAMETERS: * * A5 = 2ND STACK BASE IN DWT * A6 = DWT ADDRESS * A8 = ECB ADDRESS (IN SYSTEM AREA IF MMU) * LDR A9,A9 ABORT ROUTINE ADDRESS ABR(NZ) A9 PERFORM ABORT ROUTINE (IF ANY) ABL DISEND TENDIO AND TDISP * TABRQE ABL LKMRQE GO AND INDICATE LKM ERROR * * * END