|
|
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: 10514 (0x2912)
Notes: pts_type(SC)
Names: »TDISP.SC«
└─⟦c47f25c27⟧ Bits:30009688 Philips computer tape "600318"
└─⟦this⟧ »M:KMDV/TDISP.SC«
└─⟦efe3a1cfc⟧ Bits:30009667 Philips computer tape "600113"
└─⟦this⟧ »TOSSWORK/TDISP.SC«
└─⟦fcfed1ed9⟧ Bits:30009706 Philips computer tape "M_167"
└─⟦this⟧ »M:167D/TDISP.SC«
IDENT TDISP REL 8.2 78-09-15 870105040820 * ************************************************** * * PHILIPS TERMINAL SYSTEM PTS * * TDISP = TERMINAL DISPATCHER * * * * * * ************************************************** * * * * THIS IS THE TERMINAL DISPATCHER IN TOSS. * ENTRY POINT IS 'TDISP' WITH 8 REGISTERS ON A15 STACK. * THE DISPATCHER CHECKS IF THERE IS A JOB IN DISPATCHER- * QUEUE WITH HIGHER PRIORITY THAN INTERRUPTED PROGRAM. * - IF SO THE QUEUED PROGRAM IS STARTED AND REGISTERS * A1-A14 OF INTERRUPTED PROGRAM ARE SAVED ON A15 STACK. * - IF NOT RETURN IS GIVEN TO INTERRUPTED PROGRAM VIA RETUR8. * * AN ENTRYPOINT 'LKMDIS' IS ALSO INCLUDED IN THIS MODULE. * THIS PART IS DISPATCHED AFTER EACH LKM-REQUEST.(NO REGISTERS * ON STACK) A CHECK IS MADE IF THERE IS A JOB IN DISPATCHER QUEUE * WITH HIGHER PRIORITY THAN INTERRUPTED PROGRAM. * - IF QUEUED JOB IS STARTED * - IF NOT RETURN IS GIVEN TO INTERRUPTED PROGRAM VIA RETU14. * * * AN OPTIONALY ENTRYPOINT 'DISIOE' IS ALSO PROVIDED FOR * ERRORS IN I/O DRIVERS. BIT 0 IS SET IN A1 AND THE SUB- * ROUTINE 'TENDIO' IS CALLED BEFORE THE 'TDISP'-ENTRY * IS ENTERED. * ENTRY 'DISEND' ONLY CALLS 'TENDIO' BEFORE 'TDISP'-ENTRY. EJECT * *********** * ENTRIES * *********** * ENTRY TDISP DISPATCHER ENTRY ENTRY LKMDIS DISPATCHED AFTER LKM ENTRY DISIOE I/O ERROR ENTRY ENTRY DISEND END I/O AND DISPATCH ENTRY DISQUE POINTER TO FIRST PLACE IN DISPATCHER-QUEUE ENTRY GBQUE POINTER TO FIRST TTAB IN BUFFER QUEUE ENTRY PRUN TTAB-ADDRESS OF RUNING PROGRAM ENTRY SRUN RUNNING SEGMENT ENTRY RETU14 RESTORE REGISTER A14-A1 VIA A15 STACK ENTRY RETU13 ENTRY RETU12 ENTRY RETU11 ENTRY RETU10 ENTRY RETUR9 ENTRY RETUR8 ENTRY RETUR7 ENTRY RETUR6 ENTRY RETUR5 ENTRY RETUR4 ENTRY RETUR3 ENTRY RETUR2 ENTRY RETUR1 ENTRY RTNA15 ENTRY FREQUE ENTRY BLOCKL EJECT ENTRY DWTCHP CHANNEL PARAMETER ENTRY DWTST STATUS ENTRY DWTECB ECB ADDRESS ENTRY DWTOR ORDER ENTRY DWTADR POINTER TO ADDRESS-BLOCK ENTRY DWTTAB TTAB-ADDRESS ENTRY DWTWAT WAIT ACTIVATE INDICATOR ENTRY DWTTQ TERMINAL QUEUE ENTRY DWTWA WORK AREA ENTRY DWTTDM DM REQUEST TTAB ADDRESS ENTRY DWTVOL VOLUME NAME ENTRY ECBBA,ECBRL,ECBEL ENTRY ECBRC,ECBCW ENTRY SACT ACTIVE SEGMENT POINTER ENTRY LRUNEW DUMMY FOR MEMORY MANAGEMENT (OVERLAY) EJECT * ************* * EXTERNALS * ************* * * DISPLACEMENT IN TTAB * EXTRN TTB:SA SAVE AREA EXTRN TTB:ST STATUS EXTRN TENDIO END I/O EXTRN EXIT PROGRAM EXIT EXTRN BLOK:S START OF BLOCK POOL EXTRN BLOCKE BLOCK POOL LENGTH EJECT * ****************************************** * * DWT-DISPLACEMENT DECLARATIONS * ***************************************** * DWTCHP EQU 0 CHANNEL PARAMETER DWTST EQU 2 STSTUS DWTECB EQU 4 ECB-ADDRESS DWTOR EQU 6 ORDER DWTADR EQU 8 ADDRESS BLOCK POINTER DWTTAB EQU 10 TTAB-ADDRESS DWTWAT EQU 12 WAIT/ACTIVATE INDICATOR DWTTQ EQU 14 TERMINAL QUEUE DWTWA EQU 16 WORK AREA DWTTDM EQU 16 DM RQEUEST TTAB ADDRESS DWTVOL EQU 44 VOLUME NAME * ****************************** * * ECB-DISPLACEMENTS * ****************************** * ECBBA EQU /02 ECBRL EQU /04 ECBEL EQU /06 ECBRC EQU /08 ECBCW EQU /0A EJECT * * D I S Q U E * * POINTER TO FIRST PLACE IN DISPATCHER QUEUE * DISQUE EQU * DATA 0 * * P R U N * * TTAB-ADDRESS OF RUNING PROGRAM * PRUN EQU * DATA 0 * * S R U N * * RUNNING SEGMENT POINTER * SRUN EQU * DATA 0 ******************************* * * S A C T * **************** SACT DATA 0 ACTIVE SEGMENT POINTER * * L R U N E W * LRUNEW EQU * * * G B Q U E * * POINTER TO FIRST TASK TABLE IN BUFFER QUEUE * GBQUE EQU * DATA 0 FREQUE DATA BLOK:S BLOCKL DATA BLOCKE * EJECT * * D I S I O E * * SET BIT 0 IN ECB RETURN CODE AND GO TO TDISP-ENTRY * DISIOE EQU * LDKL A1,/8000 SET RETURN CODE * DISEND EQU * CF A15,TENDIO EJECT * * * T D I S P * * THIS IS THE DISPATCHER ENTRY * TDISP EQU * INH LD A5,DISQUE RF(Z) RETUR8 NO QUEUE,RETURN LD A1,18,A15 LOAD PSW FROM STACK SRL A1,10 GET LEVEL CC A1,TTB:ST+1,A5 AND COMPARE WITH QUEUED LEVEL RF(NG) RETUR8 RETURN TO INTERRUPTED PROGRAM STR A9,A15 SAVE A9-A14 ON STACK STR A10,A15 STR A11,A15 STR A12,A15 STR A13,A15 STR A14,A15 LD A1,PRUN STR A1,A15 SAVE PRUN ON STACK AND DISPATCH QUEUED PROGRAM EJECT * * * DISPATCH PROGRAM FIRST IN DISPATCHER QUEUE * * A5 = TTAB-ADDRESS OF PROGRAM TO BE DISPATCHED * DIS100 EQU * LDR* A1,A5 REMOVE JOB FROM DISPATCHER QUEUE ST A1,DISQUE LD A1,TTB:SA,A5 LOAD DISPATCH ADDRESS LD A2,TTB:ST+1,A5 LOAD LEVEL SLL A2,10 CWK A2,/C000 MONITOR JOB ? RF(E) DIS200 YES STR A1,A15 STORE DISPATCH ADDRESS STR A2,A15 AND LEVEL ON STACK LDR A3,A5 ADK A3,14 SET ADDRESS TO A1 IN SAVE AREA LDK A1,14 SET COUNTER DIS110 LDR* A2,A3 SET UP A1-A14 ON STACK STR A2,A15 ADK A3,2 SUK A1,1 RB(NZ) DIS110 DIS120 ST A5,PRUN SET TABB-ADDRES FOR DISPATCHED PROG. START QUEUED PROGRAM (A1-A14 ON STACK) EJECT * * * R E T U R * * ENTRYPOINTS RETU14-RETUR1 :RELOAD REGISTERS FROM STACK * AND RETURN VIA A15 * RETU14 LDR* A14,A15 RETU13 LDR* A13,A15 RETU12 LDR* A12,A15 RETU11 LDR* A11,A15 RETU10 LDR* A10,A15 RETUR9 LDR* A9,A15 RETUR8 LDR* A8,A15 RETUR7 LDR* A7,A15 RETUR6 LDR* A6,A15 RETUR5 LDR* A5,A15 RETUR4 LDR* A4,A15 RETUR3 LDR* A3,A15 RETUR2 LDR* A2,A15 RF RETUR1 RTNA15 STR A1,A15 RETUR1 LDK A1,/40 BIT 9 ORS A1,4,A15 SET PSW IN A15 STACK TO ENB LDR* A1,A15 RTN A15 EJECT * * * MONITOR JOB DISPATCHING * DIS200 EQU * LDKL A3,LKMDIS STORE ADDRESS TO BE DISPATCHED AFTER MONITOR STR A3,A15 JOB ON STACK STR A2,A15 STORE LEVEL 48 ON STACK SUKL A15,16 ADJUST STACK POINTER STR A1,A15 SET MONITOR JOB DISPATCH ADDRESS ON STACK STR A2,A15 SET LEVEL LD A1,TTB:SA+2,A5 LOAD PARAMETER IN A1 STR A1,A15 AND SET ON STACK CF A15,EXIT DO EXIT ON MONITOR JOB AND RB RETUR1 THEN START IT EJECT * * * L K M D I S * * THIS PART IS DISPATCHED AFTER EACH LKM-REQUEST * NO REGISTERS ON STACK * * LKMDIS EQU * INH LD A5,DISQUE RF(Z) DIS010 NO QUEUE,RETURN LD A1,32,A15 LOAD PSW FROM STACK SRL A1,10 GET LEVEL CC A1,TTB:ST+1,A5 AND COMPARE WITH QUEUED LEVEL RB(G) DIS100 DISPATCH FROM QUEUE DIS010 LDR* A5,A15 RB DIS120 RETURN TO INTERRUPTED PROGRAM * * END