|
|
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: 17586 (0x44b2)
Notes: pts_type(SC)
Names: »TASS.SC«
└─⟦110b7ed5e⟧ Bits:30009664 Philips computer tape "600106"
└─⟦this⟧ »TOSSWORK/TASS.SC«
└─⟦781e933ac⟧ Bits:30009686 Philips computer tape "600310"
└─⟦this⟧ »M:92T1/TASS.SC«
└─⟦7e2393f80⟧ Bits:30009710 Philips computer tape "M_KONV"
└─⟦this⟧ »M:KONV/TASS.SC«
└─⟦7f25f14aa⟧ Bits:30009683 Philips computer tape "600307"
└─⟦this⟧ »M:92F4/TASS.SC«
└─⟦f740ae34d⟧ Bits:30009708 Philips computer tape "M_92F3"
└─⟦this⟧ »M:92F3/TASS.SC«
IDENT TASS REL 9.2 79-11-16 870105040920 =1, PR 4313 * REL 9.1 78-10-25 * * **************************************************** * * 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 SCTCDT 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= MAX KEY LENGTH TOO SMALL * 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 ENTRY TASLFD =1 ENTRY TASHLT HALT SYSTEM DUE TO DM (SYSGEN) ERROR EJECT * ***************** * EXTERNALS * ***************** * EXTRN DFTAB EXTRN DFTABE EXTRN SCTCDT EXTRN DWTVOL EXTRN FNDTID EXTRN DMTASS EXTRN ACTOT EXTRN TDISP EXTRN QTJOB EXTRN LKMQDI EXTRN TTB:SA EXTRN TTB:TD,DMTASX EXTRN ECBFC,ECBRC EXTRN MOV:US MOVE FROM USER TO SYSTEM AREA EXTRN HALT HALT SYSTEM ROUTINE EJECT TOSSIO * * ***************************************** * * CONDITIONAL ASSEMBLY * ***************************************** * * A PROGRAM VERSION USING TOSS MMU PAGING * IS OBTAINED BY SETTING MMUPAG EQU 1. * MMUPAG EQU 0 * 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/SCTCDT ENTRY ADDR TASLFD DATA 0,0 LOCKED FLEXDISC FILE CODES =1 DATA 0,0 DATA 0,0 TASS14 EQU *-2 TASS A14 STACK * IFT MMUPAG=1 MASBLK RES 17 ASSIGN BLOCK SAVE AREA XIF * 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 * CM TASLFD =1 CM TASLFD+2 LOCKED FLEXDISCS =1 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,SCTCDT TAS130 SUK A6,4 RF(N) TASHLT FC NOT FOUND? SHOULD NOT OCCUR. LD A5,SCTCDT 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 SUR A12,A12 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,SCTCDT 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 * * SAVE FILE CODES FOR NEWLY LOCKED FLEXDISCS =1 * (ONLY SIGNIFICANT WHEN A11 = 1 ) =1 START * SUK A1,2 RF(NZ) TAS147 NO FLEX LDR A12,A12 RF(NZ) TAS147 LOCKED EARLIER LDR A1,A2 SRL A1,1 BYTE LC A3,TASVOL+1,A2 FILE CODE SC A3,TASLFD,A1 SAVE TAS147 EQU * =1 END * * 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 LDK A1,/11 INDICATE DM ERROR CF A15,HALT HALT SYSTEM * EJECT * ************ * TASS * ************ * IXTASS EQU * IFT MMUPAG=0 LDK A7,/81 SCR A7,A8 BIT 0+7 IND. ASS ONE INDEX XIF * IFT MMUPAG=1 ELR A7,A8 GET FIRST WORD OF USER ASSIGN BLOCK ANK A7,/FF SKIP LEFT CHARACTER ORKL A7,/8100 BIT 0+7 IND. ASSIGN ONE INDEX ESR A7,A8 SET WORD IN ASSIGN BLOCK XIF *~ 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 * IFT MMUPAG=1 * * MOVE USER ASSIGN BLOCK TO SYSTEM AREA MASBLK * LDR A1,A8 GET ADDRESS OF SENDING BLOCK LDKL A2,MASBLK GET ADDRESS OF RECEIVING BLOCK LDR A8,A2 SET A8 TO NEW ASSIGN BLOCK ADDRESS LDK A3,34 ASSIGN BLOCK LENGTH IN BYTES CF A14,MOV:US MOVE ASSIGN BLOCK XIF * 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 RF TASSEM EJECT * * CHECK IF VOLUMES ARE ON LINE * TAS100 EQU * SUR A11,A11 NO FLEXLOCK CF A14,VOLCHE LD A8,TASASB ASBLK ADDR LDKL A7,-1 RET CODE ADK A1,0 SET CR 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,SCTCDT 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,SCTCDT 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,'#D' 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