ASMB,A,B,L,C
      HED XBBDL 91700-16161 * (C) HEWLETT PACKARD CO. 1976
      ORG 0 
      SPC 2 
******************************************************************
*  * (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.       *
******************************************************************
      SPC 2 
**************************************************************
*     NAME:           XBBDL 
*     SOURCE TAPE:    91700-16161   REV  A
*     ABS TAPE:       91700-16161   REV. A
*     PROGRAMMER:     BOB SHATZER 
*     DATE WRITTEN:   03/12/75
*     DATE MODIFIED:  29 DEC 1975 
**************************************************************
* 
*     THIS PROGRAM CONFIGURES AND INSTALLS THE BBDL IN THE
*     PROTECTED AREA OF CORE FOR 4,8,12,16,24, AND 32K CPU'S. 
* 
*     OPERATING INSTRUCTIONS: 
* 
*     1.  LOAD (OR DOWN-LOAD) THIS PROGRAM USING THE BBL, BBDL, 
*         SCE/1, OR SCE/2.
* 
*     2.  SET THE SWITCH REGISTER AS FOLLOWS: 
*         NOTE -  A ZERO IN ANY FIELD WILL RESULT IN THE FOLLOWING
*         CONFIGURATION:
*                READER  16 
*                DISC    21 
*                SUBCHANNEL 0 
* 
*         SWITCHES  SET TO
*         """"""""  """"""
* 
*           5-0     SELECT CODE OF PHOTOREADER
* 
*           6-11    SELECT CODE OF DISC (LOWER) 
* 
*          14-12    1 FOR  8K CPU 
*                   2 FOR 12K CPU 
*                   3 FOR 16K CPU 
*                   5 FOR 24K CPU 
*                   7 FOR 32K CPU 
* 
*          15       SUBCHANNEL OF SYSTEM DISC 
*                   (0 FOR LOWER AND 1 FOR UPPER) 
* 
*         ALL OTHER SWITCHES MUST BE SET TO 0.
* 
*     3.  SET P REGISTER TO 2B (STARTING ADDRESS).
* 
*     4.  PRESS 'INTERNAL PRESET', 'EXTERNAL PRESET', 'LOADER 
*         ENABLE', AND 'RUN'. 
* 
*     5.  HLT 77B INDICATES SUCCESSFUL INSTALLATION.
* 
*         HLT 22B INDICATES AN INVALID SWITCH REGISTER SETTING: 
*            - INVALID CPU SIZE 
*            - EXTRANEOUS SWITCHES
* 
      SKP 
B     EQU 1 
* 
      ORG 2B
* 
      JMP 3,I 
      DEF START 
      HLT 4B        POWER FAIL HALT 
* 
      ORG 100B
* 
START CLC 0,C       TURN OFF EVERYTHING 
      LIA 1         GET SWITCH REGISTER 
      AND B77       GET SELECT CODE OF READER 
      SZA,RSS       IS SELECT CODE ZERO?
      LDA B16       YES - SET IT TO 16
      STA PCHAN     AND SAVE IT 
      LIA 1         GET SWITCH REGISTER AGAIN 
      ELA,RAL       ROTATE BIT 15 TO E
      ALF,ALF       AND BITS 6-11 TO LOW WORD 
      AND B77       ISOLATE SELECT CODE 
      SZA           IS DISC SELECT CODE ZERO? 
      JMP *+3       NO
      LDA B21       YES - SET IT TO 21
      CLE           AND SET DISC SUBCHANNEL TO 0
      STA DCHAN     AND SAVE IT AS DISC SELECT CODE 
      CLA,CME       CHANGE DISC SUBCHANNEL BIT FOR HDWE 
      ELA,RAL       AND ROTATE IT INTO POSITION 
      ALF,ALF 
      IOR G30       INCL OR WITH SEEK WORD VALUE
      STA SEEKA,I   AND SAVE IT 
      LIA 1 
      AND G70       GET CPU SIZE
      CPA G40 
      JMP HLT22     20K NO GOOD 
      CPA G60 
      JMP HLT22     28K NO GOOD 
      SZA,RSS       IS MEM SIZE 0?
      LDA G70       YES - SET IT TO 32K 
      IOR C77       FORM FWBBL
      STA FWBBL 
      CMA,INA       NEGATE FOR MEM-PROTECT CONSTANT 
      STA .MS,I 
* 
      LDB IOTBP     GET DEF TO READER I/O TABLE 
      LDA PCHAN     AND READER SELECT CODE
      JSB CONFG     CONFIGURE READER I/O
      LDB IOTBD     GET DISC DATA CHANNEL I/O TABLE 
      LDA DCHAN     AND ITS SELECT CODE 
      JSB CONFG     GO CONFIGURE THAT 
      LDB IOTBC     GET COMMAND CHANNEL I/O TABLE 
      LDA DCHAN     GET DATA CHANNEL S/C
      INA           BUMP IT TO GET COMMAND CHANNEL
      JSB CONFG     GO CONFIGURE THAT TOO 
* 
      LDB .GO 
MOVE1 LDA B,I 
      STA FWBBL,I 
      ISZ FWBBL 
      INB 
      CPB .ENDR     FINISHED ?
      JMP HLT77     YES.
      JMP MOVE1     NO. LOOP. 
* 
HLT22 HLT 22B       INVALID SWITCH SETTINGS 
      RSS 
HLT77 HLT 77B       INSTALLATION COMPLETED. 
      JMP 3,I       RESTART 
* 
CONFG NOP           I/O CONFIGURATION ROUTINE 
      STB T2
      STA CHAN
CNFG1 LDB T2,I      CONFIGURE THE I/O INSTRUCTIONS
      SZB,RSS 
      JMP CONFG,I   FINISHED. 
      LDA B,I 
      SSA,RSS       SIMPLE I/O INSTRUCTION TEST 
      HLT 63B       NOT I/O INSTRUCTION 
      XOR CHAN
      AND B77 
      XOR B,I 
      STA B,I       STORE CONFIGURED INSTRUCTION
      ISZ T2
      JMP CNFG1 
* 
.GO   DEF LOAD
.ENDR DEF ENDR
.MS   DEF MAXAD 
PCHAN NOP 
DCHAN NOP 
CHAN  NOP 
T2    NOP 
B16   OCT 16
B21   OCT 21
B77   OCT 77
G70   OCT 70000 
G30   OCT 30000 
G40   OCT 40000 
G60   OCT 60000 
C77   OCT 7700
FWBBL NOP 
SEEKA DEF SEEKC 
* 
IOTBP DEF *+1       PHOTOREADER I/O TABLE 
      DEF RDCH+2
      DEF RDCH+3
      DEF RDCH+5
      NOP           TERMINATES TABLE
* 
IOTBD DEF *+1       DISC DATA CHANNEL I/O TABLE 
      DEF D.1 
      DEF D.2 
      DEF D.3 
      DEF D.4 
      DEF DMACW 
      NOP 
* 
IOTBC DEF *+1       DISC COMMAND CHANNEL I/O TABLE
      DEF C.1 
      DEF C.2 
      DEF C.3 
      DEF C.4 
      DEF C.5 
      DEF C.6 
      DEF C.7 
      NOP 
* 
      HED BBDL CODE * (C) HEWLETT PACKARD CO. 1976
      ORG 3700B     SITUATE FOR TRANSPORTABILITY
* 
RDR   EQU 16B 
* 
LOAD  CLA,RSS 
EOBLK LDA EOTC   TRAILER LENGTH 
LEADR CLC 0,C    LEAVE CLEAN ON EXIT
      CCE,INA,SZA,RSS 
      HLT 77B    END OF TAPE
      JSB RDCH   READ A CHAR
      CMB,CCE,INB,SZB,RSS    IS IT WORD COUNT?
      JMP LEADR   NO
      STB COUNT    SAVE WDCOUNT 
      JSB RDCH     THROW AWAY ONE FRAME 
      JSB RDCH     READ START ADDRESS 
      STB 0        INITIALIZE CKSUM 
LOOP  STB ADDR     SET POINTER
      ADB MAXAD    VALIDATE LOAD ADDRESS
      SEZ,CLE      LOADER CLOBBERED?
ADDR2 HLT 55B      YES TELL USER
      JSB RDCH     FETCH DATA WORD
EOTC  STB ADDR,I   PLANT WORD IN CORE 
      ADA 1        TALLY CKSUM
      LDB ADDR
      CLE,INB 
      ISZ COUNT    END OF BLOCK 
      JMP LOOP     NOT YEST 
      JSB RDCH     READ CKSUM 
      CPB 0        VALID? 
      JMP EOBLK    YES
ADDR1 HLT 11B      NO-CKSUM ERROR 
COUNT NOP 
MAXAD NOP 
RDCH  NOP           READ FRAME(2 IF E IS CLEAR) 
      CLB 
      STC RDR,C     START READER
      SFS RDR 
MSK1  JMP *-1       USED BY DISC BOOT 
      MIB RDR,C 
      SEZ,CME       READ ANOTHER CHAR?
      JMP RDCH,I    NO,EXIT WITH E CLEAR
      BLF,BLF       SET FOR SECOND CHAR 
      JMP RDCH+2
* 
ADDR  NOP 
DC    EQU 21B 
CC    EQU DC+1
* 
SEEKC OCT 30000     SUBCHAN=1 (OCT 31000=SUBCHAN 0) 
      LDB MSK1
C.1   OTB CC        ISSUE READ COMMAND
C.2   STC CC,C      START READ TO CLEAR 1ST STATUS
      LDA SEEKC 
D.1   OTA DC        ISSUE CYLINDER ADDRESS (0)
D.2   STC DC,C      TELL CTRL CYL ADDRESS LOADED
C.3   OTA CC        ABORT READ,SEND SEEK COMMAND
C.4   STC CC,C      START SEEK
      LDA DMACW 
      OTA SIX       ISSUE DMA CONTROL WD
      LDA ADDR1 
      OTA TWO       ISSUE START CORE ADDRESS(2011B) 
D.3   STC DC,C      TELL CNTL HEAD/SECT LOADED
      STC TWO       SET FOR WORD COUNT
      OTA TWO       ISSUE WD COUNT (HUGE) 
C.5   OTB CC      ISSUE READ COMMAND
D.4   STC DC,C     PREVENT SPURIOUS DMA XFER
      STC SIX,C    START DMA
C.6   STC CC,C     START DISK READ
C.7   SFS CC       WAIT FOR DISC XFER (6144 WDS)
      JMP *-1 
      JSB ADDR2,I   DONE-JMP INTO CODE (2055B,I)
* 
DMACW ABS 120000B+DC
ENDR  BSS 0 
* 
TWO   EQU 2 
SIX   EQU 6 
* 
      END 
                                                                