ABC 
          IDENT  ABC,PRS
          PERIPH
          BASE   MIXED
          NOLABEL I 
          SST 
*COMMENT  AUTOLOAD BUFFER CONTROLLER. 
          COMMENT  COPYRIGHT CONTROL DATA SYSTEMS INC.  1992. 
          TITLE  ABC - AUTOLOAD BUFFER CONTROLLER.
          SPACE  4,10 
*****     ABC - AUTOLOAD BUFFER CONTROLLER. 
*         P. D. HAAS.  73/08/21.
          SPACE  4,10 
***              *ABC* PROVIDES FOR A DEADSTART AUTOLOAD OF DISK
*         OR TAPE CONTROLWARE, FROM A CARD READER.  WHEN THE LOAD 
*         SEQUENCE IS COMPLETE, A *CTI* DEADSTART IS INITIATED
*         ON THE CHANNEL TO WHICH CONTROLWARE WAS LOADED. 
          SPACE  4,10 
***       CARD DECK STRUCTURE.
* 
* 
*         ABC    (PUNCHB BINARY)
*         7/8/9              (EOR)
*         MTSS FIRMWARE 
*         7/8/9              (EOR)  OR
*         6/7/8/9            (EOI)  BUT NOT BOTH
          SPACE  4,10 
***       DEAD START PANEL SETTING. 
* 
*         CC = CARD READER CHANNEL. 
*         E  = CARD READER EQUIPMENT. 
*         TT = TAPE/DISK CHANNEL. 
*         U  = UNIT NUMBER. 
* 
*         SEE OPERATORS GUIDE FOR DESCRIPTION OF WORD 13. 
* 
* 
*         WORD   VALUE
* 
*         0001   75CC 
*         0002   77CC 
*         0003   E000 
*         0004   0000 
*         0005   77CC 
*         0006   1400 
*         0007   74CC 
*         0010   71CC 
*         0011   7664 
*         0012   00TT 
*         0013   IFNN 
*         0014   026U (TAPE) OR 03UU (DISK) DEADSTART FUNCTION
          SPACE  4,10 
***       COLDSTART PROCEDURE.
* 
*         1.  SET UP DEADSTART PANEL. 
*         2.  INSERT DECK IN CARD READER. 
*         3.  STOP AND MASTER CLEAR TAPE CONTROLLER.
*         4.  HIT DEADSTART SWITCH. 
*         5.  START CARD READER.
*         6.  PUSH MEMORY RELOAD. 
*         7.  READY CARD READER.
          SPACE  4,10 
**        ASSEMBLY CONSTANTS. 
  
  
 CSLA     EQU    7673        *ABC* LOAD ADDRESS 
          SPACE  4,10 
****      DIRECT LOCATION ASSIGNMENTS.
  
  
 ST       EQU    21 - 22     CARD STATUS
 T8       EQU    23          SCRATCH
 T9       EQU    24          SCRATCH
 JA       EQU    75 - 77     JUMP ADDRESSES 
****
          TITLE  MACRO DEFINITIONS. 
          SPACE  4,10 
**        MACRO DEFINITIONS  (BORROWED FROM COMPCHI). 
* 
*         MODIFIED TO ALLOW LABELED REMOTE SEQUENCES. 
  
  
**        CHIM - REDEFINE M-TYPE CHANNEL INSTRUCTIONS.
* 
* 
*         CHIM   OPC,CODE 
*         ENTRY  *OPC* = INSTRUCTION MNEMONIC.
*                *CODE* = OPERATION CODE. 
  
  
 CHIM     MACRO  OPC,CODE 
          PURGMAC OPC 
 OPC.     PPOP   7,CODE 
 OPC      MACRO  M,D
          LOCAL  A
 A        OPC.   M,0
 CT_D     RMT 
          CON    A
          RMT 
 OPC      ENDM
 CHIM     ENDM
  
          CHIM   AJM,6400 
          CHIM   IJM,6500 
          CHIM   FJM,6600 
          CHIM   EJM,6700 
          CHIM   IAM,7100 
          CHIM   OAM,7300 
          CHIM   FNC,7700 
 CHIN     SPACE  4,10 
