|
|
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: 7980 (0x1f2c)
Notes: pts_type(SC)
Names: »ATTACH.SC«
└─⟦efe3a1cfc⟧ Bits:30009667 Philips computer tape "600113"
└─⟦this⟧ »TOSSWORK/ATTACH.SC«
IDENT ATTACH REL 8.2 78-09-15 870105040820 * ******************************************* * * PHILIPS TERMINAL SYSTEM PTS * * ATTACH = ATTACH/DETACH HANDLER * * * * * * ******************************************* * * THIS MODULE IS CALLED FROM TIO WITH * PARAMETERS: * * A5 TTAB ADDRESS * A6 DWT ADDRESS * A7 ORDER * A8 ECB ADDRESS * **************************************** * EJECT * * E N T R I E S * ENTRY ATTACH ATTACH DEVICE ENTRY DETACH DETACH DEVICE ENTRY ATT:CH CHAIN ANCHOR * * * E X T E R N A L S * EXTRN GETBLK GET BLOCK EXTRN FREBLK FREE BLOCK EXTRN SETIMP SET TIMER EXTRN TTB:ST TTAB STATUS EXTRN TTB:SA DISPATCH ADDRESS EXTRN DWTST DWT STATUS EXTRN DWTTQ EXTRN DWTTAB TTAB EXTRN DWTADR ACTIVATION ADDR EXTRN TIOQ20 INSERT TTAB IN DEVICE QUEUE EXTRN TIOERR END REQUEST EXTRN TDISP DISPATCHER EXTRN TPQUE QUEUE TTAB EXTRN QTJOB EXTRN IHRTN EXTRN FDBADF ADDRESS OF DATA FILE FDB EXTRN TIODM DM ENTRY EJECT * * A T T A C H * ATTACH EQU * ENTRY LDR A4,A4 I/O AND ACTIVATE? RF(NZ) ATT:30 YES, REQUEST ERROR CM 8,A8 RESET RETURN CODE * * ABORT REQUEST IF BIT 1 IN TTB:ST SET * LDKL A2,/4000 BIT 1 AN A2,TTB:ST,A5 RF(Z) ATT:10 DON'T ABORT XRS A2,TTB:ST,A5 RESET BIT 1 RF ATT:55 END REQUEST ATT:10 LDKL A2,/800 ATTACH BIT LDR A1,A2 SAVE AN A2,DWTST,A6 RF(NZ) ATT:40 DEVICE ALREADY ATTACHED LD A3,DWTST,A6 RF(NN) ATT:50 DEVICE BUSY * * ATTACH REQUESTING TASK * ORS A1,DWTST,A6 ATTACH ST A5,DWTTAB,A6 PUT TTAB ADDRESS IN DWT LDKL A4,TIODM CW A4,DWTADR,A6 RF(NE) ATT:15 NO DM REQUEST CF A15,FDBATT ATTACH FILE STRUCTURE ATT:15 EQU * CF A15,FNDBLK ANY TIMERS ACTIVE? LDR A4,A4 RF(Z) ATT:20 NO! * * FREE BLOCK AND TIMER IN ATT:CH * CM* 2,A4 FREE TIMER LDR* A3,A4 REMOVE FROM ATT:CH STR A3,A2 CF A15,FREBLK RELEASE BLOCK ATT:20 LDK A3,0 RETURN CODE ATT:30 ABL TIOERR END REQUEST ATT:35 LDKL A3,/8000 RETURN CODE RB ATT:30 ATT:40 CW A5,DWTTAB,A6 ATTACHED TO REQUESTING TASK RB(E) ATT:35 YES, REQUEST ERROR ATT:50 CF A15,FNDBLK IS TIMER ACTIVE? LDR A4,A4 RF(NZ) ATT:80 YES! * * SET TIMER * LD A1,10,A8 TIME RB(N) ATT:35 TIME NEGATIVE RF(NZ) ATT:60 SET TIMER ATT:55 LDK A3,/40 RETURN CODE RB ATT:30 END REQUEST ATT:60 ST A1,ATTIM LDR A1,A5 TTAB ADDRESS CF A15,GETBLK GET BLOCK LD A1,ATT:CH ANCHOR STR A1,A4 ST A4,ATT:CH UPDATE ANCHOR ADK A4,2 TIMER POINTER ADDRESS LDR A1,A6 DWT ADDRESS CF A15,SETIMP SET TIMER DATA TIMOUT ATTIM DATA 0 ATT:80 LDK A4,0 NOT ACTIVATION PARAMETER ABL TIOQ20 EJECT * * D E T A C H * DETACH EQU * LDR A4,A4 RB(NZ) ATT:30 I/O AND ACTIVATE-ERROR LDKL A1,/800 AN A1,DWTST,A6 RB(Z) ATT:35 NOT ATTACHED CW A5,DWTTAB,A6 RB(NE) ATT:35 ATTACHED TO OTHER TASK XRS A1,DWTST,A6 DETACH LDKL A4,TIODM CW A4,DWTADR,A6 RF(NE) DET:05 NO DM REQUEST CF A15,FDBDET DETACH FILE STRUCTURE RB ATT:20 END REQUEST DET:05 EQU * LDR A2,A6 QREQ INPUT CF A15,QREQ UPDATE DWTTQ RB ATT:20 END REQUEST EJECT * * T I M E O U T * * ENTRY PARAMETERS * A1 DWT ADDRESS * A2 ADDRESS TO 2:ND TIMER BLOCK * TIMOUT EQU * LDR A6,A1 LDR* A2,A2 TIMER POINTER ADDRES ADK A2,2 LDR* A5,A2 TTAB ADDRESS CF A15,FNDBLK LDR* A1,A4 STR A1,A2 REMOVE FROM ATT:CH CF A15,FREBLK * * REMOVE TTAB FROM DEVICE QUEUE * LDR A1,A6 ADKL A1,DWTTQ QUEUE ANCHOR ADDRESS TIM:10 LDR A2,A1 SAVE LDR* A1,A1 NEXT IN QUEUE RF(NZ) TIM:30 CONTINUE SEARCH LDKL A1,/4000 BIT 1 ORS A1,TTB:ST,A5 SET BIT 1 IN TTAB STATUS ABL TDISP TIM:30 EQU * CWR A1,A5 RB(NE) TIM:10 NOT FOUND * * TTAB FOUND - REMOVE FROM QUEUE * LDR* A1,A1 STR A1,A2 LDK A3,4 ADS A3,TTB:SA,A5 UPDATE DISPACH ADDRESS CF A15,SETRCE SET RETURN CODE IN ECB ABL TPQUE ATT:CH DATA 0 ATTACH CHAIN ANCHOR EJECT * * F N D B L K * * SUBROUTINE TO FIND BLK IN ATT:CH * * ENTRY PARAMETERS: * * A5 TTAB ADDRESS * * EXIT PARAMETERS: * * A2 ADDRESS TO PRECEDING BLK IN CHAIN * A4 BLOCK ADDRESS IF FOUND ELSE 0 * FNDBLK LDKL A4,ATT:CH ANCHOR ADDRESS FND:10 LDR A2,A4 SAVE LDR* A4,A4 RF(Z) FND:30 END OF ATT:CH CW A5,4,A4 RB(NE) FND:10 NOT FOUND FND:30 ABL IHRTN EJECT * * S E T R C E * * THIS SUBROUTINE SETS RETURN CODE /0040 IN ECB. * ECB ADDRESS IS FOUND FROM TTAB SAVE AREA * * ENTRY PARAMETERS: A5 TTAB ADDRESS * * EXIT PARAMETERS: A1 ECB ADDRESS * A5 TTAB ADDRESS * SETRCE LDR A1,A5 ADK A1,/1C A8 IN SAVE AREA LDR* A1,A1 ECB ADDRESS LDK A2,/40 RETURN CODE ORS A2,8,A1 INTO ECB ABL IHRTN EJECT * * F D B A T T / F D B D E T * * SUBROUTINE TO ATTACH/DETACH FDB7S IN A DM FILE * STRUCTURE * * ENTRY: A1 /0800 * A6 FDB ADDRESS * * WORKING REG. A2,A3,A4 * FDBDET EQU * C1R A1,A1 A1=FF7F FDBATT EQU * LDR A4,A6 FDB ADDRESS ADKL A4,FDBADF LDK A3,10 LOOP INDEX FDB:10 SUK A3,2 RF(N) FDB:30 ALL FDB'S READY LDR* A2,A4 NEXT FDB RF(Z) FDB:20 NO FDB LDR A1,A1 RF(N) FDB:15 DETACH REQUEST ORS A1,DWTST,A2 ATTACH / DETACH FILE ST A5,DWTTAB,A2 RF FDB:20 FDB:15 ANS A1,DWTST,A2 CF A15,QREQ UPDATE DWTTQ FDB:20 ADK A4,2 NEXT FDB ADDRESS RB FDB:10 FDB:30 ABL IHRTN EJECT * * Q R E Q = SUBROUTINE TO QUEUE TASK IN DEVICE QUEUE * (IF ANY) * * ON ENTRY: A2 DWT ADDRESS * WORK. REG. A7,A9 * QREQ EQU * LDR A9,A5 SAVE A5 (TTAB ADDRESS) LD A5,DWTTQ,A2 ANY TASK IN QUEUE? RF(Z) QRE:10 NO! LDR* A7,A5 YES,UPDATE QUEUE ANCHOR ST A7,DWTTQ,A2 CF A15,QTJOB QUEUE TASK QRE:10 EQU * LDR A5,A9 RESTORE TTAB ADDRESS ABL IHRTN END