|
|
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: 14138 (0x373a)
Notes: pts_type(SC)
Names: »TOSSFM.SC«
└─⟦35fda6e03⟧ Bits:30009701 Philips computer tape "BARCLAY"
└─⟦this⟧ »M:DEMO/TOSSFM.SC«
IDENT TOSSFM REL 10.0 80-03-14 870105041000 * * ************************************************** * * PHILIPS TERMINAL SYSTEM PTS * * * TOSSFM = TOSS FILE MANAGEMENT LKM PROCESSOR * * * * * ************************************************** * * * TOSS FILE MANAGEMENT LKM PROCESSOR HANDLES * PREPARATIONS FOR DISC I/O, AND ACTIVATION OF * THE FILE MANAGEMENT TASK (FMTASK) FOR FILE * ADMINISTRATION FUNCTIONS. * * EJECT TOSSFM * * *********** * ENTRIES * *********** * * ENTRY TOSSFM TOSS FILE MANAGEMENT LKM PROCESSOR ENTRY FCHECK CHECK ACCESS PAR. AND RETURN FWT ADDRESS ENTRY FCHEC2 FCHECK 2ND ENTRY EJECT TOSSFM * * ************* * EXTERNALS * ************* * * EXTRN FMRDWR FM READ/WRITE EXTRN FM:ADM FM ADMINISTRATION FUNCTIONS EXTRN TTABFM FMTASK TTAB EXTRN QUEDEV QUEUE REQUEST IN DEVICE QUEUE EXTRN TIO:FM FM ENTRY IN TIO EXTRN ACTDIS ACTIVATE TASK AND DISPATCH EXTRN FNDDWD FIND DWT ADDRESS EXTRN TIOERR ERROR: QUEUE TASK AND DISPATCH EXTRN SCTFWT FWT CHAIN START ADDRESS EXTRN SCTNOF NUMBER OF FILES EXTRN FWTPAR FILE ACCESS PARAMETERS EXTRN FWTTAB TTAB FOR TASK WITH EXCLUSIVE ACCESS EXTRN FWTEW1 POINTER TO 2ND EWT BLOCK IN FWT EXTRN EWTEXL EXTENT LENGTH EXTRN EWTEXB EXTENT BASE EXTRN EWTVOL VOLUME FILE CODE EXTRN ECBRL ECB REQUESTED LENGTH EXTRN ECBCW1 ECB CONTROL WORD 1 EXTRN ECBCW2 ECB CONTROL WORD 2 EXTRN DWTST DWT STATUS WORD EJECT TOSSFM * * **************************************** * * CONDITIONAL ASSEMBLY * **************************************** * * A PROGRAM VERSION USING TOSS MMU PAGING * IS OBTAINED BY SETTING MMUPAG EQU 1. * MMUPAG EQU 1 * * * A PROGRAM VERSION USING THE EXTENDED INSTRUCTION * SET IS OBTAINED BY SETTING CPU852 EQU 0. * CPU852 EQU 0 * * * A PROGRAM VERSION SUPPORTING SPLIT EXTENT I/O * IS OBTAINED BY SETTING XTSPLI EQU 1. * XTSPLI EQU 0 * EJECT TOSSFM * * ********** * TOSSFM * ********** * * * THIS IS THE TOSS FILE MANAGEMENT LKM PROCESSOR. * * IT IS ENTERED FROM THE LKM HANDLER * WITH THE FOLLOWING PARAMETERS: * * A5 = TTAB ADDRESS * A7 = ORDER CODE * A8 = ECB ADDRESS * * WHEN FILE ADMINISTRATION IS REQUESTED, * TOSSFM WILL ACTIVATE THE FMTASK. * * WHEN I/O FUNCTION IS REQUESTED, TOSSFM * WILL PREPARE FOR DISC I/O. THE I/O WILL * THEN RUN THE NORMAL WAY VIA TIO-DRIVER-TENDIO. * * EJECT TOSSFM * * TOSSFM EQU * FILE MANAGEMENT LKM PROCESSOR ENTRY * * CHECK ORDER CODE * LDR A2,A7 ORDER CODE ANK A2,/FF SKIP OPTION XRK A2,/80 WAIT BIT SUK A2,/01 RF(Z) FM:030 BASIC READ SUK A2,/03-/01 RF(Z) FM:010 READ FILE PARAMETERS SUK A2,/05-/03 RF(Z) FM:030 BASIC WRITE SUK A2,/11-/05 RF(Z) FM:030 PHYSICAL READ SUK A2,/15-/11 RF(Z) FM:030 PHYSICAL WRITE SUK A2,/21-/15 RF(Z) FM:010 OPEN/CREATE/EXTEND SUK A2,/22-/21 RF(NZ) FM:RQE REQUEST ERROR IF NOT CLOSE/DELETE * EJECT TOSSFM * * FILE ADMINISTRATION REQUESTED. * ACTIVATE FMTASK WITH THE FOLLOWING PARAMETERS: * * A1 = ORDER CODE AND OPTION * A2 = DISPATCH ADDRESS * A3 = TTAB ADDRESS OF CALLING TASK * A4 = ECB ADDRESS * A5 = FMTASK TTAB ADDRESS * FM:010 EQU * LDR A1,A7 ORDER CODE AND OPTION LDKL A2,FM:ADM DISPATCH ADDRESS * FM:020 EQU * LDR A3,A5 TTAB ADDRESS OF CALLING TASK LDR A4,A8 ECB ADDRESS LDKL A5,TTABFM FMTASK TTAB ADDRESS ABL ACTDIS ACTIVATE FMTASK AND DISPATCH * EJECT TOSSFM * * ********** * FM I/O * ********** * * FILE MANAGEMENT I/O FUNCTIONS * FM:030 EQU * BASIC AND PHYSICAL READ/WRITE CF A15,FCHECK FIND FWT AND CHECK ACCESS PARAMETERS ADK A1,0 CHECK RETURN CODE RF(Z) FM:050 OK * FM:040 EQU * LDR A3,A1 RETURN CODE ABL TIOERR ERROR: QUEUE TASK AND DISPATCH * EJECT TOSSFM * * CHECK RELATIVE SECTOR NUMBER * FM:050 EQU * IFT MMUPAG=0 LD A1,ECBCW1,A8 RELATIVE SECTOR NUMBER LD A2,ECBCW2,A8 XIF * IFT MMUPAG=1 EL A1,ECBCW1,A8 RELATIVE SECTOR NUMBER EL A2,ECBCW2,A8 XIF * RF(NZ) FM:060 ADK A1,0 RF(Z) FM:RQE RELATIVE SECTOR NUMBER = 0 * FM:060 EQU * ECR A6,A1 ANK A6,/FF RF(NZ) FM:RQE ILLEGAL RELATIVE SECTOR NUMBER LDR A9,A7 SAVE ORDER CODE ADKL A3,FWTEW1 ADDRESS TO 1ST EWT STRUCTURE LDKL A14,/7FFF * EJECT TOSSFM * * SEARCH THE FILE EXTENT THAT HOLDS * THE REQUESTED SECTORS * FM:070 EQU * LC A6,EWTEXL-1,A3 FILE EXTENT LENGTH LD A7,EWTEXL,A3 CWR A1,A6 CHECK EXTENT LENGTH RF(L) FM:100 EXTENT FOUND RF(G) FM:080 EXTENT NOT FOUND CWR A2,A7 RF(NG) FM:100 EXTENT FOUND * FM:080 EQU * IFT CPU852=0 DSR A6 SUBTRACT LENGTH FROM SECTOR NUMBER XIF * IFT CPU852=1 SUR A1,A6 SUBTRACT LENGTH FROM SECTOR NUMBER SUR A2,A7 RF(NN) FM:090 NOT UNDERFLOW SUK A1,1 UNDERFLOW CORRECTION ANR A2,A14 SKIP SIGN BIT XIF * FM:090 EQU * LDR* A3,A3 ADDRESS TO 2ND EWT BLOCK LDR* A3,A3 ADDRESS TO NEXT EWT STRUCTURE RB(NZ) FM:070 CHECK NEXT EXTENT * FM:RQE EQU * FILE MANAGEMENT REQUEST ERROR EXIT LDKL A1,/A000 REQUEST ERROR RB FM:040 * EJECT TOSSFM * * EXTENT FOUND * FM:100 EQU * LDR* A4,A3 ADDRESS TO 2ND EWT BLOCK SUR A10,A10 LC A10,EWTEXB-1,A4 FILE EXTENT BASE LD A11,EWTEXB,A4 * IFT CPU852=0 DAR A10 COMPUTE SECTOR NUMBER XIF * IFT CPU852=1 ADR A1,A10 COMPUTE SECTOR NUMBER ADR A2,A11 RF(O) FM:140 OVERFLOW XIF * FM:110 EQU * SUK A2,1 RF(NN) FM:115 NOT UNDERFLOW SRL A2,1 UNDERFLOW CORRECTION SUK A1,1 * EJECT TOSSFM * * FM:115 EQU * LDR A12,A1 SAVE SECTOR NUMBER LDR A13,A2 * IFT MMUPAG=0 LC A3,ECBRL,A8 REQUESTED LENGTH (SECTORS) XIF * IFT MMUPAG=1 EL A3,ECBRL,A8 REQUESTED LENGTH (BYTES) ECR A3,A3 SECTORS XIF * ANK A3,/FF ADR A2,A3 COMPUTE LAST REQUESTED SECTOR+1 RF(O) FM:150 OVERFLOW * FM:120 EQU * ADR A6,A10 COMPUTE LAST SECTOR+1 IN EXTENT ADR A7,A11 RF(O) FM:160 OVERFLOW * FM:125 EQU * CWR A6,A1 RF(G) FM:130 ALL SECTORS WITHIN THIS EXTENT * IFT XTSPLI=0 RB(L) FM:RQE ALL SECTORS NOT WITHIN THIS EXTENT CWR A7,A2 RB(L) FM:RQE ALL SECTORS NOT WITHIN THIS EXTENT XIF * IFT XTSPLI=1 RF(L) FM:170 ALL SECTORS NOT WITHIN THIS EXTENT CWR A7,A2 RF(L) FM:170 ALL SECTORS NOT WITHIN THIS EXTENT XIF * EJECT TOSSFM * * PREPARE PARAMETERS FOR DISC I/O * * EXIT PARAMETERS: * * A2 = DISC INDEX (FROM FNDDWD) * A4 = 0 (INDICATES NOT I/O-AND-ACTIVATION) * A5 = TTAB ADDRESS * A6 = DISC DWT ADDRESS (FROM FNDDWD) * A7 = ORDER CODE * A8 = ECB ADDRESS * FM:130 EQU * LC A2,EWTVOL,A4 FILE CODE DISC CF A15,FNDDWD FIND DISC DWT ADDRESS LDK A4,0 INDICATE NOT I/O-AND-ACTIVATE LDR A7,A9 RESTORE ORDER CODE LD A1,DWTST,A6 DWT STATUS ABL(NN) QUEDEV DISC BUSY, QUEUE REQUEST * IFT MMUPAG=0 ST A12,ECBCW1,A8 SET SECTOR NUMBER IN ECB ST A13,ECBCW2,A8 XIF * IFT MMUPAG=1 ES A12,ECBCW1,A8 SET SECTOR NUMBER IN ECB ES A13,ECBCW2,A8 XIF * ABL TIO:FM BRANCH TO FM ENTRY IN TIO * EJECT TOSSFM * * OVERFLOW CORRECTIONS FOR DOUBLE WORD ARITHMETICS * FM:140 EQU * IFT CPU852=1 ADK A1,1 ANR A2,A14 SKIP SIGN BIT RB FM:110 XIF * FM:150 EQU * ADK A1,1 ANR A2,A14 SKIP SIGN BIT RB FM:120 * FM:160 EQU * ADK A6,1 ANR A7,A14 SKIP SIGN BIT RB FM:125 * EJECT TOSSFM * * REQUESTED SECTORS CONTINUE IN NEXT EXTENT * FM:170 EQU * IFT XTSPLI=1 LDR A1,A4 EWT ADDRESS (2ND BLOCK) LDKL A2,FMRDWR DISPATCH ADDRESS *****A7????????????***** RB FM:020 ACTIVATE FMTASK XIF * EJECT TOSSFM * * ********** * FCHECK * * FCHEC2 * ********** * * * FCHECK/FCHEC2 CONVERTS THE FILE NUMBER TO FWT * ADDRESS AND CHECKS ACCESS PARAMETERS. * * INPUT: A5 = TTAB ADDRESS * A7 = ORDER CODE * A8 = ECB ADDRESS * * OUTPUT: A1 = RETURN CODE (=0 IF OK) * A3 = FWT ADDRESS * A2 IS DESTROYED * FCHECK EQU * FCHECK MAIN ENTRY IFT MMUPAG=0 LDR* A2,A8 FILE NUMBER XIF * IFT MMUPAG=1 ELR A2,A8 FILE NUMBER XIF * FCHEC2 EQU * FCHECK 2ND ENTRY (A2 = FILE NUMBER) LDK A1,0 ANK A2,/FF RF(Z) FC:050 FILE NUMBER = 0 CW A2,SCTNOF RF(G) FC:050 FILE NUMBER TOO BIG LDKL A3,SCTFWT ADDRESS TO FWT CHAIN POINTER * EJECT TOSSFM * * FC:010 EQU * COMPUTE FWT ADDRESS LDR* A3,A3 NEXT FWT ADDRESS SUK A2,1 RB(P) FC:010 * * CHECK ACCESS PARAMETERS * ANKL A3,/FFFE CORRECT FWT ADDRESS JUST IN CASE LDR* A2,A3 FIRST WORD OF FWT ANK A2,1 CHECK IF FWT USED RF(Z) FC:050 FILE NOT OPENED LD A2,FWTTAB,A3 TTAB ADDRESS (EA TASK) RF(Z) FC:020 OPENED NON-EXCLUSIVELY CWR A2,A5 EA, CHECK IF THIS TASK RF(NE) FC:060 EXCLUSIVE FOR ANOTHER TASK * FC:020 EQU * LD A2,FWTPAR,A3 ACCESS PARAMETERS RF(N) FC:070 NEW VOLUME LOADED SLL A2,1 RF(NN) FC:040 PHYSICAL ORDERS ANK A7,/85 BASIC ORDER * FC:040 EQU * COMMON FCHECK RETURN LABEL RTN A15 * EJECT TOSSFM * * ERROR RETURNS * FC:050 EQU * REQUEST ERROR EXIT LDKL A1,/7FC0 RETURN CODE = /8000 * FC:060 EQU * FILE PROTECTED EXIT ADK A1,/20 RETURN CODE = /40 * FC:070 EQU * NEW VOLUME LOADED EXIT ADK A1,/20 RETURN CODE = /20 RB FC:040 RETURN * * * END