**        CHIN - REDEFINE N-TYPE CHANNEL INSTRUCTIONS.
* 
* 
*         CHIN   OPC,CODE 
*         ENTRY  *OPC* = INSTRUCTION MNEMONIC.
*                *CODE* = OPERATION CODE. 
* 
*         NOTE   BIT 2**5 SET ON ALL *DCN* INSTRUCTIONS.
  
  
 CHIN     MACRO  OPC,CODE 
          PURGMAC OPC 
 OPC.     PPOP   4,CODE 
 OPC      MACRO  D
          LOCAL  A
 A        OPC.   0
 CT_D     RMT 
          CON    A
          RMT 
 OPC      ENDM
 CHIN     ENDM
  
          CHIN   IAN,7000 
          CHIN   OAN,7200 
          CHIN   ACN,7400 
          CHIN   DCN,7540 
          CHIN   FAN,7600 
 CHTB     SPACE  4,10 
**        CHTB - DEFINE CHANNEL TABLE.
*         CHANNEL TABLE IS TERMINATED BY A ZERO WORD. 
* 
* 
*         CHTB   D
*         ENTRY  *D* = NAME OF CHANNEL TABLE. 
  
  
 CHTB     MACRO  D
 CT_D     BSS    0
 CT_D     HERE
          CON    0           TERMINATE TABLE
 CHTB     ENDM
          SPACE  4,10 
**        COMMON DECKS. 
  
  
*CALL     COMPMAC 
*CALL     COMSDSL 
*CALL     COMSPIM 
          TITLE  PRESET.
 PRS      SPACE  4,10 
          ORG    CSLA 
  
 PRS      LDC    CTCH        SET CHANNEL TABLE ADDRESS
          STD    T8 
          LDD    10          MODIFY CHANNEL INSTRUCTIONS
          RJM    MCI
          IJM    PRS1,CH
          DCN    CH 
 PRS1     FNC    1300,CH     CHECK CARD READER STATUS 
          ACN    CH 
          IAN    CH 
          DCN    CH 
          LPN    3
          LMN    1
          NJN    PRS1        IF BUSY OR NOT READY 
          FNC    1500,CH
          ACN    CH 
          LDN    2
          IAM    ST,CH       READ CARD STATUS 
          LDC    120-2
          IAM    JA,CH       LOAD NEXT BLOCK
 PRSA     EQU    *-1
          DCN    CH 
          LDC    120-5
          RAM    PRSA        ADVANCE LOAD ADDRESS 
          LDD    ST 
          LPN    37          CHECK STATUS 
          LMN    7
          NJN    PRS1        IF NOT EOR 
          LJM    ABC         ENTER MAIN ROUTINE 
 MCI      SPACE  4,10 
**        MCI - MODIFY CHANNEL INSTRUCTIONS.
* 
*         ENTRY  (A) CHANNEL NUMBER.
*                (T8) = CHANNEL TABLE ADDRESS.
* 
*         USES   T1, T9.
  
  
 MCI1     STD    T9          SET INSTRUCTION ADDRESS
          AOD    T8 
          LDD    T1          MODIFY CHANNEL INSTRUCTION 
          RAI    T9 
 MCI2     LDI    T8 
          NJN    MCI1        IF NOT END OF CHANNEL TABLE
  
 MCI      SUBR               ENTRY/EXIT 
          LPN    37 
          STD    T1 
          UJN    MCI2        ENTER LOOP 
          SPACE  4,10 
