|
|
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: 4146 (0x1032)
Notes: pts_type(SC)
Names: »GRBUF.SC«
└─⟦c47f25c27⟧ Bits:30009688 Philips computer tape "600318"
└─⟦this⟧ »M:KMDV/GRBUF.SC«
└─⟦efe3a1cfc⟧ Bits:30009667 Philips computer tape "600113"
└─⟦this⟧ »TOSSWORK/GRBUF.SC«
└─⟦fcfed1ed9⟧ Bits:30009706 Philips computer tape "M_167"
└─⟦this⟧ »M:167D/GRBUF.SC«
IDENT GRBUF REL 8.2 78-09-15 870105040820 * ******************************************************* * * PHILIPS TERMINAL SYSTEM PTS * * GRBUF = LKM-PROCESSOR FOR GET AND RELEASE * * * * * * ******************************************************* * * THIS MODULE CONTAINS LKM-PROCESSORS FOR GET AND * RELEASE BUFFER. * * GET BUFFER : * NUMBER OF REQUIRED BUFFERS ARE GIVEN * IN A7. BUFFER ADDRESS IS RETURNED IN A8. * * RELEASE BUFFER: * BUFFER ADDRESS IS GIVEN IN A8. * EJECT * *********** * ENTRIES * *********** * * ENTRY GETBUF GET BUFFER ENTRY RELBUF RELEASE BUFFER * * ************* * EXTERNALS * ************* * * EXTRN TTB:SA TERMINAL SAVE AREA EXTRN TDISP DISPATCHER EXTRN LKMQDI QUEUE AND DISPATCH EXTRN QTJOB QUEUE AS TERMINAL JOB EXTRN GBQUE POINTER TO FIRST TTAB IN BUFFER QUEUE * * EJECT * * GETBUF EQU * LDKL A1,GBQUE POINTER TO FIRST IN QUEUE GET001 LDR* A2,A1 GET TTAB-ADDRESS RF(Z) GET005 NO IN QUEUE LD A3,TTB:SA,A2 CW A4,-2,A3 RF(E) GET030 SAME POOL LDR A1,A2 RB GET001 CHECK NEXT IN QUEUE * GET005 CF A15,GET TRY TO ALLOCATE BUFFERS LDR A4,A4 RF(NZ) REL060 BUFFER HAS BEEN ALLOCATED * * GET030 LDKL A1,GBQUE QUEUE REQUEST GET040 LDR A2,A1 LDR* A1,A1 RB(NZ) GET040 NOT LAST IN CHAIN STR A5,A2 CMR A5 GET050 ABL TDISP DISPATCH EJECT * * * RELBUF EQU * SUKL A8,2 BUFFER ADDRESS LD A1,2,A4 BUFFER UNIT ADK A1,2 ADD ONE WORD FOR CHAIN LDR* A2,A8 XRK A2,1 REL010 LDR A3,A8 ADR A3,A1 STR A3,A8 UPDATE CHAIN LDR A8,A3 CWR A3,A2 RB(NE) REL010 UPDATE NEXT CHAIN * LDR A3,A5 SAVE TTAB-ADDRESS LDKL A5,GBQUE REL020 LDR A2,A5 ADDRESS TO PREVIOUS BUFFER REL030 LDR* A5,A2 BUFFER ADDRESS RF(Z) REL050 END OF QUEUE LDR* A6,A5 ADDRESS TO NEXT BUFFER LD A1,TTB:SA,A5 GET DISPATCH ADDRESS CW A4,-2,A1 RB(NE) REL020 NOT SAME POOL STR A2,A15 STR A4,A15 STR A6,A15 LD A7,TTB:SA+14,A5 * * EJECT * * * CF A15,GET TRY TO ALLOCATE BUFFERS LDR A1,A4 LDR* A6,A15 LDR* A4,A15 LDR* A2,A15 LDR A1,A1 RF(Z) REL050 BUFFER NOT ALLOCATED CMR A5 TAKE OUT OF QUEUE STR A6,A2 UPDATE CHAIN CF A15,QTJOB QUEUE FOR DISPATCHING RB REL030 GET BUFFER TO NEXT IN QUEUE * REL050 LDR A5,A3 GET TTAB-ADDRESS REL060 ABL LKMQDI QUEUE AND DISPATCH EJECT * * * SUBROUTINE TO ALLOCATE BUFFERS TO REQUESTING PROGRAM * * GET LDK A6,1 LDR* A4,A4 ADDRESS TO BUFFER-POOL GET010 LDR A8,A4 BUFFER ADDRESS LDR A2,A7 GET020 LDR A1,A4 LDR* A4,A1 BUFFER POINTER RF(Z) GET025 NO BUFFER FOUND TM A4,A6 RB(NZ) GET010 BUFFER NOT FREE SUK A2,1 RB(NZ) GET020 ANKL A8,/FFFE * * ORK A4,1 FREE BUFFER FOUND STR A4,A8 UPDATE BUFFER POINTER ADKL A8,2 ADDRESS TO USER BUFFER ST A8,TTB:SA+16,A5 SAVE IT IN SAVE AREA GET025 RTN A15 * * END