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