|
|
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: 14246 (0x37a6)
Notes: pts_type(SC)
Names: »TIOEDM.SC«
└─⟦13e5fd45a⟧ Bits:30009699 Philips computer tape "600507"
└─⟦this⟧ »TOSSWORK/TIOEDM.SC«
└─⟦bc20f3abf⟧ Bits:30009670 Philips computer tape "600126"
└─⟦this⟧ »TOSSWORK/TIOEDM.SC«
IDENT TIOEDM REL 11.0 81-03-31 870105041100 =3 CLEAR STATUS FOR ADM =3 81-02-19 =2, COMMIT,$E PENDING AND EXIT R.C DESTROYED =2, REL 11.0 81-01-30 =1 RECOVERY AT ERR =1 81-01-26 * * **************************************************** * * PHILIPS TERMINAL SYSTEM PTS * * TIOEDM = EXTENDED DATA MANAGEMENT I/O * TENEDM = TOSS EDM END I/O LKM PROCESSOR * * * * * **************************************************** * * * CREATION OF PARAMETER BLOCK FOR EDM * AND ACTIVATION OF EDM TASK EJECT TIOEDM * * *********** * ENTRIES * *********** * * ENTRY TIOEDM I/O NORMAL ENTRY ENTRY TIOECR COMMIT/ROLLBACK ENTRY ENTRY TENEDM END IO EDM ENTRY PABORD ENTRY PABFC ENTRY PABBA ENTRY PABRL ENTRY PABCW1 ENTRY PABCW2 EJECT TIOEDM * * ************* * EXTERNALS * ************* * * EXTRN DMTIDP PRIMARY EDM TASK TABLE EXTRN DMTIDS SECONDARY EDM TASK TABLE EXTRN DWDM01 EXTRN DWTTAB TTAB ADDRESS EXTRN DWTECB ECB ADDRESS EXTRN FWTFNR FILE NUMBER EXTRN FWTVOL VOLUME FILE CODE 1ST EXTENT EXTRN DFTAB DISC FILE CODE TABLE EXTRN DFTABL LGTH OF DFTAB EXTRN SCTNOF EXTRN SCTFWT EXTRN SCTCDT CD TABELL EXTRN MOVUU EXTRN LKMRQE EXTRN DISIOE TERM OF IO REQUEST EXTRN LKMQDI QUEUE AND DISPATCH EXTRN QTJOB QUEUE TASK EXTRN DISEND EXTRN TTB:SA DISPATCH ADDRESS EXTRN TTB:ID TASK IDENTIFIER EXTRN TTB:TD EXTRN ACTDIS ACTOT AND DISPATCH EXTRN FNDTID FIND TTAB ADDRESS FROM TASK ID EXTRN TASHLT HALT AND LIGHT SOP SWITCHES * EJECT TIOEDM * * EXTRN ECBRC RETURN CODE EXTRN ECBEL EFFECTIV LENGTH EXTRN ECBBA ECB BUFFER ADDRESS EXTRN ECBRL ECB REQUESTED LENGTH EXTRN ECBCW1 ECB CONTROL WORD 1 EXTRN ECBCW2 ECB CONTROL WORD 2 EXTRN EXIT EXTRN SCTMOX TABLE WITH DISPATCH ADDRESSES * EJECT TIOEDM * * ***************************************** * * CONDITIONAL ASSEMBLY * ***************************************** * * A PROGRAM VERSION USING TOSS MMU PAGING * IS OBTAINED BY SETTING MMUPAG EQU 1. * MMUPAG EQU 0 * * * A PROGRAM VERSION USING THE EXTENDED INSTRUCTION * SET IS OBTAINED BY SETTING CPU852 EQU 0. * CPU852 EQU 1 * EJECT TIOEDM * * ************* * CONSTANTS * ************* * * * * BASE PARAMETER BLOCK DISPLACEMENTS * PABORD EQU 2 ORDER WORD PABFC EQU 4 FILE CODE PABBA EQU 6 BUFFER ADDRESS PABRL EQU 8 REQUESTED LENGTH PABCW1 EQU 10 CONTROL WORD 1 PABCW2 EQU 12 CONTROL WORD 2 * EJECT TIOEDM * ********** * TIOEDM * ********** * * THIS MODULE IS ENTERED FROM TIO * WITH THE FOLLOWING PARAMETERS: * * INPUT: A6 = FWT ADDRESS * A8 = ECB ADDRESS * * OUTPUT: A1 = ADDRESS OF PARAMETER BLOCK * A2 = EDM TASK IDENTITY (VIA ACTOT) * A4 = USER TASK IDENTITY * * CREATE PARAMETER BLOCK FOR NORMAL I/O * TIOEDM EQU * LD A5,DWTTAB,A6 USER TTAB AD A5,TTB:TD,A5 DEVICE TABLE LENGTH ADKL A5,TTB:TD BASE PAR BLOCK ADDR LDR* A2,A5 ACT TYPE OR A2,PABORD,A5 ORDER WORD RF(NZ) REQER2 OTHER REQ BUSY =1 CWK A6,DWDM01 LOCAL DWT RF(E) TIOE05 OPEN LD A2,FWTFNR,A6 FILE NUMBER TIOE05 EQU * ANK A2,/FF STR A2,A5 LD A7,DWTTAB,A6 USER TTAB ADDR LD A7,TTB:SA+14,A7 ORDER CODE ST A7,PABORD,A5 ORDER WORD EJECT TIOEDM * * IFT CPU852=1 LDR* A2,A8 1ST ECB ST A2,PABFC,A5 FILE CODE LD A2,ECBBA,A8 ST A2,PABBA,A5 BUFFER ADDRESS LD A2,ECBRL,A8 ST A2,PABRL,A5 REQUESTED LENGTH LD A2,ECBCW1,A8 ST A2,PABCW1,A5 CONTROL WORD 1 LD A2,ECBCW2,A8 ST A2,PABCW2,A5 CONTROL WORD 2 XIF * IFT CPU852=0 MLR 3,A8 FC,BA,RL MS 3,PABFC,A5 ML 2,ECBCW1,A8 MS 2,PABCW1,A5 XIF * EJECT TIOEDM * * ACTIVATE PRIMARY OR SECONDARY EDM TASK * LDR A1,A5 PARAMETER BLOCK ADDRESS INH LDR A5,A7 ORDER LDKL A7,'$D' TASK ID CWK A6,DWDM01 RF(E) TIOE50 FILE NOT OPENED ANK A5,/7F SUK A5,/21 RF(Z) REQER1 OPEN SUK A5,/22-/21 RF(Z) TIOE40 CLOSE LDKL A3,DFTABL LENGTH OF FILE CODE TABLE LC A2,FWTVOL,A6 VOLUME FILE CODE TIOE20 EQU * SUK A3,1 RF(N) ERRHLT FILE CODE NOT IN TABLE CC A2,DFTAB,A3 RB(NE) TIOE20 FILE CODE NOT FOUND LC A7,DMTIDP,A3 ADK A7,'D' CF A15,FNDTID TTAB ADDRESS LDR A5,A2 TTAB ADDRESS 1ST EDM TASK RF(Z) ERRHLT TTAB NOT FOUND LD A4,TTB:SA,A2 DISPATCHER ADDRESS RF(Z) TIOE70 TASK NOT ACTIVE LC A7,DMTIDS,A3 SECONDARY ADK A7,'D' RF TIOE50 EJECT TIOEDM * * TIOE40 EQU * CLOSE LDR A4,A6 DWT ADDRESS CF A15,FND:FC FIND FILE CODE ENTRY LD A4,DWTTAB,A6 USER TTAB ADDR SLC A4,3 XRR* A4,A3 COMPARE IDENTITIES ANKL A4,/FF00 RF(NZ) REQER1 WRONG TASK SCR A4,A3 CLEAR ID/STATUS BYTE FOR ADM =3 LDKL A4,DWDM01 DWT ADDRESS ST A4,2,A3 IN TABLE * EJECT TIOEDM * * ********** * TIOECR * ********** * * * COMMIT ROLLBACK ENTRY FROM TIODM * ACTIVATE EDM TASK * * TIOECR EQU * TIOE50 EQU * CF A15,FNDTID LDR A5,A2 TTAB ADDRESS 2ND EDM TASK RF(NZ) TIOE70 TTAB FOUND * EJECT TIOEDM * * ERRHLT EQU * ABL TASHLT * * REQUEST ERROR * * TERMINATE ERRONEOUS IO * A6 = FWT ADDR * * REQER1 EQU * CMR A1 FREE PARAM BLOCK =1 CM PABORD,A1 FREE PARAM BLOCK =1 REQER2 EQU * =1 ABL DISIOE REQERR EQU * ABL LKMRQE * EJECT * TIOE70 EQU * LD A4,SCTMOX START ADDRESS OF DISPATCH ADDRESS TABLE LDR A2,A4 ADR* A2,A4 END ADDRESS SUK A4,2 ADJUST POINTER TIOE80 EQU * ADK A4,4 NEXT ENTRY CWR A4,A2 RB(E) ERRHLT TASK ID NOT IN TABLE CWR* A7,A4 RB(NE) TIOE80 NOT SAME TASK ID LD A2,2,A4 GET DISPATCH ADDRESS LDR* A4,A1 ORDER CODE SUKL A4,/100 COMMIT RF(Z) TIOE90 COMMMIT LD A4,DWTTAB,A6 CALLING TASK TTAB RF TIOE91 TIOE90 LDR A4,A6 TTAB USER TIOE91 EQU * LD A4,TTB:ID,A4 CALLING TASK TASK ID ABL ACTDIS ACTIVATE AND DISPATCH * EJECT TIOEDM * * ********** * TENEDM * ********** * * * THIS IS THE EDM END I/O LKM PROCESSOR. * * IT IS ENTERED FROM THE LKM HANDLER * WITH THE FOLLOWING PARAMETERS: * * A5 = TTAB CALLING TASK * A7 = FUNCTION PARAMETER * BIT15=1 MEANS IMPLICIT EXIT PERFORMED * BIT14=1 MEANS IMPLICIT MOVE OF BUFFER FROM EDM-TASK * BIT13=1 MEANS ANNULING OF REQUEST WITHOUT ACTIVATION OF USER TASK * BIT12=1 MEANS END I/O OF AN OPEN REQUEST * BIT11=1 MEANS TERMINATION OF COMMIT/ROLLBACK * A8 = BUFFER ADDRESS IN EDM TASK OR TASK ID * TENEDM EQU * SRC A7,5 BIT 11 TO SIGN BIT RF(NN) EIO090 NOT COMMIT,ROLLBACK LD A6,TTB:SA+4,A5 GET RETURN CODE =2 EJECT * * TERMINATION OF COMMIT/ROLLBACK * SLC A7,4 BIT 15 TO SIGN BIT RF(NN) EIO070 NO EXIT CF A15,EXIT RF EIO080 EIO070 CF A15,QTJOB ACT EDM EIO080 EQU * LDR A7,A8 TASK ID CF A15,FNDTID GET TTAB IN A2 LDR A5,A2 TTAB RB(Z) ERRHLT NO TASK ID ADK A6,0 TEST IF R.C. OK =2 RF(Z) EIO085 NO ERROR ST A6,TTB:SA+14,A5 ERR CODE EIO085 EQU * LDR A6,A5 USER TTAB AD A6,TTB:TD,A6 CM TTB:TD,A6 MARK PAR BLOCK FREE CM TTB:TD+2,A6 DITTO ABL LKMQDI QUEUE AND DISPATCH EJECT * * TERMINATION OF I/O REQUEST * EIO090 SLC A7,1 BIT 12 TO SIGN BIT LD A1,TTB:SA+10,A5 FILE NUMBER RB(N) REQERR FILE NUMBER < 0, REQUEST ERROR RF(Z) EIO103 OPEN,DO EXIT,FILE NBR=0 CW A1,SCTNOF NUMBER OF FILES RB(G) REQERR REQUESTED FILE NUMBER TOO BIG LDKL A6,SCTFWT POINTER TO FWT ANCHOR * EIO100 EQU * LDR* A6,A6 GET NEXT FWT SUK A1,1 RB(P) EIO100 NEXT FILE ANKL A6,/FFFE MAKE ADDRESS EVEN JUST IN CASE * EJECT TIOEDM * * FILE FOUND, GET TTAB AND ECB OF USER TASK * LDR A1,A8 SOURCE BUFFER ADDRESS LDR A7,A7 RF(NN) EIO105 NOT OPEN ORDER LDKL A4,DWDM01 LOCAL DWT ADDR CF A15,FND:FC FILE CODE ENTRY IN TABLES ADK A3,0 RB(Z) REQERR FILE CODE NOT FOUND ST A6,2,A3 SAVE FWT ADDRESS LDKL A6,DWDM01 LOCAL DWT FWT LD A6,DWTTAB,A6 USER TTAB AADDDR SRC A6,5 SCR A6,A3 MARK FILE CODE FOR ONE TASK EIO103 EQU * LDKL A6,DWDM01 LOCAL DWT ADDRESS EIO105 EQU * LD A8,DWTECB,A6 GET USER ECB LD A4,DWTTAB,A6 TTAB USER TASK LDR A2,A4 USER TTAB AD A2,TTB:TD,A4 CM TTB:TD,A2 MARK PARAM BLOCK FREE CM TTB:TD+2,A2 DITTO SLC A7,1 BIT 13 TO SIGN BIT RF(NN) EIO110 NO CANCEL OF REQUEST * * CANCELLING OF REQUEST * CM DWTECB,A6 PREPARE FOR TENDIO LDKL A2,-4 ADJUST USER DISPATCH ADDRESS ADS A2,TTB:SA,A4 SLC A7,1 RF EIO120 TEST IF EXIT * EIO110 EQU * SLC A7,1 BIT 14 TO SIGN BIT RF(NN) EIO120 NO MOVE * * MOVE FROM EDM TASK TO USER BUFFER * LD A2,ECBBA,A8 DESTINATION BUFFER ADDRESS LD A3,TTB:SA+2,A5 BUFFER LENGTH CF A15,MOVUU MOVE FROM USER TO USER LD A8,DWTECB,A6 RESET USER ECB ADDR EJECT TIOEDM * * EIO120 EQU * IFT CPU852=1 LD A1,TTB:SA+2,A5 FILL ECB ST A1,ECBEL,A8 LD A2,TTB:SA+4,A5 ST A2,ECBRC,A8 LD A3,TTB:SA+6,A5 ST A3,ECBCW1,A8 LD A4,TTB:SA+8,A5 ST A4,ECBCW2,A8 XIF * IFT CPU852=0 ML 4,TTB:SA+2,A5 EFF.LEN,RTN CODE,CW1,CW2 MS 4,ECBEL,A8 EFF.LEN,RTN CODE,CW1,CW2 XIF * SLC A7,1 BIT 15 TO SIGN BIT RF(NN) EIO130 NO EXIT * * EXIT * CF A15,EXIT A5 = TTAB CALLING TASK * * END I/O * EIO130 EQU * LDK A1,0 RETURN CODE ALREADY SET ABL DISEND TENDIO AND TDISP EJECT TIOEDM * * ********** * FND:FC * ********** * * * FIND ENTRY CORRESPONDING TO FILE CODE * FROM CDTAB OR TTAB * * * INPUT : A4 = DWT ADDRESS * * OUTPUT: A3 = ADDRESS TO ENTRY * A3 = 0 IF NO ENTRY * A2 = FILE CODE * A4 = USED * A8 = ECB ADDRESS * FND:FC EQU * LD A8,DWTECB,A4 ECB ADDRESS LDR* A2,A8 FILE CODE ANK A2,/FF LD A4,DWTTAB,A4 TTAB ADDRESS ADKL A4,TTB:TD ADDRESS TO DEVICE TABLE LDR* A3,A4 LENGTH OF DEVICE TABLE ADR A3,A4 END OF TABLE ADDRESS ADK A4,2 BEG OF TABLE ADDRESS FND:10 EQU * CWR A3,A4 RF(E) FND:20 TABLE SEARCHED SUK A3,4 CC A2,1,A3 FILE CODES RF(E) FND:50 ENTRY FOUND RB FND:10 NEXT ENTRY * EJECT TIOEDM * * FND:20 EQU * LD A4,SCTCDT COMMON DEVICE TABLE LDR* A3,A4 LENGTH ADR A3,A4 END OF TABLE ADDRESS ADK A4,2 BEG OF TABLE ADDRESS FND:40 EQU * CWR A3,A4 RF(E) FND:45 TABLE SEARCHED SUK A3,4 CC A2,1,A3 FILE CODES RF(E) FND:50 FILE CODE FOUND RB FND:40 NEXT ENTRY FND:45 EQU * LDK A3,0 INDICATE ENTRY NOT FOUND FND:50 EQU * RTN A15 * * END