**        CHANNEL TABLE.
  
  
          CHTB   CH 
  
          ERRNG  7777-* 
          BSS    10000-*
          CON    PRS-1
  
          TITLE  MAIN ROUTINE.
 ABC      SPACE  4,10 
          LOC    100-3
  
 JA       CON    CPT,OFC,OCD SUBROUTINE ADDRESSES REFERENCED AT *ABCG*
  
 ABC      LDC    CTCC        SET CARD READER CHANNEL TABLE
          STD    T8 
          LDD    10          MODIFY CARD READER CHANNELS
          RJM    MCI
          LDC    CTDC        SET CONTROLLER CHANNEL TABLE 
          STD    T8 
          LDD    12          MODIFY CONTROLWARE LOAD CHANNELS 
          RJM    MCI
          LDD    T1 
          ZJN    ABC3        IF AUTOLOAD TO CHANNEL 0 
          SBN    12 
          MJN    ABC1        IF LOADING TO CHANNEL WITH PP
          SBN    20-12
          MJN    ABC3        IF LOADING TO CHANNEL 12 OR 13 
          SBN    32-20
          PJN    ABC3        IF LOADING TO CHANNEL 32 OR 33 
 ABC1     AOM    ABCA        FLAG PP MOVED
          AJM.   ABC2,13     IF CARD READER NOT ON CHANNEL 13 
          SOM    ABCB        MOVE PP TO CHANNEL 12
          SOM    ABCC 
          SOM    ABCD 
          SOM    ABCE+2 
 ABC2     LDN    3           MOVE PP
          OAM    ABCE,DC
 ABC3     DCN    DC 
          FNC    414,DC      INITIATE AUTOLOAD
          ACN    DC 
 ABC4     FNC    1300,CC     GET CARD READER STATUS 
          ACN    CC 
          IAN    CC 
          DCN    CC 
          LPN    3
          LMN    1
          NJN    ABC4        IF NOT READY OR BUSY 
          FNC    1500,CC
          ACN    CC 
          LDC    120
          IAM    BUF,CC      READ CARD
          DCN    CC 
          LDM    BUF         CHECK WORD COUNT 
          SHN    -6 
          ZJN    ABC5        IF END OF DATA 
          STD    T8          CONVERT WORDS TO BYTES 
          SHN    2
          RAD    T8 
 ABCG     LJM    0,JA        CHECK FOR 7700 TABLE 
*         LJM    0,JA+1      (IF 5200 TABLE IS EXPECTED)
*         LJM    0,JA+2      (IF READING FULL CARDS)
  
 ABC5     LDM    BUF         CHECK STATUS 
          LPN    37 
          LMN    7
          ZJN    ABC6        IF EOR 
          LMN    17&7 
          NJN    *           IF NOT EOI 
 ABC6     DCN    DC 
          LDN    77 
          SBN    1           WAIT INITIALIZATION COMPLETE 
          NJN    *-1
          FNC    12,DC       REQUEST GENERAL STATUS 
          ACN    DC 
          IAN    DC 
          DCN    DC 
          SHN    6
          MJN    *           IF ALERT FLAG SET
          FNC    0,CC        RELEASE CARD READER
          LDN    1
          STD    T8 
          FNC    1700,CC     CLEAR CONVERTER
          LDD    13          MOVE PARAMETER WORD TO PANEL IMAGE 
          STM    DSPA+13
          LDD    14          MOVE DEADSTART FUNCTION
          STM    DSPA+6 
          SHN    -6 
          LMN    3
          ZJN    ABC7        IF DISK DEADSTART
          LCN    10-3        CLEAR OPPOSITE RESERVES
 ABC7     ADN    10          ISSUE OPERATION COMPLETE 
          FAN    DC 
 ABCA     LDN    0
*         LDN    1           (PP ON DEADSTART CHANNEL)
          ZJN    ABC8        IF NO PP ON DEADSTART CHANNEL
          LDN    3           MOVE PP BACK TO DEADSTART CHANNEL
 ABCB     OAM.   ABCF,13
*         OAM.   ABCF,12     (CARD READER ON CHANNEL 13)
          ACN    DC 
 ABCC     DCN.   13 
*         DCN.   12          (CARD READER ON CHANNEL 13)
 ABCD     ACN.   13 
