perm filename IMPINI.MAC[IP,NET] blob sn#702356 filedate 1983-02-09 generic text, type C, neo UTF8
COMMENT āŠ—   VALID 00004 PAGES
C REC  PAGE   DESCRIPTION
C00001 00001
C00002 00002	Title	ImpIni - write out ImpCom.Hlp and free all core below us.
C00003 00003		SUBTTL	ONE-TIME-ONLY INITIALIZATION CODE
C00005 00004	HERE IF DDT IS LOADED, TO MOVE THE SYMBOL TABLE.
C00007 ENDMK
CāŠ—;
Title	ImpIni - write out ImpCom.Hlp and free all core below us.
SubTTl	Once only code

; find the tulip stuff
Search	Tulip

HlpChn==3			; channel for writing help

External   .JbDDT, .JbSa, .JbCor, .JbSym, .JbUsy, .JbFF
	SUBTTL	ONE-TIME-ONLY INITIALIZATION CODE


HLPWRT:!MOVE	P,[IOWD PDLEN,PDL] ;SETUP STACK
	Start			; set up tulip
	FSetup	HlpWrf		; set up the lowseg block
	FOOPEN	HlpFil		;OPEN FILE WE ARE WRITING
	MOVSI	T1,MHLPLN##	;SETUP AOBJN POINTER TO TEXT
	WCH	HLPTXT##(T1)	;WRITE T1 WORD
	AOBJN	T1,.-1		;LOOP THRU ALL
	FOCLOS	HlpFil		;CLOSE IT
	SETZM	OFile##		;OUTPUT TO TTY
	WSIX	HLPWRM		;SIGNAL SUCCESS
	MOVEI	T1,ImpCom##	;SETUP CORRECT STARTING ADDRESS
	HRRM	T1,.JBSA
	SKIPE	.JBDDT		;IS DDT LOADED?
	JRST	FIXSYM		;YES, GO FIX UP SYMBOLS
	MOVEI	T1,HLPWRT	;NO, SET FREE POINTER TO TOP OF THIS CODE
	HRLM	T1,.JBSA
	HRRM	T1,.JBFF
	SETZM	.JBCOR		;CAUSE .LOW FILE NOT TO BE WRITTEN
HLPWRX:!EXIT	1,		;SILENTLY EXIT
	JRST	ImpCom##		;IF .CONT

HLPWRM:!SIXBIT	\IMPCOM.HLP W&RITTEN#!\

;FILE BLOCK
HLPWRF:!FILE	HLPCHN,O,HlpFil,<STATUS(14),NAME(IMPCOM),EXT(HLP)>
HlpFil:	Block	FbSize		; block for help file writing

PdLen==50
Pdl:	Block	PdLen
;HERE IF DDT IS LOADED, TO MOVE THE SYMBOL TABLE.
FIXSYM:!SKIPL	T1,.JBSYM	;MAKE SURE THERE ARE SOME SYMBOLS
	HALT	HLPWRX		;OOP...
	SKIPL	.JBUSY		;ARE THERE ANY UNDEFINED SYMBOLS?
	JRST	.+3		;NO
	ADD	T1,.JBUSY	;YES, INCLUDE THEM IN THE COUNT
	HRR	T1,.JBUSY	;START AT BOTTOM OF UNDEFINED SYMBOLS
	HLRE	T2,T1		;GET COUNT
	MOVN	T2,T2		;MAKE IT POSITIVE
	MOVNI	T3,(T1)		;NEGATE CURRENT STARTING ADDRESS
	ADDI	T3,HLPWRT+40	;LEAVE SPACE FOR NEW SYMBOLS
	ADDM	T3,.JBSYM	;UPDATE SYMBOL TABLE POINTER
	SKIPL	.JBUSY		;ANY UNDEFINED SYMBOLS?
	SETZM	.JBUSY		;NO, ENSURE DDT RECOMPUTES
	SKIPGE	.JBUSY
	ADDM	T3,.JBUSY	;YES, UPDATE UNDEF. SYMBOL TABLE POINTER
	MOVSI	T1,(T1)		;FIRST ADR OF CURRENT TABLE TO LH
	HRRI	T1,HLPWRT+40	;NEW FIRST ADDR TO RH
	ADDI	T2,HLPWRT+40	;COMPUTE FIRST FREE AFTER NEW END OF TABLE
	HRLM	T2,.JBSA		;UPDATE MONITOR FREE POINTERS
	HRRM	T2,.JBFF
	HRLI	T2,(BLT T1,)	;MAKE INST TO MOVE THE TABLE
	MOVSI	T3,(JRST)	;MAKE INST TO JUMP TO DDT WHEN DONE
	HRR	T3,.JBDDT
	SOJA	T2,T2		;MOVE SYMBOL TABLE AND JUMP TO DDT


	END	HLPWRT		;WRITE HELP FILE FIRST TIME AROUND