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