|
|
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: 14372 (0x3824)
Notes: pts_type(SC)
Names: »SDMBUF.SC«
└─⟦f350e1b7a⟧ Bits:30009678 Philips computer tape "600219"
└─⟦this⟧ »MONGEN/SDMBUF.SC«
IDENT SDMBUF REL 11.0 81-01-26 870105041100 **************************************************** * * PHILIPS TERMINAL SYSTEM PTS * * SDMBUF = DATA MANAGEMENT BUFFER AREAS * * * * * * **************************************************** * * ALLOCATE DISC BUFFERS FOR DMTASK * * A ROUTINE SDMGBU TO GET A DISC BUFFER * * BY MEANS OF CONDITIONAL ASSEMBLY QNBUF NUMBER OF BUFFERS WILL BE ALL * * MAX VALUE OF QNBUF IS 16 * * EJECT * *************** * ENTRIES * *************** * ENTRY CURBUF CURRENT BUFFER POINTER ENTRY BUFLNK BUFFER LINK ENTRY BUFDMI DMTASK IDENT ENTRY BUFSNR SECTOR NO ENTRY BUFOR ORDER ENTRY BUFSTA DATA AREA START ADDRESS ENTRY SDMGBU GET A BUFFER ENTRY SDMRBU RELEASE A BUFFER ENTRY BLKMXL MAXIMUM BLOCK SIZE ENTRY CLRBUF RELEASE ALL FREE BUFFERS ENTRY SDMINI INITIALIZATION ROUTINE ENTRY SDMRLB ENTRY CRNQUE,CRBUFL ENTRY CRNEND ENTRY MXIND * EXTRN HALT EXTRN FDBSTA EXTRN SCTFWT EXTRN ECBBA EJECT * * CONDITIONAL ASSEMBLY * X:A EQU 8 X:B EQU 128 QNBUF EQU 00004 NUMBER OF DISC BUFFERS BLKMXL EQU 00128 MAX BLOCK SIZE CHECK EQU 0 * * CRNBAR IS THE SIZE OF THE CRN BUFFER ARERA IN WORDS * WHERE CRBUFL BYTES ARE USED FOR EACH BUFFER * X:C EQU 90 CRNBAR EQU 00108 CURRENCY AREA * * MXSIZ IS THE SIZE OF THE MASTER INDEX AREA IN * WORDS * X:D EQU 0 MXSIZ EQU 00100 MASTER INDEX AREA IFF MXSIZ=0 INDEXES CRBUFL EQU 12 SIZE CRN BUFFER XIF IFT MXSIZ=0 NO INDEXES CRBUFL EQU 8 XIF EJECT * ************** * SDMGBU * ************** * * ENTRY SDMGBU GET A DISC BUFFER * * INPUT A3 = FILE NR * A1 = SECTOR NUMBER * A2 = SECT NR PART 2 * * OUTPUT A4 = BUFFER ADDRESS * A3=0 IF SECTOR IN MEMORY ELSE 1 * A5=USED * * * ALL BUFFERS ARE SEARCED. * ONE BUFFER IS SELECTED IN FOLLOWING PRIORITY : * * 1. USED BUFFER IN REQ FILE ( DELAY) * 2. REQ FILE AND SECT NR * 3. OLDEST UNUSED * * IN BUFFER : * BUFLNK= CYCL BUFF LINK. BIT 15= 1 WHEN USED * BUFDMI= FILE NR * BUFSNR= SECT NR * BUFOR BIT 0-8= DELAY + SAME INDICATOR * BUFOR BIT 9-15= BUFFER AGE * BUFSTA= BLOCK AREA * * EJECT SDMGBU EQU * STR A7,A14 SAVE A7 INH INH LD A4,CURBUF LDK A5,0 DMT010 LDR* A4,A4 ANKL A4,/FFFE LDK A7,1 CW A3,BUFDMI,A4 RF(NE) DMT017 WRONG FILE AN A7,BUFLNK,A4 RF(Z) DMT015 FREE SLL A7,1 SC A7,BUFOR,A4 MARK DELAY DMT015 EQU * CW A1,BUFSNR,A4 RF(NE) DMT020 CW A2,BUFSNR+2,A4 RF(NE) DMT020 WRONG SECT NR LDKL A7,/100 ORS A7,BUFOR,A4 MARK SAME SECT NR RF DMT030 DMT017 AN A7,BUFLNK,A4 RF(NZ) DMT041 USED DMT020 EQU * LDK A7,/01 AN A7,BUFLNK,A4 STATUS IN BIT 15 RF(NZ) DMT030 USED IM BUFOR,A4 MAKE OLDER SC A7,BUFOR,A4 CLEAR LEFT BYTE DMT030 EQU * CW A5,BUFOR,A4 RF(G) DMT041 NOT OLDER LD A5,BUFOR,A4 ST A4,NEWBUF DMT041 EQU * CW A4,CURBUF RB(NE) DMT010 MORE BUFFERS TO SERARCH * * A5 INDICATES IF BUFFER IS FOUND AND IF IT IS EMPTY * LD A4,NEWBUF CHOOSE THIS BUFFER ECR A5,A5 LDR A5,A5 RF(Z) DMT042 NO BUFFER ANK A5,/3 RF(Z) DMT043 NO DATA LDK A3,0 INDICATE DATA IN BUFFER ANK A5,/2 RF(NZ) DMT051 DELAY RF DMT050 FREE SECTOR FOUND DMT042 EQU * LDK A1,3 LAMP 10 AND 11 CF A15,HALT NO MORE BUFFERS DMT043 EQU * * * SET CURBUF AND BUFFER HEADER WORDS * ST A3,BUFDMI,A4 DMIDENT,FC ST A1,BUFSNR,A4 SECTOR NUMBER ST A2,BUFSNR+2,A4 LDK A3,1 INDICATE BUFFER MUST BE READ DMT050 EQU * CM BUFOR,A4 RESET OLD-COUNTER DMT051 EQU * DELAY USE ST A4,CURBUF LDK A7,/01 ORRS A7,A4 SET STATUS USED BIT 15 LDR* A7,A14 SAVED REGISTER ENB ENB RTN A14 EJECT * ************** * SDMRLB * ************** * * ENTRY: A8=ECB ADDRESS * * EXIT : A8=NOT CHANGED * A4=BLOCK BUFFER ADDRESS * A2=USED * SDMRLB EQU * LD A4,ECBBA,A8 SUK A4,BUFSTA * ************** * SDMRBU * ************** * * ENTRY SDMRBU RELEASE A DISC BUFFER * * INPUT A4 = BUFFER ADDRESS * A2 IS DESTROYED * * SDMRBU EQU * IFT CHECK=1 LD A2,CURBUF SDMR10 EQU * CWR A2,A4 RF(E) SDMR20 LDR* A2,A2 ANKL A2,/FFFE CW A2,CURBUF RB(NE) SDMR10 LDR A2,A2 SDMR20 EQU * XIF LDKL A2,/FFFE ANRS A2,A4 SET OFF BIT 15 RTN A14 EJECT ************** * CLRBUF * ************** * A2,A3 = DESTROYED CLRBUF EQU * CLEAR ALL FREE BUFFERS INH LD A3,CURBUF DMT700 LDR* A3,A3 ANKL A3,/FFFE LDK A2,1 AN A2,BUFLNK,A3 RF(NZ) DMT750 USED CM BUFDMI,A3 REMOVE DMT750 CW A3,CURBUF RB(NE) DMT700 MORE BUFFERS ENB RTN A14 EJECT * * CURBUF DATA BUF1 NEWBUF DATA 0 * * BUFLNK EQU 0 BUF1 DATA BUF2 BUFFER LINK STATUS IN BIT 15 BUFDMI EQU *-BUF1 DMI DATA 0 BUFSNR EQU *-BUF1 SECTOR NO DATA 0 DATA 0 BUFOR EQU *-BUF1 LRU-WORD DATA 0 BUFFER STATUS,DM ORDER BUFSTA EQU *-BUF1 DATA BUFFER START BUFAR EQU * RES BLKMXL * * IFT QNBUF=1 BUF2 EQU BUF1 XIF * * IFF QNBUF=1 BUF2 DATA BUF3 DATA 0,0,0,0 RES BLKMXL XIF * * IFT QNBUF=2 BUF3 EQU BUF1 XIF * * IFF QNBUF=1 IFF QNBUF=2 BUF3 DATA BUF4 DATA 0,0,0,0 RES BLKMXL XIF * * IFT QNBUF=3 BUF4 EQU BUF1 XIF * * IFF QNBUF=1 IFF QNBUF=2 IFF QNBUF=3 BUF4 DATA BUF5 DATA 0,0,0,0 RES BLKMXL XIF * * IFT QNBUF=4 BUF5 EQU BUF1 XIF * * IFF QNBUF=1 IFF QNBUF=2 IFF QNBUF=3 IFF QNBUF=4 BUF5 DATA BUF6 DATA 0,0,0,0 RES BLKMXL XIF * * IFT QNBUF=5 BUF6 EQU BUF1 XIF * * IFF QNBUF=1 IFF QNBUF=2 IFF QNBUF=3 IFF QNBUF=4 IFF QNBUF=5 BUF6 DATA BUF7 DATA 0,0,0,0 RES BLKMXL XIF * * IFT QNBUF=6 BUF7 EQU BUF1 XIF * * IFF QNBUF=1 IFF QNBUF=2 IFF QNBUF=3 IFF QNBUF=4 IFF QNBUF=5 IFF QNBUF=6 BUF7 DATA BUF8 DATA 0,0,0,0 RES BLKMXL XIF * * IFT QNBUF=7 BUF8 EQU BUF1 XIF * * IFF QNBUF=1 IFF QNBUF=2 IFF QNBUF=3 IFF QNBUF=4 IFF QNBUF=5 IFF QNBUF=6 IFF QNBUF=7 BUF8 DATA BUF9 DATA 0,0,0,0 RES BLKMXL XIF * * IFT QNBUF=8 BUF9 EQU BUF1 XIF * * IFF QNBUF=1 IFF QNBUF=2 IFF QNBUF=3 IFF QNBUF=4 IFF QNBUF=5 IFF QNBUF=6 IFF QNBUF=7 IFF QNBUF=8 BUF9 DATA BUF10 DATA 0,0,0,0 RES BLKMXL XIF * * IFT QNBUF=9 BUF10 EQU BUF1 XIF * * IFF QNBUF=1 IFF QNBUF=2 IFF QNBUF=3 IFF QNBUF=4 IFF QNBUF=5 IFF QNBUF=6 IFF QNBUF=7 IFF QNBUF=8 IFF QNBUF=9 BUF10 DATA BUF11 DATA 0,0,0,0 RES BLKMXL XIF IFT QNBUF=10 BUF11 EQU BUF1 XIF * * IFF QNBUF=1 IFF QNBUF=2 IFF QNBUF=3 IFF QNBUF=4 IFF QNBUF=5 IFF QNBUF=6 IFF QNBUF=7 IFF QNBUF=8 IFF QNBUF=9 IFF QNBUF=10 BUF11 DATA BUF12 DATA 0,0,0,0 RES BLKMXL XIF IFT QNBUF=11 BUF12 EQU BUF1 XIF * * IFF QNBUF=1 IFF QNBUF=2 IFF QNBUF=3 IFF QNBUF=4 IFF QNBUF=5 IFF QNBUF=6 IFF QNBUF=7 IFF QNBUF=8 IFF QNBUF=9 IFF QNBUF=10 IFF QNBUF=11 BUF12 DATA BUF13 DATA 0,0,0,0 RES BLKMXL XIF IFT QNBUF=12 BUF13 EQU BUF1 XIF * * IFF QNBUF=1 IFF QNBUF=2 IFF QNBUF=3 IFF QNBUF=4 IFF QNBUF=5 IFF QNBUF=6 IFF QNBUF=7 IFF QNBUF=8 IFF QNBUF=9 IFF QNBUF=10 IFF QNBUF=11 IFF QNBUF=12 BUF13 DATA BUF14 DATA 0,0,0,0 RES BLKMXL XIF IFT QNBUF=13 BUF14 EQU BUF1 XIF * * IFF QNBUF=1 IFF QNBUF=2 IFF QNBUF=3 IFF QNBUF=4 IFF QNBUF=5 IFF QNBUF=6 IFF QNBUF=7 IFF QNBUF=8 IFF QNBUF=9 IFF QNBUF=10 IFF QNBUF=11 IFF QNBUF=12 IFF QNBUF=13 BUF14 DATA BUF15 DATA 0,0,0,0 RES BLKMXL XIF IFT QNBUF=14 BUF15 EQU BUF1 XIF * * IFF QNBUF=1 IFF QNBUF=2 IFF QNBUF=3 IFF QNBUF=4 IFF QNBUF=5 IFF QNBUF=6 IFF QNBUF=7 IFF QNBUF=8 IFF QNBUF=9 IFF QNBUF=10 IFF QNBUF=11 IFF QNBUF=12 IFF QNBUF=13 IFF QNBUF=14 BUF15 DATA BUF16 DATA 0,0,0,0 RES BLKMXL XIF IFT QNBUF=15 BUF16 EQU BUF1 XIF * * IFF QNBUF=1 IFF QNBUF=2 IFF QNBUF=3 IFF QNBUF=4 IFF QNBUF=5 IFF QNBUF=6 IFF QNBUF=7 IFF QNBUF=8 IFF QNBUF=9 IFF QNBUF=10 IFF QNBUF=11 IFF QNBUF=12 IFF QNBUF=13 IFF QNBUF=14 IFF QNBUF=15 BUF16 DATA BUF1 DATA 0,0,0,0 RES BLKMXL XIF EJECT * CRNQUE DATA 0 CRN LINK ROOT IFF CRNBAR=0 RES CRNBAR XIF IFT CRNBAR=0 RES 6 DEFAULT XIF CRNEND EQU * MXIND DATA MXINDE-* LENGTH INDEX INDEX DATA MXAR MASTER INDEX ADDR DATA MXSIZ MASTER INDEX SIEZE IFF MXSIZ=0 DATA 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 DATA 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 XIF MXINDE EQU * END INDEX INDEX DATA 0,0 SIGNIFICANT ZEROES AFTER INDEXINDEX MXAR EQU * RES MXSIZ EJECT * * THIS INITIALIZATION ROUTINE BELONGS TO SDMINI, BUT * IS OVERLAYED ON THE FIRST BLOCK BUFFER * DMIFIN EQU * RORG BUFAR * SDMINI EQU * INITIALIZATION ENTRY * * INITIALIZE SYSTEM FWT * LD A3,SCTFWT ADDR FIRST FWT ST A3,FDBSTA QUEUE FIRST FOR EVER * * CHAIN CRN BUFFERS * LDKL A3,CRNQUE+2 ST A3,CRNQUE LDK A2,CRBUFL LDKL A6,CRNEND CF A15,DMIN30 * * CLEAR USE BIT AND BUFFER HEADER WORDS IN DM BUFFERS * LDKL A2,/FFFE LD A3,CURBUF DMIN50 LDR* A3,A3 ANRS A2,A3 CLEAR USE BIT CM BUFDMI,A3 CM BUFSNR,A3 CM BUFSNR+2,A3 CM BUFOR,A3 CW A3,CURBUF RB(NE) DMIN50 RTN A15 RETURN EJECT * * * IN; A2 = LENGTH * A3= LINK ROOT * A6= AREA END ADDR DMIN30 LDR A4,A3 ADR A4,A2 * * DIV W. 2 FOR 16 K LIMIT * LDR A5,A4 SRL A5,1 LDR A1,A6 SRL A1,1 CWR A5,A1 RF(G) DMIN40 END OF FDB AREA STR A4,A3 CHAIN LDR A3,A4 RB DMIN30 DMIN40 EQU * SUR A3,A2 CMR A3 END OF FDB CHAIN ADKL A15,4 ABR* A15 RORG DMIFIN * * * END