1
0
mirror of https://github.com/PDP-10/stacken.git synced 2026-03-07 19:21:02 +00:00
Files
Lars Brinkhoff 6e18f5ebef Extract files from tape images.
Some tapes could not be extracted.
2021-01-29 10:47:33 +01:00

142 lines
3.8 KiB
Plaintext
Raw Permalink Blame History

This file contains invisible Unicode characters
This file contains invisible Unicode characters that are indistinguishable to humans but may be processed differently by a computer. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
TITLE LNK999 - EMERGENCY SEGMENT FOR LINK
SUBTTL D.M.NIXON/DMN/JBC/JNG/DZN/PAH/RJF 5-Feb-88
;COPYRIGHT (c) DIGITAL EQUIPMENT CORPORATION 1973,1986,1988.
; ALL RIGHTS RESERVED.
;
;THIS SOFTWARE IS FURNISHED UNDER A LICENSE AND MAY BE USED AND COPIED
;ONLY IN ACCORDANCE WITH THE TERMS OF SUCH LICENSE AND WITH THE
;INCLUSION OF THE ABOVE COPYRIGHT NOTICE. THIS SOFTWARE OR ANY OTHER
;COPIES THEREOF MAY NOT BE PROVIDED OR OTHERWISE MADE AVAILABLE TO ANY
;OTHER PERSON. NO TITLE TO AND OWNERSHIP OF THE SOFTWARE IS HEREBY
;TRANSFERRED.
;
;
;THE INFORMATION IN THIS SOFTWARE IS SUBJECT TO CHANGE WITHOUT NOTICE
;AND SHOULD NOT BE CONSTRUED AS A COMMITMENT BY DIGITAL EQUIPMENT
;CORPORATION.
;
;DIGITAL ASSUMES NO RESPONSIBILITY FOR THE USE OR RELIABILITY OF ITS
;SOFTWARE ON EQUIPMENT WHICH IS NOT SUPPLIED BY DIGITAL.
;
SEARCH LNKPAR,LNKLOW,MACTEN,UUOSYM,SCNMAC
SALL
ENTRY LNK999
EXTERN LNKCOR,LNKLOG
CUSTVR==0 ;CUSTOMER VERSION
DECVER==5 ;DEC VERSION
DECMVR==1 ;DEC MINOR VERSION
DECEVR==2417 ;DEC EDIT VERSION
VERSION
SEGMENT
SUBTTL REVISION HISTORY
;START OF VERSION 1A
;64 REDUCE CORE SIZE IF ALL OF CORE IS TAKEN
;77 RESET VERBOSITY IF LNKERR GETSEG FAILS
;START OF VERSION 2
;START OF VERSION 2B
;363 UPDATE MINOR VERSION #
;START OF VERSION 3A
;560 Release on both TOPS-10 and TOPS-20 as LINK version 3A(560)
;START OF VERSION 4
;663 Save GS.FR over LNKCOR call.
;731 SEARCH MACTEN,UUOSYM
;765 Release on both TOPS-10 and TOPS-20 as LINK version 4(765)
;START OF VERSION 4A
;1174 Label and clean up error messages.
;1206 Fix a NO.COR that edit 1174 missed.
;1217 Clean up the listings for release.
;1220 Release on both TOPS-10 and TOPS-20 as version 4A(1220).
;Start of Version 5.1
;2026 Update copyright statements.
;2027 Update copyright statements.
;2417 Update copyright statements to 1988.
SUBTTL EMERGENCY GETSEG
LNK999:
IFE FTSINGLE,< ;SO WE CAN ASSEMBLE WITH ONE CMD FILE
JFCL .+1
MOVE P,SAVEAC+P ;RESTORE PUSHDOWN POINTER
MOVE T1,['LNKERR'] ;SEE WHICH SEGMENT WAS WANTED
CAME T1,SEGBLK+1 ;AS LNKERR CAN CAUSE A LOOP
JRST .+4 ;NO
MOVEI T1,V%M ;ONLY THIS MUCH
CAMGE T1,VERLVL ;BUT NO MORE
MOVEM T1,VERLVL ;AS WE WOULD LOOP
E$$EGD::.ERR. (MS,,V%L,L%I,S%I,EGD,<Emergency GETSEG done>)
HRRZ T1,SEGBLK+2 ;GET ERROR CODE
CAIN T1,ERNEC% ;NOT ENUF CORE?
JRST REDCOR ;YES, REDUCE SIZE
E01GSE::PUSH P,[0] ;[1174] GETSEG ON CHAN 0
.ERR. (LRE,,V%L,L%F,S%F,GSE)
SUBTTL REDUCE CORE
REDCOR: MOVE T1,GS.AB ;TOP OF ACTIVE CORE
IOR T1,.PGSIZ ;IN PAGES
SUB T1,.JBREL ;FIND WHATS FREE
MOVM T1,T1 ;IN A POSITIVE WAY
CAIL T1,8*2000 ;THIS SHOULD BE ENOUGH
JRST [MOVE T1,.JBREL ;GET CURRENT TOP
SUBI T1,8*2000 ;REMOVE ENOUGH
JRST CORUUO]
PUSHJ P,DY.GBC## ;RETURN ALL SPACE WE CAN
PUSHJ P,FX.GBC##
MOVE T1,GS.AB ;SAVE LENGTH OF GS AREA IN USE
SUB T1,GS.LB ;SINCE IT WILL MOVE AND GROW
PUSH P,T1 ;DURING EXPANSION
PUSH P,GS.FR ;[663] SAVE # FREE WORDS
PUSH P,MAXCOR
MOVE T1,.JBREL ;DON'T ALLOW CORE TO EXPAND
MOVEM T1,MAXCOR ;INCASE NO ALL TAKEN YET
MOVEI P1,GS.IX
MOVEI P2,8*2000
PUSHJ P,LNKCOR## ;TRY TO GET ALL WE NEED
CAIA ;TRY AGAIN
JRST REDCR2 ;GOT IT
PUSHJ P,FR.CNT## ;SEE WHATS LEFT
ANDCM T1,.PGSIZ ;IN PAGES OR K
JUMPE T1,E01GSE ;[1174] NO MEMORY AVAILABLE
MOVE P2,T1 ;TRY FOR THIS
PUSHJ P,LNKCOR##
JRST E$$MEF## ;[1206] CAN NOT FAIL
REDCR2: POP P,MAXCOR ;RESTORE FORMER LIMIT
POP P,GS.FR ;[663] RESTORE FREE WORD COUNT
POP P,T1 ;GET LENGTH OF GS AREA BACK
ADD T1,GS.LB ;FIND END
MOVEM T1,GS.AB
CORUUO: CORE T1, ;CUT BACK
JFCL ;NEVER FAILS
MOVE T1,.JBREL ;END OF MEMORY
MOVEM T1,GS.UB
E02GSE::PUSH P,[0] ;[1174] GETSEG ON CHAN 0
.ERR. (LRE,,V%L,L%W,S%W,GSE)
MOVE T1,SEGBLK+1 ;GET NAME WE WANT
JRST @NXTSEG ;GET IT
>;END OF IFE FTSINGLE
SUBTTL THE END
END LNK999