|
|
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: 10976 (0x2ae0)
Notes: pts_type(SC)
Names: »TPROC.SC«
└─⟦c47f25c27⟧ Bits:30009688 Philips computer tape "600318"
└─⟦this⟧ »M:KMDV/TPROC.SC«
└─⟦efe3a1cfc⟧ Bits:30009667 Philips computer tape "600113"
└─⟦this⟧ »TOSSWORK/TPROC.SC«
└─⟦fcfed1ed9⟧ Bits:30009706 Philips computer tape "M_167"
└─⟦this⟧ »M:167D/TPROC.SC«
IDENT TPROC REL 8.2 78-09-15 870105040820 * ************************************************** * * PHILIPS TERMINAL SYSTEM PTS * * TPROC = TOSS LKM PROCESSORS * TIO,TWAIT,TEXIT,TACTOT,TPAUSE * * * * * ************************************************** * * * * THIS MODULE CONTAINS MANDATORY LKM PROCESSORS * FOR TOSS. THESE ARE: * * -TIO INPUT/OUTPUT * * -TWAIT WAIT * * -TEXIT EXIT * * -TACTOT ACTIVATE/RESTART TERMINAL ** * -TPAUSE PAUSE TERMINAL * EJECT * *********** * ENTRIES * *********** * * ENTRY TIO I/O PROCESSOR * ENTRY TWAIT WAIT PROCESSOR * ENTRY TEXIT EXIT PROCESSOR * ENTRY TACTOT ACTIVATE/RESTART PROCESSOR * ENTRY TPAUSE PAUSE PROCESSOR * ENTRY TIOQ20 QUEUE DEVICE ENTRY TIOERR END REQUEST ENTRY TPQUE QUEUE JOB AND DISPATCH * EJECT * ************* * EXTERNALS * ************* * * EXTRN DWTADR DWT ADDRESS BLOCK POINTER EXTRN DWTTAB DWT TTAB ADDRESS EXTRN DWTWAT WAIT/ACTIVATE INDICATOR EXTRN DWTTDM DM TASK TTAB ADDRESS EXTRN FNDDWT SEARCH DWT EXTRN QTJOB QUEUE TERM.PROG. FOR DISP. EXTRN DWTOR ORDER EXTRN DWTECB ECB ADDRESS EXTRN DWTST STATUS EXTRN TDISP DISPATCHER EXTRN SRUN POINTER TO RUNNING SEGMENT IN LSBT EXTRN LKMRQE LKM REQUEST ERROR EXTRN GETBLK PUT BLOCK IN PENDING QUEUE EXTRN FREBLK RELEASE BLOCK FROM PENDING QUEUE EXTRN EXIT PROGRAM EXIT EXTRN TTMJOB TTAB-ADDRESS OF MJOBS EXTRN TTB:PP PENDING PROGRAM POINTER EXTRN TTB:ID TERMINAL IDENTIFICATION EXTRN FNDTID SEARCH TERMINAL IDENTIFICATION EXTRN ACTOT 'ACTIVATE' TERMINAL EXTRN TTB:ST TASK STATUS AND LEVEL EXTRN TTB:SA SAVE AREA EXTRN TIODM ENTRY ADDR EXTRN ATTACH ATTACH ENTRY EXTRN DETACH DETACH ENTRY EJECT * * ************* * CONSTANTS * ************* * * DISPLACEMENT IN DEVICE WORK TABLE AND EVENT CONTROL BLOCK * DWTTQ EQU /0E TASK QUEUE IN DWT DWTSB2 EQU /1E STACK BASE 2 IN DWT DWTECH EQU /22 ECHO-DEVICE DWT ECBEL EQU /06 EFFECTIVE LENGTH IN ECB ECBRC EQU /08 RETURN CODE IN ECB EJECT * * * T I O * * * THIS MODULE IS ENTERED WHEN TERMINAL I/O * IS REQUIRED. IF A REQUEST CANNOT BE SERVICED * DUE TO E.G. BUSY DEVICE, THE REQUEST IS QUEUED * AND THE TERMINAL PROGRAM SET IN WAIT STATE. * THIS MODULE IS CALLED BY THE LKM HANDLING MODULE * WITH THE FOLLOWING PARAMETERS:- * * A1 = PARAMETER WHEN I/O AND ACTIVATION * * A4 = ZERO, NORMAL I/O REQUEST * NOT ZERO, I/O AND ACTIVATION * * A5 = TTAB ADDRESS * * A7 = CODE * * A8 = ECB ADDRESS * * * THE 'TIO'-ROUTINE EXITS TO REQUESTED ACTIVATION DRIVER * WITH THE FOLLOWING REGISTER VAULES:- * * A5 = STACK BASE 2 IN DWT * * A6 = DWT-ADDRESS * * A7 = ORDER * * A8 = ECB-ADDRESS * EJECT * * THE FOLLOWING DWT FIELDS ARE UPDATED:- * * -DWTOR DWT-INDEX AND ORDER * -DWTECB ECB ADDRESS * -DWTST READY AND ECHO FIELDS * -DWTTAB TTAB ADDRESS * -DWTWAT WAIT/ACTIVE INDICATOR * * * THE FOLLOWING ECB FIELDS ARE RESET:- * * -BITS 0-7 IN THE FIRST WORD * -ECBEL EFFECTIVE LENGTH * -ECBRC RETURN CODE * * * GET DWT ADDRESS AND CHECK IF DEVICE IS BUSY * TIO CF A15,FNDDWT SEARCH DWT ADDRESS LDKL A3,/8000 LDR A6,A6 ABL(Z) TIOERR FILE CODE UNKNOWN LD A9,2,A5 TASK STATUS LDR A11,A9 SAVE TASK STATUS RF(N) TIO020 DMTASK CALLING LDKL A9,/4000 REQUEST BUSY BIT AN A9,DWTST,A6 RF(NZ) TIOQ20 REQ BUSY,NOT DMTASK CALL TIO020 EQU * CCK A7,/BB00 ABL(E) ATTACH ATTACH ORDER CCK A7,/BC00 ABL(E) DETACH DETACH ORDER LDR A11,A11 TASK STATUS RF(N) TIO030 DM TASK,SKIP ATTACH CONTROL LDKL A10,/0800 ATTACH BIT AN A10,DWTST,A6 RF(Z) TIO030 NOT ATTACHED CW A5,DWTTAB,A6 RF(NE) TIOQ20 ATTACHED TO OTHER TASK AN A3,DWTST,A6 RF(Z) TIOQ05 DEVICE BUSY TIO030 EQU * AN A3,DWTST,A6 RF(Z) TIOQ20 DEVICE BUSY TIO035 EQU * SC A2,DWTOR,A6 STORE DWT INDEX LDK A2,/40 CHECK IF ECHO ANR A2,A7 RF(Z) TIO100 NOT ECHO LDKL A2,TIODM CW A2,DWTADR,A6 RF(E) TIO090 DM-REQUEST LD A2,DWTECH,A6 LOAD ECHO DEVICE RF(Z) TIO100 NO ECHO DEVICE LDKL A10,/100 BIT 7=INPUT DEVICE ANR* A10,A6 ECHO ALLOWED? RF(Z) TIO100 NO! LDKL A10,/0800 ATTACH BIT AN A10,DWTST,A2 RF(Z) TIO040 ECHO DEVICE NOT ATTACHED CW A5,DWTTAB,A2 RF(NE) TIOQ10 ECHO ATTACHED TO OTHER TASK AN A3,DWTST,A2 RF(Z) TIOQ00 ECHO DEVICE BUSY TIO040 AN A3,DWTST,A2 RF(Z) TIOQ10 ECHO DEVICE BUSY LDKL A3,/A000 XRS A3,DWTST,A2 UPDATE BUSY AND ECHO IN DWT * * UPDATE ECB AND DWT FIELDS * TIO090 LDKL A3,/A000 BUSY AND EA BIT FOR DM TIO100 XRS A3,DWTST,A6 UPDATE BUSY AND ECHO IN DWT LDKL A3,/7FFF ANRS A3,A8 RESET BIT 0 IN ECB FILE-CODE CM ECBEL,A8 -EFFECTIVE LENGTH CM ECBRC,A8 -RETURN CODE LDR A3,A7 SAVE CODE ANK A7,/3F SC A7,DWTOR+1,A6 STORE ORDER IN DWT LDKL A2,TIODM CW A2,DWTADR,A6 DM REQUEST? RF(E) TIO110 YES! ST A5,DWTTAB,A6 SAVE TTAB ADDRESS IN DWT RF TIO120 TIO110 EQU * ST A5,DWTTDM,A6 SAVE TTAB ADDRESS IN DWTTDM TIO120 EQU * ST A8,DWTECB,A6 -ECB ADDRESS EJECT * * UPDATE DWTWAT (WAIT/ACTIVE INDICATOR) * LDR A2,A4 CHECK PARAMETER RF(NZ) TIO200 I/O AND ACTIVATION ANK A3,/80 NORMAL I/O CHECK IF WAIT REQUESTED RF(Z) TIO220 NOT WAIT LDK A4,1 INDICATE WAIT RF TIO230 TIO200 LD A3,SRUN SEGM. POINTER RF(Z) TIO210 JUMP IF ROOT SU A2,2,A3 RELATIVE ADDRESS TIO210 CF A15,GETBLK SAVE PARAMETER AND DISPATCH ADDRESS TIO220 CF A15,QTJOB QUEUE TASK FOR DISPATCHING TIO230 ST A4,DWTWAT,A6 STORE WAIT/ACTIVE INDICATOR LDK A5,DWTSB2 LOAD STACK BASE 2 IN A5 ADR A5,A6 ABI* DWTADR,A6 GO TO DRIVER ACTIVATION EJECT * * QUEUE ECHO DEVICE FIRST * TIOQ00 LDR A6,A2 * * QUEUE DEVICE FIRST * TIOQ05 EQU * ADK A6,DWTTQ GET QUEUE ANCHOR LDR A2,A6 LDR* A6,A6 RF TIOQ40 INSERT FIRST IN QUEUE TIOQ10 LDR A6,A2 QUEUE ECHO DEVICE TIOQ20 ADK A6,DWTTQ GET QUEUE ANCHOR LC A1,TTB:ST+1,A5 GET LEVEL TIOQ30 LDR A2,A6 LDR* A6,A6 FOLLOW QUEUE TO END RF(Z) TIOQ40 END FOUND CC A1,TTB:ST+1,A6 COMPARE LEVELS RB(NL) TIOQ30 TRY NEXT TIOQ40 LDK A3,0 STR A6,A5 INSERT IN QUEUE STR A5,A2 SUK A3,4 LDR A4,A4 CHECK IF ACTIVATION RF(Z) TIOQ50 NO SUK A3,2 YES TIOQ50 ADS A3,TTB:SA,A5 UPDATE PC TO REPEAT LKM RF TPDIS * * ERROR FILE CODE UNKNOWN * TIOERR ST A3,ECBRC,A8 INDICATE ERROR IN ECB TPQUE CF A15,QTJOB QUEUE TASK FOR DISPATCING TPDIS ABL TDISP EJECT * * * W A I T * * THIS MODULE IS ENTERED WHEN THE APPLICATION PROGRAM * WANTS TO SYNCHRONIZE WITH A PARTICULAR EVENT. * IT IS CALLED BY THE LKM HANDLER WITH THE FOLLOWING * PARAMETERS:- * * A5 = TTAB ADDRESS * * A8 = ECB ADDRESS * * * TWAIT EQU * CF A15,FNDDWT SEARCH DWT ADDRESS LDR A6,A6 RF(Z) TAC010 FILE CODE UNKNOWN LDR* A1,A8 RETURN IF EVENT COMPLETED RB(N) TPQUE COMPLETED IM DWTWAT,A6 SET WAIT INDICATOR IN DWT RB TPDIS GO TO DISPATCHER EJECT * * * E X I T * * * THIS MODULE IS ENTERED WHEN A TERMINAL PROGRAM * EXITS. IF ANY PROGRAM IS PENDING FOR THE * TERMINAL IT IS STARTED. * THIS MODULE IS CALLED BY THE LKM HANDLER * WITH THE FOLLOWING PARAMETERS:- * * A5 = TTAB ADDRESS * * TEXIT EQU * CF A15,EXIT CALL PROGRAM EXIT RB TPDIS GO TO DISPATCHER EJECT * * * T A C T O T * * * THIS MODULE IS ENTERED FROM THE LKM HANDLER * WHEN A TERMINAL HAS TO BE ACTIVATED. * * THE FOLLOWING PARAMETERS ARE SUPPLIED:- * A1 = PARAMETER WHEN A4 NOT ZERO * A4 = START ADDRESS AT ACTIVATION, ELSE ZERO * A5 = TTAB * A7 = IDENTIFICATION FOR TERMINAL TO BE ACTIVATED * * TACTOT EQU * CF A15,FNDTID FIND TTAB ADDRESS LDR A2,A2 TAC010 EQU * ABL(Z) LKMRQE TERMINAL NOT IN SYSTEM CF A15,QTJOB QUEUE CALLING TERMINAL FOR DISPATCHING LDR A5,A2 LDR A2,A4 RB(Z) TPQUE RESTART: QUEUE FOR DISPATCHING LD A3,SRUN SEGMENT POINTER RF(E) TAC020 JUMP IF ROOT SU A2,2,A3 RELATIVE ADDRESS TAC020 EQU * LDK A7,0 ABORT PARAMETER CF A15,ACTOT ACTIVATION RB TPDIS GO TO DISPACHER EJECT * * * T P A U S E * * TPAUSE EQU TPDIS GO TO DISPATCHER * END