|
|
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: 14140 (0x373c)
Notes: pts_type(SC)
Names: »DMBUF.SC«
└─⟦48601905a⟧ Bits:30009668 Philips computer tape "600121"
└─⟦this⟧ »M:TU10/DMBUF.SC«
└─⟦d2a299635⟧ Bits:30009698 Philips computer tape "600415"
└─⟦this⟧ »M:TU10/DMBUF.SC«
IDENT DMBUF REL 10.0 80-03-14 870105041000 **************************************************** * * PHILIPS TERMINAL SYSTEM PTS * * DMBUF = DATA MANAGEMENT BUFFER AREAS * * * * * * **************************************************** * * ALLOCATE DISC BUFFERS FOR DMTASK * * A ROUTINE DMTGBU 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 DMTGBU GET A BUFFER ENTRY DMTRBU RELEASE A BUFFER ENTRY BLKMXL MAXIMUM BLOCK SIZE ENTRY CLRBUF RELEASE ALL FREE BUFFERS ENTRY DMI020 FROM DMINIT * EXTRN HALT EXTRN DMI010 SEE DMINIT EXTRN CRNQUE,CRNEND,CRBUFL EXTRN FDBSTA EXTRN SCTFWT EJECT X:B EQU 128 BLKMXL EQU 00896 MAX BLOCK SIZE X:A EQU 8 NUMBER OF DISC BUFFERS QNBUF EQU 00003 * * 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 * ************** * DMTGBU * ************** * * ENTRY DMTGBU GET A DISC BUFFER * * INPUT A1 = FILE NR * A2 = SECTOR NUMBER * A4 = SECT NR PART 2 * * OUTPUT A3 = BUFFER ADDRESS * SKIP RETURN (+2) IF SECTOR MUST BE READ INTO BUFFER AT A3 * A5 AND A7 WILL BE DESTROYED * * USED REGS A1-A5,A7 * * 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 DMTGBU EQU * INH INH LD A3,CURBUF LDK A5,0 DMT010 LDR* A3,A3 ANKL A3,/FFFE LDK A7,1 CW A1,BUFDMI,A3 RF(NE) DMT017 WRONG FILE AN A7,BUFLNK,A3 RF(Z) DMT015 FREE SLL A7,1 SC A7,BUFOR,A3 MARK DELAY DMT015 EQU * CW A2,BUFSNR,A3 RF(NE) DMT020 CW A4,BUFSNR+2,A3 RF(NE) DMT020 WRONG SECT NR LDKL A7,/100 ORS A7,BUFOR,A3 MARK SAME SECT NR RF DMT030 DMT017 AN A7,BUFLNK,A3 RF(NZ) DMT041 USED DMT020 EQU * LDK A7,/01 AN A7,BUFLNK,A3 STATUS IN BIT 15 RF(NZ) DMT030 USED IM BUFOR,A3 MAKE OLDER SC A7,BUFOR,A3 CLEAR LEFT BYTE DMT030 EQU * CW A5,BUFOR,A3 RF(G) DMT041 NOT OLDER LD A5,BUFOR,A3 ST A3,NEWBUF DMT041 EQU * CW A3,CURBUF RB(NE) DMT010 MORE BUFFERS TO SERARCH * * A5 INDICATES IF BUFFER IS FOUND AND IF IT IS EMPTY * LD A3,NEWBUF CHOOSE THIS BUFFER ECR A5,A5 LDR A5,A5 RF(Z) DMT042 NO BUFFER ANK A5,/3 RF(Z) DMT043 NO DATA 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 * IM 4,A14 IM 4,A14 SKIP RETURN ST A1,BUFDMI,A3 DMIDENT, FC ST A2,BUFSNR,A3 SECTOR NUMBER ST A4,BUFSNR+2,A3 DMT050 EQU * CM BUFOR,A3 RESET OLD-COUNTER DMT051 EQU * DELAY USE ST A3,CURBUF LDK A7,/01 ORRS A7,A3 SET STATUS USED BIT 15 ENB ENB RTN A14 EJECT * ************** * DMTRBU * ************** * * ENTRY DMTRBU RELEASE A DISC BUFFER * * INPUT A3 = BUFFER ADDRESS * A2 IS DESTROYED * * DMTRBU EQU * LDKL A2,/FFFE ANRS A2,A3 SET OFF BIT 15 RTN A14 * * 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 * * THIS INITIALIZATION ROUTINE BELONGS TO DMINIT, BUT * IS OVERLAYED ON THE FIRST BLOCK BUFFER * DMIFIN EQU * RORG BUFAR * DMI020 EQU * * * 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 LDKL 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 ABL DMI010 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