ASMB,A,B,L,C
      HED SCE/1 91700-16160 * (C) HEWLETT PACKARD CO. 1976
      ORG 0 
      SPC 1 
******************************************************************
*  * (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:         SCE/1 (PROTECTED BBL) 
*     SOURCE TAPE:  91700-18160   REV 1621  
*     ABS TAPE:     91700-16160   REV 1621  
***************************************** 
*      J.D. RHODES  31 MAY 1974 
*      MODIFIED BY CHUCK WHELAN  17 MAY 1976
* 
*     THIS PROGRAM CONFIGURES AND INSTALLS THE SCE/1 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, 
*         SCE/1, OR SCE/2.
* 
*     2.  SET THE SWITCH REGISTER AS FOLLOWS: 
* 
*         SWITCHES  SET TO
*         """"""""  """"""
* 
*           5-0     SELECT CODE OF SERIAL INTERFACE CARD
* 
*          14-12    0 FOR  4K CPU 
*                   1 FOR  8K CPU 
*                   2 FOR 12K CPU 
*                   3 FOR 16K CPU 
*                   5 FOR 24K CPU 
*                   7 FOR 32K CPU 
* 
*          15       SET IF CORELOAD TO COME UP RUNNING
* 
*         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 (OR CORELOAD GO) INDICATES SUCCESSFUL INSTALLATION. 
* 
*         HLT 22B INDICATES AN INVALID SWITCH REGISTER SETTING: 
*            - SELECT CODE < 10B
*            - INVALID CPU SIZE 
*            - EXTRANEOUS SWITCHES
* 
*     DURING DOWNLOAD THE FOLLOWING HALTS MAY OCCUR:
*            102011 - ERROR STATUS RETURNED FROM CENTRAL
*            102012 - LINE PROTOCOL FAILED
*            102013 - BAD LENGTH RECEIVED 
* 
A     EQU 0 
B     EQU 1 
      SUP 
* 
      SKP 
      ORG 2B
* 
      JMP 3,I 
      DEF START 
      HLT 4B        POWER FAIL HALT 
* 
      ORG 100B
* 
START CLC 0,C       TURN OFF EVERYTHING 
      LIA 1 
      AND B77       GET SELECT CODE 
      STA CHN       SAVE SELECT CODE
      AND B7        VALIDATE
      CPA CHN 
      JMP HLT22     INVALID SELECT CODE 
      LIA 1 
      AND C77       CHECK FOR EXTRANEOUS SWITCHES 
      SZA 
      JMP HLT22     BAD SWITCH SETTINGS 
      LDB HLT77 
      LIA 1 
      SSA           SKIP IF HLT 77 AT END 
      LDB JMP2      SETUP TO RUN IMMEDIATELY
      STB .STRT,I   CONFIGURE SCE-1 FINAL INST. 
      AND G70       GET CPU SIZE
      CPA G40 
      JMP HLT22     20K NO GOOD 
      CPA G60 
      JMP HLT22     28K NO GOOD 
      IOR C77       FORM FWBBL
      STA FWBBL 
* 
      LDB IOTAB     DEF TO I/O TABLES 
      STB T2
CNFG1 LDB T2,I      CONFIGURE THE I/O INSTRUCTIONS
      SZB,RSS 
      JMP MOVE      FINISHED. 
      LDA B,I 
      SSA,RSS       SIMPLE I/O INSTRUCTION TEST 
      HLT 63B       NOT I/O INSTRUCTION 
      XOR CHN 
      AND B77 
      XOR B,I 
      STA B,I       STORE CONFIGURED INSTRUCTION
      ISZ T2
      JMP CNFG1 
* 
MOVE  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 
* 
.STRT DEF GOHLT 
.GO   DEF GO
.ENDR DEF ENDR
CHN   NOP 
T2    NOP 
B7    OCT 7 
B77   OCT 77
G70   OCT 70000 
G40   OCT 40000 
G60   OCT 60000 
C77   OCT 7700
FWBBL NOP 
JMP2  JMP 2 
* 
IOTAB DEF *+1       DEF TO I/O TABLE
      DEF GO
      DEF GO+1
      DEF GO+2
      DEF X 
      DEF OUT+1 
      DEF GETWD+1 
      DEF GETWD+3 
      DEF IN+3
      NOP           TERMINATES TABLE
* 
      HED SCE/1 BBL CODE * (C) HEWLETT PACKARD CO. 1976 
      ORG 3700B     SITUATE FOR TRANSPORTABILITY
* 
SDI   EQU 14B       SATELLITE COMPUTER CHANNEL. 
* 
GO    CLC SDI,C 
      LIA SDI,C     INITIALIZE CARD 
      LIA SDI 
* 
      LDA RC        OUTPUT 1-WORD PARMB 
M2    JSB OUT       PRECEEDED BY 3 OVERHEAD 
      LDA MIN2      WORDS: RC, LENGTH, MODE.
      JSB OUT 
      CMA,INA 
      JSB OUT 
      RAR,CLE,RAR   SET BIT 15. 
      MIA 1         MERGE CONTENTS OF SW REGISTER.
      JSB OUT 
* 
X     OTA SDI       RESPOND TO LAST TNW 
      JSB IN        READ FIRST WORD 
      CPB RC        REQUEST?
      JMP END       YES (EOT).
      STB RL        SAVE LENGTH 
      SSB,RSS       CHECK THAT LENGTH NEG.
      HLT 13B       BAD LENGTH RECEIVED 
      JSB IN        READ START ADDRESS. 
      STB ADDR      SAVE. 
      STB OUT       INITIALIZE CHECKSUM 
      OTB 1         FLASH ADDR IN SW REG
Y     JSB IN        READ DATA WORD. 
MIN2  STB ADDR,I    MOVE TO CORE ADDRESS. 
      ISZ ADDR      INCR. CORE POINTER. 
      ADB OUT       COMPUTE CHECKSUM
      STB OUT 
      ISZ RL        LAST DATA WORD? 
      JMP Y         NO. 
      JSB GETWD     READ CHECKSUM 
      LDA RLW 
      CPB OUT       DOES CHECKSUM COMPARE 
      LDA TNW       YES, SEND TNW 
      JMP X         CONTINUE
* 
OUT   NOP 
      OTA SDI       OUTPUT WORD.
      JSB GETWD     GET NEXT WORD 
      CPB TNW       TNW?
      JMP OUT,I     YES.
      CPB RLW       RLW?
      JMP *-5       YES.
      HLT 12B       NEITHER 
* 
GETWD NOP 
      SFS SDI       NEW WORD RECEIVED?
      JMP *-1       NO. 
      LIB SDI       READ DATA WORD
      JMP GETWD,I 
* 
IN    NOP 
      JSB GETWD     READ NEXT WORD
      LDA TNW 
      OTA SDI       ASK FOR NEXT WORD (SEND TNW)
      JMP IN,I      RETURN. 
* 
END   JSB IN        THROW AWAY REQ LEN
      JSB IN        THROW AWAY MODE 
      JSB IN        READ PROGL STATUS WORD. 
      SZB           ERROR IF NON-ZERO 
      HLT 11B       ERROR STATUS FROM CENTRAL, HALT 
GOHLT NOP           CONFIGURED TO "HLT 77" OR "JMP 2" 
* 
TNW   OCT 170360    TRANSMIT NEXT WORD. 
RLW   OCT 007417    RE-TRANSMIT LAST WORD.
RC    OCT 170017    REQUEST COMING. 
ADDR  NOP 
RL    NOP 
* 
ENDR  BSS 0 
      END 
                                                                                                                                            