Trailing-Edge
-
PDP-10 Archives
-
decuslib20-03
-
decus/20-0078/util/makshr.mac
There is 1 other file named makshr.mac in the archive. Click here to see a list.
00100 TITLE makshr
00200 ENTRY makshr
00300 SUBTTL SIMULA utility, Lars Enderin Mar 1978
00400
00500 ;*** Copyright 1978 by the Swedish Defence Research Institute. ***
00600 ;*** Copying is allowed. ***
00700
00800
00900 sall
01000 search simmac
01100 macinit
01200 TWOSEG
01300 RELOC 400K
01400
01500
01600 DEFINE type(t)<
01700 OUTSTR [ASCIZ\
01800 t
01900 \]
02000 >
02100 ; Local definitions ;
02200
02300 .JBREL==44
02400 .JBHRL==115
02500 .JBSA== 120
02600 .JBCOR==133
02700 .JBREN==124
02800 LOC .JBREN
02900 Z
03000 RELOC
03100
03200 X1==1
03300
03400
03500
03600 makshr:
03700 SETZ ;Clear write protect
03800 SETUWP ;if possible
03900 HALT ;Give up if not possible
04000 L [40,,LSAVE+40] ;Set up for copy of low segment to high seg
04100 L X1,.JBREL
04200 ADDI X1,LSAVE-40
04300 BLT (X1) ;Make the copy
04400 IF ;This module is really at the end of hiseg
04500 HRRZ .JBHRL ;Last word of hiseg
04600 CAIL E+1000
04700 GOTO FALSE
04800 THEN ;Eliminate unused core
04900 MOVSI (X1)
05000 SUBI X1,400K-1 ;New size
05100 HRLM X1,.JBHRL
05200 ELSE ;Keep hiseg as is
05300 HRLZ .JBHRL
05400 FI
05500 HRRI 1 ;Cannot have 0 if low seg to be eliminated
05600 SETZM 140 ;Clear lowseg
05700 L X1,[140,,141]
05800 BLT X1,2K-1
05900 CORE ;Shrink core
06000 HALT ;Give up on error
06100 LI .MAIN## ;Ordinary start address
06200 HRRM LSAVE+.JBSA ; saved
06300 LI restart ;Start address for execution
06400 ST .JBSA ;No low core
06500 SETZM .JBREN ;No REENTER
06600 SETZM .JBCOR ;No low core saved
06700 type ([MAKSHR called. Do: SSAVE <filename>])
06800 MONRT.
06900 restart:
07000 PORTAL .+2
07100 PORTAL .+1
07200 HRRZ .JBREL+LSAVE ;Restore lowseg size
07300 CORE
07400 HALT
07500 MOVS [40,,LSAVE+40] ;Prepare to restore lowseg contents
07600 BLT @LSAVE+.JBREL ;Restore
07700 BRANCH .MAIN## ;Start normal processing
07800
07900
08000 LIT
08100 LSAVE: BLOCK 30K ; Saves lowseg data and program, high end eliminated
08200 E: ;
08300 END MAKSHR;