STBOOT MODULE 0001 * * 30th August 1982 * * "S" series bootstrap * * Loaded at RA 0 by system establishment manager (SEM) * or APF loader (APF). * SUBR BOOT CODE W0 WORD -1 W1 WORD 0 W2 WORD 0 W3 WORD 0 WORD(4) 0 VIS WORD(24) X'FACEFACE' *RECOGNISABLE VISAGE IN DUMPS *INITIAL REGISTER VALUES WORD X'39000' * LNB WORD X'0004FF02' * PSR - ACR=0,PSR=PRIV,PM=FF,ACS=2 WORD R'GO * PC WORD X'0000FFFF' * SSR - IM=FFFF WORD X'39005' * SF WORD X'007FFFFF' * IT WORD X'007FFFFF' * IC WORD 0 * CTB WORD 0 * XNB WORD 0 * B - set up by SEM or APF * BYTE 0,1 - reserved * BYTE 2 - stream no. of boots device * BYTE 3 - fn module no. of load DCU LWORD 0 * DR0,DR1 WORD 0 * A0 - ACC set up by SEM or APF WORD 0 * A1 - contains a real address byte descriptor WORD 0 * A2 - of the configuration table WORD 0 * A3 WORD X'00080000' * LSTL LSTBA WORD X'000000D0' * LSTB WORD X'80000000' * PSTL - only required for TCB area PSTBA WORD X'000000E8' * PSTB WORD X'3FF3FF80' * LST WORD X'80000001' * SEG 0 - stack,code WORD X'2FF00000' WORD X'80000081' * SEG 1 - SSN+1 CONL WORD X'2FF00000' * SEG 2 - config table CONAD WORD X'00000000' * set up dynamically WORD X'2FF3FF80' * SEG 0 - TCB area STEAD WORD 0 * set up dynamically WORD(4) 0 WORD 0 * OCP mprog load stop words WORD X'000F0000' * * * PSTL WORD X'83FC0000' PSTB WORD X'00008400' FIXA WORD X'80000001' CFLAGA WORD X'60000000' PCFLAGA WORD X'60000010' CONFIGA LWORD X'2800000000080000' WORD0 LWORD X'2800000100000000' WORD1 LWORD X'2800000100000004' WORD2 LWORD X'2800000100000008' WORD3 LWORD X'280000010000000C' WORD4 LWORD X'3000000100000010' READF WORD X'02' REWIND WORD X'38' STSTREAM WORD X'01' CSTREAM WORD X'03' TMMASK WORD X'02000000' OKMASK WORD X'C0000000' SKIPD WORD X'200' CCMASK WORD X'FFFFFF00' LSTBR1 WORD X'00080000' LSTBR2 WORD 0 CCARA1 WORD X'0003C000' CCARA2 WORD 0 CFLAG1 WORD X'80000000' CFLAG2 WORD 0 CONFIGK LWORD 0 ISAS LWORD 0 BOOTSTREAM WORD 0 IPLDEV WORD 0 CFGTX WORD 0 DCUPORT WORD 0 TM WORD 0 BLOCKS WORD 0 MECH WORD 0 * * * GO ST CONFIGK * SAVE CONFIG TABLE ADDRESS STB BOOTSTREAM *PROTEM LSS X'2966FACE' * IDENT ST.G X'6016' * TO 'LIGHTS' LB X'6006' * read switches (0/0/strm/dcu) LSS.GB * (as 'B' on entry) JZ NOHK * -> same media as SEM/APF ST BOOTSTREAM USH -24 AND 7 ST MECH * mechanism NOHK LSS BOOTSTREAM AND X'FF' ST DCUPORT L BOOTSTREAM USH -8 AND X'FF' ST BOOTSTREAM LSD X'18001000'/0 * MOVE CODE TO END OF 1ST 256K LD X'18001000'/X'3E000' MV JLK MODPC *RELOCATE PC LDRL S1ISAS *IMAGE STORE ARRAY STD ISAS JLK SLAVEOFF *RELOCATE LST LSS LSTBA UAD X'3E000' LD ISAS LB.D 1 ST.GB ST LSTBR2 *SAVE FOR LATER ACTIVATE *RELOCATE PST LSS PSTBA UAD X'3E000' LB.D 3 ST.GB LSD CONFIGK *SET DESC & STE FOR CONFIG TABLE MPSR X'11' OR FIXA ST CONAD LSS CONFIGK *LENGTH IAD 255 *CONVERT TO STE BOUND AND X'FF00' ISB X'80' ST.T OR CONL ST CONL *TO LST LSS.T OR CONFIGA *WORD DESC ST CONFIGA LDRL TCBD *SET UP TCB PSTE CYD MPSR X'11' *SHORTEN ACC OR FIXA *FIXED & AVAILABLE ST STEAD *INTO PSTE ST CCARA2 *AND CCA RA LD CONFIGA * CFGT address LSS DCUPORT * DCU port IMY 2 IAD 3 ST CFGTX LSS.D CFGTX * 2nd word of DCU entry USH -16 AND X'FF' * DCU no. USH 8 OR BOOTSTREAM * DCU/stream ST IPLDEV * for CHOPSUPE LSS.G 16 * OCPTYPE USH -24 * OCP port USH 22 *PC PORT OR PCFLAGA ST PCFLAGA LSS DCUPORT *DCU CC PORT USH 22 OR CFLAGA *INTO CHANNEL FLAG ADDRESS ST CFLAGA LSD CCARA1 *SET STREAM AREA BASE LB CFLAGA ADB 32 ST.GB LSS CSTREAM *SET UP CHANNEL FLAG USH 24 OR BOOTSTREAM ST CFLAG2 LSD CFLAG1 *CONNECT STREAM LB CFLAGA ST.GB CST MPSR X'12' *FORCE DOUBLE ACC BEFORE L.B L.GB *LSD NOT GOOD ENOUGH MPSR X'11' *PSD 2.5.3 SAYS TEST WORD 1 ONLY *PSD 4.3.1. SAYS WORDS 0/1 JNZ CST LSS STSTREAM *CHANGE TO START STREAM USH 24 OR BOOTSTREAM ST CFLAG2 *CHOPSUPE IS AFTER A DOUBLE TM ON THE IPL TAPE LSS MECH * set up initialise data USH 24 OR X'FC03' * 1600 BPI/PE ST TCBPRE LSS 0 ST TM *CLEAR TM COUNT LSS TCB0 OR SKIPD OR READF ST TCB0 REREAD JLK FIREIO AND TMMASK *TM? JNZ TMREAD *->YES LSS 0 ST TM *ZERO COUNT J REREAD *->READ NEXT BLOCK TMREAD LSS TM *LAST READ A TM? JNZ TTMREAD *->YES - DOUBLE TM LSS 1 ST TM J REREAD *->NEXT BLOCK TTMREAD LSS TCB0 NEQ SKIPD *UNSKIP ST TCB0 JLK FIREIO *READ CHOPSUPE HEADER LSS.I WORD0 *DATA END ISB.I WORD1 *LESS HDR LENGTH IAD X'FFF' *ROUND IDV X'1000' *TO BLOCKS ST BLOCKS READCH JLK FIREIO *CHOPSUPE BLOCK LSS TCB3 *INCREMENT ADDRESS IAD X'1000' ST TCB3 LSS BLOCKS ISB 1 ST BLOCKS JNZ READCH *->NEXT BLOCK * LSS TCB0 *REWIND TAPE AND CCMASK OR REWIND OR SKIPD ST TCB0 JLK FIREIO LD ISAS *SET UP REAL PST LSS PSTL LB.D 2 ST.GB LSS PSTB LB.D 3 ST.GB *NOW ACTIVATE CHOPSUPE LSS IPLDEV ST.I WORD2 LSD CONFIGK *TABLE ADDRESS ST.I WORD4 LSD LSTBR1 SLSD 0 ST.T ACT.T * IDLE X'B00B' * * * MODPC LSS.T * RETURN ADDRESS UAD X'3E000' *RELOCATE PC ST.T J.T *ENTER MOVED CODE * SLAVEOFF LD ISAS LSS.D 4 LB.D 5 ST.GB J.T * * FIREIO LB PCFLAGA *CLEAR ANY INTERRUPTS MPSR X'12' L.GB ST PPCINT LSS BLOCK IAD 1 ST BLOCK LSS TCBR *PREVIOUS RESPONSE ST PRESP LSS 0 ST TCBR *CLEAR RESPONSE WORD LSD CFLAG1 *CHANNEL FLAG LB CFLAGA ST.GB FIREW MPSR X'12' L.GB *WAIT FOR ACCEPT MPSR X'11' JNZ FIREW FIREWR LSS TCBR JZ FIREWR *WAIT FOR RESPONSE AND OKMASK *NORMAL TERMINATION? JZ FIREOK *->YES LB TCBR LSQ TCBPOST IDLE X'1010' FIREOK LSS TCBR J.T * * * * ALIGNS BLOCK WORD 0 PRESP WORD 0 PPCINT WORD(2) 0 * * S1ISAS WORD X'28000010' WORD X'00000008' WORD X'6000' *LSTL WORD X'6001' *LSTB WORD X'6002' *PSTL WORD X'6003' *PSTB WORD X'1C8' * slave bits WORD X'6011' *OCP CONTROL * * * ALIGND *TCB AREA - MUST BE IN A PUBLIC SEG TCBD WORD X'28000010' *NOTIONAL DESCRIPTOR FOR PSTBR SETUP WORD X'00000008' * *TCB TCB0 WORD X'2C40C000' * BIT17 - PRE & POST AMBLE * BIT22 - SKIP DATA;BIT24-31 - COMMAND TCB1 WORD X'00000001' *RA OF DATA SEG BASE TCB2 WORD X'00001000' *DATA DESCRIPTOR TCB3 WORD 0 TCB4 WORD 0 *VA OF NEXT TCB TCBR WORD 0 *RESPONSE WORD TCBPRE WORD(4) 0 *PRE AMBLE TCBPOST WORD(4) 0 *POST AMBLE END