ASMB,R,L,C * NAME : MRCNF * SOURCE: 92064-18139 * RELOC: 92064-16028 * PROGMR: E.J.W. BASED ON RTE-III VERSION D.L.S. * * **************************************************************** * * (C) COPYRIGHT HEWLETT-PACKARD COMPANY 1976. ALL RIGHTS * * * RESERVED. NO PART OF THIS PROGRAM MAY BE PHOTOCOPIED, * * * REPRODUCED OR TRANSLATED TO ANOTHER PROGRAM LANGUAGE WITHOUT * * * THE PRIOR WRITTEN CONSENT OF HEWLETT-PACKARD COMPANY. * * **************************************************************** * * NAM MRCNF,3,90 92064-16028 REV.1726 770512 EXT $OPSY * A EQU 0 B EQU 1 * MRCNF NOP THIS 'PROGRAM' IS ACTUALLY A SUBROUTINE ADA D5 WHICH IS CALLED BY $MSC DURING THE START-UP STA IDNAM SAVE A-REG (ADDR OF NAME IN ID SEG) CLB CLEAR A,B,S REGISTERS TO PREVENT CLA POSSIBLE ERROR IF OPERATOR OTA 1 ACCIDENTLY HITS RUN PREMATURELY HLT 70B HALT 'CAUSE FLOPPY IBL CAN'T. USER SETS S AND B. STB NEWCH SAVE B-REG (FLOPPY BOOT SETS I/O CHANNEL IN B) SZB,RSS IF B=0, SKIP DISC SECTION JMP CRTIO * * DISC RECONFIGURATION * LDB DRT CHECK IF LU 2 POINTS TO FLOPPY INB LDA B,I SZA,RSS JMP CRTIO LU 2 = 0, SKIP DISC SECTION * AND B77 COMPUTE EQT ADDR OF LU 2 ADA M1 IF IT WASN'T 0 MPY D15 ADA EQTA ADA D4 INDEX TO EQT TYPE WORD LDA A,I AND B374C STA DMASK SAVE DISC EQT TYPE BITS AND B36K CPA B14K 27 < TYPE < 34 ? RSS YES, IT IS DISC. SKIP JMP CRTIO NO, NOT DISC * LDA DMASK SET A=EQT TYPE, CHP2=NEW I/O CHANNEL JSB SCAN FIND EQT AND SET NEW I/O CHANNEL IN EQT STA DKEQT SAVE EQT # STB EQTAD SAVE EQT ADDR JSB SINT SET UP INTERRUPT TABLE & TRAP CELL ISZ NEWCH NEED 2 I/O SLOTS FOR FLOPPY LDB EQTAD JSB SINT SET UP SECOND INT SLOT * LDB DRT SET LU 2 TO POINT TO INB CURRENT DISC EQT LDA B,I GET LU WORD AND REMOVE OLD EQT AND C77 IOR DKEQT STA B,I SET NEW WORD WITH CURRENT EQT * * * SYSTEM CONSOLE RECONFIGURATION * CRTIO LIA 1 GET NEW S.C. FOR AND B77 CONSOLE FROM S-REG SZA,RSS BITS 0-5. JMP TBGIO IF ZERO, SKIP CRT SECTION * STA NEWCH SAVE S.C. FOR SCAN AND LDA CHSC3 CONFIGURE I-O IOR NEWCH INSTRUCTIONS. STA CHSC3 LDA CHSC4 IOR NEWCH STA CHSC4 LDA CHSC2 IOR NEWCH STA CHSC2 * LDA CHMRS SEND MASTER RESET.FLAG SET=12966A. CHSC2 CLF 0 CHSC3 OTA 0 CHSC4 SFS 0 * CLE,RSS IF NOT 12966A CARD, SET E=0. CCE IF 12966A CARD, SET E=1. * LDB SYSTY GET ADB D4 OLD LDA B,I DEVICE AND B374C TYPE. CPA B2400 JMP PAS29 * SEZ JMP PAS28 OLD=00, NEW=05. JMP PAS27 OLD=00, NEW=00. * PAS29 SEZ JMP PAS27 OLD=05, NEW=05. * PAS28 CLA,SEZ OLD=05, NEW=00. LDA B2400 SCAN FOR 00 OR JSB SCAN 05 DEVICE. * STB SYSTY SETUP BASE PAGE CONSOLE WORD. * STA DRT,I FIX LU#1. * PAS25 JSB SINT SET INTERRUPT TABLE & TRAP CELL JMP TBGIO * PAS27 ADB M1 CURRENT SYSTEM CONSOLE IS ALRIGHT LDA B,I EXCEPT FOR THE CHANNEL IN EQT AND C77 WORD 4. FIX UP WORD IOR NEWCH 4 THEN RETURN AND STA B,I FIX UP BASE PAGE ADB M3 JMP PAS25 TRAP CELL AND INTBA. * * * TIME-BASE-GENERATOR RECONFIGURATION * TBGIO LIA 1 GET NEW S.C.FOR ALF,ALF TBG FROM S-REG RAL,RAL BITS 6-11. AND B77 SZA,RSS IF ZERO, JMP PRVIO SKIP TBG SECTION * STA TBG CLB CLEAR LDA INTBA TBG ADA M6 INTERRUPT ADA TBG TABLE STB A,I LOCATION. * LDA JCICI SET UP TBG STA TBG,I TRAP CELL. * * * PRIVILEGED TERMINATOR CARD RECONFIGURATION * PRVIO LIA 1 GET NEW S.C. ALF FOR PRIVILEGED AND B17 INTERRUPT CARD. SZA,RSS IF ZERO, JMP MEMSZ SKIP PRIVILEGED INTERRUPT SECTION * CPA B10 IF NEW S.C=10 CLA THEN CLEAR STA DUMMY DUMMY. * LDB JCICI PUT 'JSB $CIC,I' INTO BASE STB DUMMY,I PAGE TRAP CELL. * * * MEMORY SIZE RECONFIGURATION * MEMSZ LDA $OPSY CPA M5 IS IT RTE-M III? JMP NOCHG YES, THEN DON'T DO IT. * LDB SZ32K SET ADDR FOR 32K MEMORY CHECK STB B,I TRY STORING THERE LDA B,I CPA B CAN WE READ IT BACK? JMP FNDSZ YES, WE HAVE 32K! * LDB SZ24K NO, TRY 24K MEMORY STB B,I LDA B,I CPA B CAN WE READ IT BACK? JMP FNDSZ YES, WE HAVE 24K! * LDB SZ16K NO, TRY 16K MEMORY STB B,I LDA B,I CPA B WE SHOULD HAVE THAT MUCH AT LEAST RSS JMP NOCHG ...BUT IF WE DON'T... * FNDSZ LDA BGORG SUBTRACT CURRENT HIGH ADDR CMA,INA FROM MAX MEMORY INSTALLED NOW ADA B STA TEMP0 AND SAVE THE DIFFERENCE ADA M7K.. SSA IS THERE AN INCREASE TO NEXT 8K BOARD? JMP NOCHG NO, MAKE NO CHANGES * STB BGLWA YES, SET UP NEW LWA STB BGORG LDA AVMEM ADA TEMP0 STA AVMEM ADJUST FWA SAM BY SAME AMOUNT * NOCHG CLA CLEAR OUT NAME IN ID SEG STA IDNAM,I TO RELEASE ID SEG ISZ IDNAM STA IDNAM,I ISZ IDNAM STA IDNAM,I JMP MRCNF,I RETURN TO SYSTEM START-UP SEQUENCE * * CHMRS OCT 150077 MASTER RESET FOR 12966A CARD. DMASK NOP FLOPPY DRIVER TYPE DKEQT NOP EQTAD NOP OLDCH NOP SET BY SCAN. NEWCH NOP IDNAM NOP B10 OCT 10 B17 OCT 17 B77 OCT 77 B2400 OCT 2400 B14K OCT 14000 B36K OCT 36000 B374C OCT 37400 C77 OCT 177700 M5 DEC -5 M6 DEC -6 M3 DEC -3 M1 DEC -1 D4 DEC 4 D5 DEC 5 D15 DEC 15 SZ32K OCT 77776 SZ24K OCT 57777 SZ16K OCT 37777 M7K.. OCT -17776 SKP * **************************************************************** * * SCAN SUBROUTINE - FIND EQT BY TYPE & SET UP NEW I-O CHANNEL * * ENTRY: * :=NEW I/O CHANNEL # TO PUT INTO EQT * :=BITS 8-13 = DEVICE TYPE. * JSB SCAN * * EXIT: * :=EQT# * :=EQT1 ADDRESS. * :=OLD I/O CHANNEL # OF EQT * **************************************************************** * SCAN NOP STA TEMP0 SAVE DEVICE TYPE MASK. LDB EQT# SET CMB,INB UP STB COUNT COUNT. LDB EQTA POSITION TO FIRST ADB D4 EQT WORD 5 * SCAN1 LDA B,I GET DEVICE TYPE AND B374C FROM EQT WORD 5. CPA TEMP0 IF CORRECT TYPE, JMP SCAN2 THEN EXIT. ADB D15 POSITION TO NEXT ISZ COUNT EQT WORD 5. JMP SCAN1 CONTINUE SCAN. * LDA TEMP0 HLT 61B IF NO DEVICE, JMP *-1 HLT 61. (A)=DEVICE TYPE TO BE FOUND * SCAN2 ADB M1 LDA B,I AND B77 GET OLD STA OLDCH CHANNEL AND LDA B,I SAVE IT. AND C77 FIX CHANNEL # IOR NEWCH IN EQT WORD 4. STA B,I ADB M3 POSITION TO EQT1. LDA COUNT COMPUTE ADA EQT# EQT # INA AND JMP SCAN,I RETURN. * ***************************************************************** * * SINT SUBROUTINE - SET UP INTERRUPT TABLE & TRAP CELL * * ENTRY: * :=NEW I/O CHANNEL # * :=EQT ADDR * JSB SINT * * EXIT: * REGISTERS MEANINGLESS * ***************************************************************** * SINT NOP STB TEMP0 SAVE EQT ADDR LDA NEWCH GET NEW I/O CHANNEL ADA M6 STA B ADB INTBA (B) = ADDR OF INTERRUPT TABLE ENTRY CMA,CLE,SSA TEST FOR NEGATIVE I/O CHANNEL ADA INTLG TEST FOR MAX I/O CHANNEL LDA TEMP0 SEZ,RSS ANY ERROR IN ABOVE TESTS? JMP BADCH YES, ERROR HALT * STA B,I SET EQT ADDR IN NEW INTERRUPT TABLE ENTRY * LDA JCICI GET 'JSB $CIC-LINK,I' AND STA NEWCH,I PUT INTO NEW TRAP CELL JMP SINT,I RETURN * BADCH LDB INTLG ERROR. I O CHANNEL # TOO HIGH ADB D5 LDA NEWCH (A)=NEW I/O CHANNEL HLT 63B HLT 63 (B)=MAX I/O CHANNEL ALLOWED JMP *-1 * * TEMP0 NOP COUNT NOP * * JCICI EQU 5B LOCATION 5 MUST BE 'JSB $CIC-LINK,I' EQTA EQU 1650B EQT# EQU 1651B DRT EQU 1652B INTBA EQU 1654B INTLG EQU 1655B TBG EQU 1674B SYSTY EQU 1675B DUMMY EQU 1737B AVMEM EQU 1751B BGORG EQU 1752B BGLWA EQU 1777B * END MRCNF