ASMB,R,L,C NAM SGMTR,8 6/19/75 SXL SEGMENTER ROUTINE .A. EQU 0 .B. EQU 1 ENT SEGNM ENT SEG ENT SGIN2 ENT EXBAS EXT .ENTR EXT EXEC SEGNM ASC 2,SG01 CURRENT SEGMENT OCT 46005 NAME BUFFER; TYPE =5 EXBAS NOP S DEC 1 INITIAL SEGMENT:SG01L .2 OCT 176000 .10 DEC 8 .S DEF S D10 DEC 10 *003 ! *010 LET EXEC BE SUBROUTINE,EXTERNAL *012 LET EXBAS BE INTEGER,GLOBAL *013 ! *014 ! * ENTER HERE DIRECTLY FROM NEW SEGMENT FWS NOP SGIN2 NOP JSB .ENTR DEF FWS *017 GOTO SEG1 JMP SEG1 *018 END *019 ! *020 SEG: FUNCTION(INDEX)GLOBAL INDEX NOP SEG NOP JSB .ENTR DEF INDEX *021 ! *022 !LOAD REQUESTED SEGMENT INTO CORE IF NOT ALREADY THERE *023 !INDEX::REQUESTED SUBROUTINE NUMBER *024 ! LDA FWS HAS A SEGMENT BEEN LOADED YET? SZA,RSS SKIP IF YES JMP SEG2 NO--USE INITIAL VALUE OF S SEG1 LDA FWS,I GET ADDRESS OF DIRECTORY TABLE. ADA INDEX,I * 0 <= TABLE VALUE <2000K THEN USE AS INDEX FOR * NEW SEGMENT NAME. LDA .A.,I STA S *027 IFNOT S AND 176000K THEN GOTO SEG2 AND .2 SZA,RSS JMP SEG2 LDA .S LDA 0,I CHASE RAL,CLE,SLA,ERA DOWN JMP *-2 INDIRECTS JMP SEG,I AND RETURN WITH 15-BIT ADDRESS SEG2 LDA S CLB DIV D10 CONVERT 2-DIGIT DECIMAL ALF,ALF ROTATE QUOTIENT TO HIGH 8 BITS ADA .B. PUT REMAINDER IN LOW 8 BITS ADA =B30060 CONVERT TO TWO-DIGIT ASCII STA SEGNM+1 *036 CALL EXEC(8,SEGNM) JSB EXEC DEF *+3 DEF .10 DEF SEGNM *037 END *038 END END