|
|
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: 17184 (0x4320)
Notes: pts_type(SC)
Names: »TASS.SC«
└─⟦c47f25c27⟧ Bits:30009688 Philips computer tape "600318"
└─⟦this⟧ »M:KMDV/TASS.SC«
└─⟦efe3a1cfc⟧ Bits:30009667 Philips computer tape "600113"
└─⟦this⟧ »TOSSWORK/TASS.SC«
└─⟦fcfed1ed9⟧ Bits:30009706 Philips computer tape "M_167"
└─⟦this⟧ »M:167D/TASS.SC«
IDENT TASS REL 8.2 78-09-15 870105040820 * **************************************************** * * PHILIPS TERMINAL SYSTEM PTS * * TASS = ASSIGN FILE CODE ACTIVATION PART * * * * * * **************************************************** * * THIS MODULE IS ENTERED VIA * ASSIGN REQUEST (DATA 15) OR * ASSIGN INDEX REQUEST (DATA 16). * * LDK A7,TC * LDKL A8,ASBLK * LKM * DATA 15 * * INPUT A5 = TTAB ADDRESS * A7 = TC * A8 = ASBLK ADDRESS * WHERE ASBLK IS A PARAMETER BLOCK * AND TC = 1 WHEN TASK LOCAL ASSIGN IN TTAB IS WANTED * TC = 0 WHEN GLOBAL ASSIGN IN CDTAB IS WANETED * EJECT * +----------+----------+ * ASBLK I NO OF VOL FC I * +----------+----------+ * I I * I FILE NAME I * I I * I I * +---------------------+ * I I * I VOL NAME I * I I * +---------------------+ * I I * * MAX 4 VOL NAMES CAN BE GIVEN * * * A CONECTION BETWEEN THE FILE CODE IN ASBLK AND A FDB IS * CREATED IN TTAB/CD:TAB. * * THE FDB IS INITIALIZED WITH INFORMATION FROM THE VTOC:S OF THE * VOLUMES MENTIONED IN ASBLK. * * UPON COMPLETION OF THE ASSIGN REQUEST REG A7 WILL HAVE ONE OF THE * FOLLOWING RETURN CODES: * * 0 = CORRECT RETURN ASSIGNMENT PERFORMED * -1 = REQUEST ERROR * 1 = DISC I/O ERROR * 2 = NO FREE ENTRY IN TABLE * 3 = NO FDB AVAILABLE * 4 = ONE OR MORE VOLUMES UNKNOWN * 5 = FILE CODE ALREADY USED * 6 = FILE NAME UNKNOWN * 7 = FILE SECTION MISSING OR FOUND TWICE * 8 = FAULTY DISC FORMAT * 9 = MORE THAN 4 EXTENTS EXIST * EJECT * THIS MODULE IS ENTERED VIA * LDKL A8,ASBLK * LKM * DATA 16 * * INPUT A5 = TTAB ADDRESS * A8 = ASBLK ADDRESS * WHERE ASBLK IS A PARAMETER BLOCK * +----------+----------+ * ASBLK I NO OF VOL FC I * +----------+----------+ * I I * I FILE NAME I * I I * +---------------------+ * I I * I VOL NAME I * I I * +---------------------+ * I MASTER INDEX * I FILE NAME * * UPON COMPLETION OF THIS REQUEST REG A7 WILL HAVE ONE OF THE * FOLLOWING RETURN CODES: * 0 = CORRECT RETURN ASSIGNMENT PERFORMED * -1 = REQUEST ERROR * 1 = DISC I/O ERROR * 2 = NO FREE ENTRY IN TABLE * 3 = NO FDB AVAILABLE OR MASTER INDEX CORE AVAIL * 4 = ONE OR MORE VOLUMES UNKNOWN * 5 = FILE CODE ALREADY USED * 6 = FILE NAME UNKNOWN * 7 = FILE SECTION MISSING OR FOUND TWICE * 8 = FAULTY DISC FORMAT * 9 = MORE THAN 4 EXTENTS EXIST * 10= NO DATA FILE ASSIGNED * 11= 4 INDEX FILES ALREADY ASSIGNED * 12= SIZE OF DISC BUFFERS NOT SUFFICIENT * 13= REQUEST BUSY. REPEAT ASSIGN REQUEST EJECT * *************** * ENTRIES * *************** * ENTRY TASS ENTRY VOLCHE,IXTASS ENTRY TASBLK ENTRY TASQUE ENTRY TASTTA ENTRY TASASB ENTRY TASCVO ENTRY TASVOL ENTRY TASCXO ENTRY TASSEX ENTRY TASXLB ENTRY TASFDB ENTRY TASVRL ENTRY TASVLE ENTRY TASVRN ENTRY TASECB ENTRY TASFIL,TASTID,TASMXA,TASSPW ENTRY TASFDD,TASTBE ENTRY TASCAQ CHECK ASSIGN QUEUE EJECT * ***************** * EXTERNALS * ***************** * EXTRN DFTAB EXTRN DFTABE EXTRN CDTAB EXTRN DWTVOL EXTRN FNDTID EXTRN DMTASS EXTRN ACTOT EXTRN TDISP EXTRN QTJOB EXTRN LKMQDI EXTRN TTB:SA EXTRN TTB:TD,DMTASX EXTRN ECBFC,ECBRC EJECT * ******************* * DATA AREAS * ******************* * TASBLK DATA 0 USE INDICATOR TASQUE DATA 0 ASSIGN QUEUE ANCOR TASTTA DATA 0 REQUESTING TTAB ADDRESS TASASB DATA 0 ASBLK ADDRESS TASCVO DATA 0 CURRENT OFFSET IN TASVOL TASVOL DATA 0 VOLUME IDENTIFICATION (DMI,FC) DATA 0,0,0 THREE MORE ENTRIES TASCXO DATA 0 CURRENT OFFSET IN TASSEX AND TASXLB TASSEX DATA 0 SECTION NUMBER, EXTENT NUMBER DATA 0 OFFSET IN TASVOL FOR THIS EXT DATA 0,0,0,0,0,0 THREE MORE ENTRIES TASXLB DATA 0 EXTENT LENGTH DATA 0 EXTENT BASE DATA 0,0,0,0,0,0 THREE MORE ENTRIES TASFDB DATA 0 FDB ADDRESS TASVRL DATA 0 VTOC RECORD LENGTH TASVLE DATA 0 VTOC LENGTH TASVRN DATA 0 VTOC RECORD NO TASECB DATA 0,0 ECBFC,ECBBA DATA 410 ECBRL DATA 0,0,0 ECBEL,-RC,-CW DATA 0 CW2 TASFIL DATA 0 0=DATA,1=INDEX,2=MASTER INDEX TASTID DATA 0 DMTSASK IDENT AT ASSIGN TASMXA DATA 0 MASTER INDEX ADDR TASSPW DATA 0 TTAB ADDRESS DMTASK TASFDD DATA 0 FDB ADDR DATA FILE TASTBE DATA 0 TTAB/CDTAB ENTRY ADDR DATA 0,0 TASS14 EQU *-2 TASS A14 STACK EJECT ************** * TASCAQ * ************** * * ENTRY TASCAQ CHECK ASSIGN QUEUE * * A7= RETURN CODE * * SET OFF USE BIT IN TASBLK * IF TASQUE = 0 THEN RETURN ELSE QUEUE FIRST IN CHAIN AND * LET TASQUE POINT TO NEXT IN CHAIN * * USED REGS : A1,A5,A7 * TASCAQ EQU * LD A5,TASQUE RF(Z) TASCEX EMPTY QUEUE LDR* A1,A5 GET NEXT IN CHAIN ST A1,TASQUE AND PUT IT FIRST IN QUEUE LDKL A1,-4 ADS A1,TTB:SA,A5 UPD DISPATCH ADDR CF A15,QTJOB NEXT ASSIGN RF TASC05 TASCEX CM TASQUE ASSIGN COMPLETED TASC05 EQU * CM TASBLK TASC10 EQU * LD A5,TASTTA ST A7,TTB:SA+14,A5 SET RETURN CODE IN SAVED A7 RTN A14 EJECT ****DESCRIPTION************************************* * * VOLCHE WILL COMPARE EACH VOLUME NAME IN ASBLK WITH * VOLUME NAMES IN DWT FOR DISCS * ****ENTRY PARAMETERS******************************** * * A2 = NO OF VOL IN ASBLK * A8 = ASBLK ADDR * A11 = 0 WHEN NO LOCK IS WANTED. * 1 LOCK WANTED. ONLY FROM DMTASS FOR FLEXDISC * ****EXIT PARAMETERS********************************* * * A1 = 0 OK * 1 VOLUME UNKNOWN * A5 = TTAB ADDR * ****USED REGISTERS********************************** * * A1 - A9,A11,A12 * ****************************************************** VOLCHE EQU * SLL A2,1 SUK A2,2 ST A2,TASCVO INIT. TASCVO LDR A4,A8 ADK A4,10 POINTER TO FIRST VOL NAME IN ASBLK TAS110 EQU * LDKL A3,DFTAB POINTER TO FIRST DISC FILE CODE TAS120 LDK A1,0 LCR A1,A3 DISC FILE CODE * * FIND DWT ADDRESS IN CD:TAB AND COMPARE DWTVOL * LD* A6,CDTAB TAS130 SUK A6,4 RF(N) TASHLT FC NOT FOUND? SHOULD NOT OCCUR. LD A5,CDTAB ADR A5,A6 CC A1,1,A5 RB(NE) TAS130 NOT THIS FC LDR A11,A11 RF(Z) TAS131 LCR A5,A3 DISC CODE ANK A5,/F8 SUK A5,/F8 RF(NZ) TAS131 NO FLEXDISC * * LOCK FLEXDISC * LDKL A8,TASECB ST A1,ECBFC,A8 FLEX FILE CODE LDKL A12,0 LFLAG=UNLOCKED BEFORE LDK A7,/A6 LOCK,WAIT LKM DATA 1 LD A7,ECBRC,A8 RF(Z) TAS131 ANKL A7,/7FFF RF(NZ) TASF10 NOT ONLY BIT 0 LDKL A12,1 LFLAG=LOCKED BEFORE RF TAS131 TASF10 EQU * ANK A7,/7 BIT 13,14,15 RF(NZ) TAS150 GRAVE ERR TAS131 EQU * ST A1,TASVOL,A2 SAVE FC AD A6,CDTAB LDR* A5,A6 INDEX LDK A1,0 DISC NAME DISPLACEMENT SRL A5,8 RF(Z) TAS135 * DECIDE DISC DISPL FOR THIS FILE CODE * INDEX IS REL VOL NAME IN DWT * TAS132 EQU * ADK A1,6 NEXT DISC DISPLACEMENT SUK A5,1 RB(P) TAS132 TAS135 EQU * LD A6,2,A6 DWT ADDR RF(Z) TASHLT NO DWT ADDRESS FOUND ADR A6,A1 POINTER TO VOLUME NAME LDK A1,3 VOL NAMES 3 WORDS LDR A5,A4 POINTER ASBLK VOL NAME * * CHECK VOLUME NAMES IN DWT AND ASBLK * TAS140 LDR* A9,A5 CW A9,DWTVOL,A6 RF(NE) TAS146 NO MATCH ADK A5,2 ADK A6,2 SUK A1,1 RB(P) TAS140 CHECK NEXT WORD IN VOL NAME * * VOL NAME MATCH * STORE DMI , FC IN TASVOL * LD A1,TASVOL,A2 ANK A1,/0F CWK A1,/8 RF(L) TAS143 NOT FLEXIBLE DISC LDK A1,2 FD DMI RF TAS145 TAS143 EQU * SRL A1,1 TAS145 EQU * * * A1 = DMI = 0 FOR DRIVE 1 * 1 FOR DRIVE 2 * 2 FOR FLEXDISC * SC A1,TASVOL,A2 * * CHECK NEXT VOL IN ASBLK * LDK A1,0 RET CODE ADK A4,6 SUK A2,2 RB(NN) TAS110 MORE VOLUMES TO CHECK RF TAS155 OK ALL VOLUMES ARE ON LINE TAS146 EQU * LDR A11,A11 RF(Z) TAS150 NO LOCK PERFORMED LCR A1,A3 DISC CODE ANK A1,/F8 SUK A1,/F8 RF(NZ) TAS150 NO FLEXDISC LDR A12,A12 LFLAG RF(NZ) TAS150 LOCKED BEFORE * * UNLOCK * LDK A7,/B8 UNLOAD,WAIT LKM DATA 1 * * NO MATCH TRY NEXT FC IN DFTAB * TAS150 EQU * ADK A3,1 CWK A3,DFTABE RB(NE) TAS120 MORE FC IN DFTAB LDK A1,1 TAS155 EQU * RTN A14 TASHLT HLT EJECT * ************ * TASS * ************ * IXTASS EQU * LDKL A14,/81 SCR A14,A8 BIT 0+7 IND. ASS ONE INDEX LDK A7,0 ONLY GLOBAL ASSIGN ALLOWED TASS EQU * LDKL A14,TASS14 INITIALIZE A14 STACK POINTER LDR A10,A7 SAVE TC * * CHECK IF PREVIOS ASSIGN NOT COMPLETED * AND IF SO QUEUE THIS REQUEST VIA THE TASQUE * LD A1,TASBLK RF(Z) TAS050 NO CONCURRENT ASSIGN LDKL A1,TASQUE START OF ASSIGN QUEUE TAS020 EQU * QUEUE AS FOR GETBUFFER LDR A2,A1 LDR* A1,A1 RB(NZ) TAS020 NOT LAST IN CHAIN STR A5,A2 CMR A5 ABL TDISP DISPATCH * TAS050 EQU * IM TASBLK INDICATE ASSIGN STARTED CM TASFDD FDB ADDR DATA FILE * ST A5,TASTTA SAVE TTAB ADDRESS OF REQUESTING TASK * ST A8,TASASB SAVE ASBLK ADDRESS * LDK A1,16 ST A1,TASCXO INIT. TASCXO TO LAST ENTRY IN TASSEXXLB * LDKL A7,-1 INITIALIZE RETURN CODE IN A7 * * CHECK MAX NUMBER OF VOLUMES ( 1 - 4 ) * LDK A2,0 LCR A2,A8 NO OF VOLUMES ANK A2,/1F REMOVE INDEX BIT +DELAY+BASIC RF(Z) TAS090 NO VOL CWK A2,4 RF(NG) TAS100 <=4 TAS090 ABL TASSEM EJECT * * CHECK IF VOLUMES ARE ON LINE * TAS100 EQU * LDKL A11,0 NO FLEXLOCK CF A14,VOLCHE LD A8,TASASB ASBLK ADDR LDKL A7,-1 RET CODE LDR A1,A1 RF(Z) TAS160 ALL VOLUMES FOUND * * ALL VOL NOT FOUND. ACT FLEXDISCTASK * LD A1,TASCVO LDK A2,2 ID DMTASK FLEXDISC SC A2,TASVOL,A1 SEE TAS195 EJECT * * CHECK IF FILE CODE ALREADY ASSIGNED * TAS160 EQU * LDR* A3,A8 ANK A3,/FF RF(E) TASSEM FILE CODE = 0 NOT ALLOWED LDR A10,A10 TC RF(Z) TAS165 GLOBAL ASSIGN LD A2,TASTTA TTAB ADDR LDR A4,A2 LD A2,TTB:TD,A4 ADKL A4,TTB:TD+1 RF TAS170 TAS165 EQU * LD A4,CDTAB LDR* A2,A4 ADK A4,1 TAS170 SUK A2,4 RF(L) TAS180 END OF TABLE LDR A1,A4 ADR A1,A2 CCR A3,A1 FILE CODE RB(NE) TAS170 NO MATCH * * FILE CODE USED * OK WHEN REQ = ASS INDEX AND INDEX = 1 * LDR* A2,A8 ASBLK 1ST WORD RF(NN) TASSE5 NORMAL ASSIGN LDK A2,1 CC A2,-1,A1 INDEX RF(NE) TASSE5 FILE CODE ALREADY USED * * DATA FILE FDB IS FOUND * LD A1,1,A1 FDB ADDR ST A1,TASFDD RB TAS170 * * * FIND A FREE ENTRY IN TTAB/CD:TAB (FC AND DWTADR = 0 ) * TAS180 EQU * LDK A1,0 LDR A10,A10 TC RF(Z) TAS185 GLOBAL ASSIGN LD A2,TASTTA TTAB ADDR LDR A4,A2 LD A2,TTB:TD,A4 ADKL A4,TTB:TD+1 RF TAS190 TAS185 EQU * LD A4,CDTAB LDR* A2,A4 ADK A4,1 TAS190 SUK A2,4 RF(L) TASSE2 NO FREE ENTRY IN TABLE LDR A9,A4 ADR A9,A2 CCR A1,A9 FILE CODE RB(NE) TAS190 FC NOT EQUAL 0 CW A1,1,A9 RB(NE) TAS190 DWTADR NOT EQUAL 0 LDR* A1,A8 ASBLK 1ST WORD RF(N) TAS195 ASSIGN INDEX ORKL A3,/100 INDEX = 1 FOR DATA FILE TAS195 EQU * ST A3,-1,A9 SET INDEX AND FC IN FREE ENTRY ST A9,TASTBE SAVE ENTRY * * GET FIRST VOLUME AND ACTIVATE ITS DMTASK * LD A1,TASCVO LDK A7,0 LC A7,TASVOL,A1 ADKL A7,'D0' TID DMTASK CF A15,FNDTID LDR A5,A2 TTAB ADDRESS DMTASK RF(NZ) TAS200 TTAB FOUND EJECT * * FLEXDISC DMTASK DOES NOT EXIST * CM -1,A9 REMOVE ENTRY LDK A7,4 VOL UNKNOWN RF TASSEM TAS200 EQU * LDK A2,2 ST A2,TASFIL MASTER INDEX LOOP IDENT IN DMTSAK LDKL A2,DMTASS ASSIGN INDEX ENTRY LDR* A6,A8 RF(N) TAS210 INDEX ASSIGN CM TASFIL TAS210 EQU * CM TASFDB =0 INDICATES EXT #0 NOT FOUND LDK A3,0 * A1=PAR,A2=ADR,A3=SEGM,A5=TTAB ADDR CF A15,ACTOT ACTIVATE DMTASK ABL TDISP GO TO DISPATCHER EJECT * * ERROR RETURNS * TASSE5 ADK A7,1 TASSE4 ADK A7,1 TASSE3 ADK A7,1 TASSE2 ADK A7,1 TASSE1 ADK A7,1 ADK A7,1 TASSEM EQU * CF A14,TASCAQ CHECK ASSIGN QUEUE ABL LKMQDI QUEUE AND DISPATCH END