*         ACN.   12          (CARD READER ON CHANNEL 12)
          LDC    LDNI+2      MODIFY PANEL IMAGE TO MOVE PP
          STM    DSPA+1 
          LDC    OAMI 
          LMD    T1 
          STM    DSPA+2 
  
*         MOVE DEADSTART PANEL IMAGE TO DIRECT CELLS. 
  
 ABC8     LDM    DSPA,T8
          STI    T8 
          AOD    T8 
          LMN    21 
          NJN    ABC8        IF NOT END OF PANEL IMAGE
          STD    21 
          ACN    CC 
*         LDN    0
          LJM    1           EXECUTE DEADSTART PANEL
  
 ABCE     CON    0
          LCN    0
          IAM.   0,13 
  
 ABCF     CON    0
          LCN    0
          IAM    0,DC 
 CPT      SPACE  4,10 
**        CPT - CHECK FOR PREFIX TABLE. 
* 
*         ENTRY  (T8) = NUMBER OF DATA BYTES ON THE CURRENT CARD. 
* 
*         EXIT   (*ABCG*) IS UPDATED. 
*                TO *OCD* IF THIS IS NEITHER A PREFIX NOR PPU TABLE.
*                TO *OCD2* IF IT IS A PREFIX TABLE. 
*                TO *OFC1* IF IT IS NOT A PREFIX TABLE. 
  
  
 CPT      BSS    0           ENTRY
          AOM    ABCG        INCREMENT JUMP ADDRESS 
          LDD    T8 
          SBK    17*5 
          NJN    CPT1        IF NOT A PREFIX OR PPU TABLE 
          LDM    BUF+2
          LMC    7700 
          NJN    OFC1        IF NOT A PREFIX TABLE
          LDM    BUF+3
          SBN    16 
          ZJN    OCD2        IF IT IS A PREFIX TABLE
 CPT1     AOM    ABCG        INCREMENT THE JUMP ADDRESS 
*         UJN    OCD         OUTPUT THE CARD
 OCD      SPACE  4,10 
**        OCD - OUTPUT THE CARD.
* 
*         ENTRY  (T8) = THE NUMBER OF DATA BYTES ON THE CURRENT CARD. 
* 
*         EXIT   DATA SENT TO CONTROLLER. 
*                TO *ABC4*
  
  
 OCD      BSS    0           ENTRY
          LDD    T8 
          OAM    BUF+2,DC    LOAD BUFFER CONTROLLER 
 OCD1     NJN    *           IF NOT ALL DATA TRANSMITTED, HANG
 OCD2     LJM    ABC4        READ NEXT CARD 
 OFC      SPACE  4,10 
**        OFC - OUTPUT THE FIRST CARD.
* 
*         ENTRY  (T8) = THE NUMBER OF DATA BYTES ON THE CURRENT CARD. 
* 
*         EXIT   (*ABCG*) UPDATED.
*                DATA SENT TO CONTROLLER. 
*                TO *OCD1*. 
  
  
 OFC1     LMC    5200&7700
          NJN    CPT1        IF NOT A PPU TABLE 
  
 OFC      BSS    0           ENTRY
          AOM    ABCG        INCREMENT THE JUMP ADDRESS 
          LCN    5           SKIP 5200 TABLE
          ADD    T8 
          OAM    BUF+7,DC    LOAD BUFFER CONTROLLER 
          UJN    OCD1        CHECK TRANSMISSION 
          SPACE  4,10 
*         DEADSTART PANEL IMAGE.
  
 DSPA     EQU    *-1
  
          CON    0
          CON    0
          CON    17 
          DCN    DC 
          FNC    260,DC 
          ACN    DC 
          IAM    7301,DC
          CON    0
          CON    310
          CON    0
          CON    0
          CON    0
          CON    0
          IAM.   0,12 
  
  
 BUF      BSS    0
          SPACE  4,10 
**        CHANNEL TABLES. 
  
  
          CHTB   CC 
          CHTB   DC 
  
  
          END 
