                                                             /
/  INFORMATION CONTROL SYSTEMS INC
/  424 W WASHINGTON
/  ANN ARBOR, MICHIGAN
/
/  ICS ONE PAGE DECTAPE ROUTINES
/
/  CALL IS ... JMS XXXX
/              UNIT NUMBER IN BITS 0-5, ZEROS IN BITS 6-11
/              NUMBER OF BLOCKS TO BE READ OR WRITTEN
/              CORE ADDRESS TO START AT
/              TAPE BLOCK NUMBER TO START AT
/
/  THE ROUTINES WILL READ OR WRITE FROM THE SPECIFIED 
/  DECTAPE UNIT AND DELAY THE PROGRAM UNTIL ALL I/0
/  IS COMPLETED.  THE LAST BLOCK READ WILL OVERFLOW THE 
/  SPECIFIED REGION AND DESTROY ONE CORE
/  LOCATION.  ONLY STANDARD 129 WORD DECTAPE BLOCKS WILL
/  BE READ OR WRITTEN.  THE ROUTINES WILL HALT IF AN
/  ERROR OCCURS WITH THE STATUS BITS IN THE AC.
/
/  XXXX AS DEFINED IN THE CALL IS READ OR WRITE.
*6200
IR10=10
IR11=11
/
/
                                                             /
/
WRITE,  0       
        CLA
        TAD     WRITE
        JMS     PICKUP /PICK UP ARGS AND SET UNIT
        DCA     WRITE  /SAVE FOR PROPER RETURN
        JMS     SEARCH /FIND BLOCK
        TAD     WRF    /WRITE FORWARD BITS
        JMS     WORK   /DO ALL WORK
        MMSC           /CHECK FOR ERROR IN LAST BLOCK
        JMP I   WRITE  /OK...RETURN
        JMP     TILT
/
/
READ,   0
        CLA
        TAD     READ
        JMS     PICKUP /PICK UP ARGS 
        DCA     READ   /SAVE FOR PROPER RETURN
        JMS     SEARCH /FIND BLOCK
        TAD     RDF    /READ FORWARD BITS
        JMS     WORK   /DO ALL WORK
        MMSC           /CHECK FOR ERROR IN LAST BLOCK
        JMP I   READ   /RETURN IF NONE
        JMP     TILT
/
/
WORK,   0              /ENTER WITH PROPER FUNCTION BITS IN AC
        MMLF           /TO DECTAPE CONTROL
RLP,    TAD     CORE   /CORE ADDRESS
        MMML           /TO DECTAPE CONTROL
        TAD     CORE   /CORE ADDRESS
        TAD     K0200  /+128
        DCA     CORE   /NEW ADDRESS
        JMS     DELAY  /WAIT FOR FLAG
        ISZ     NBLOCK /ARE WE THROUGH
        JMP     RLP    /NO
        TAD     STOP   /YES ... STOP TAPE
        MMMM
        JMP I   WORK   /RETURN
/
/  ROUTINE TO PICK UP ARGUEMENTS
/
PICKUP, 0
        DCA     T      /SAVE ADDRESS
        TAD     M5     /-5
        DCA     T1     /TO INDEX LOC
        TAD     ASM1   /ADDRESS OF BIT PATTERNS
        DCA     IR10   /TO AUTO 10
        TAD     ASM1   /ADDRESS OF BIT PATTERNS
        DCA     IR11   /ALSO TO AUTO 11
        TAD I   IR10   /BIT PATTERN
        AND     C77    /MASK OUT OLD UNIT
        TAD I   T      /ADD IN UNIT
        DCA I   IR11   /GIVES NEW BIT PATTERN
        ISZ     T1     /REPEAT 5 TIMES
        JMP     .-5
        ISZ     T
        TAD I   T      /NO OF BLOCKS
        CIA
        DCA     NBLOCK /PLACE COMPLEMENT IN LOC
        ISZ     T
        TAD I   T      /CORE ADDRESS
        DCA     CORE
        ISZ     T
        TAD I   T      /TAPE BLOCK NUMBER
        DCA     RBLOCK
        ISZ     T
        TAD     T
        JMP I   PICKUP /RETURN
/
/  ROUTINE TO SEARCH FOR BLOCK NUMBER
/
SEARCH, 0
        MMCF           /CLEAR DECTAPE FLAGS
        TAD     RBLOCK /PLACE -REQUESTED BLOCK NO
        CIA            /IN MRBLK
        DCA    MRBLK
SFWD,   TAD     SRCHF  /SEARCH FORWARD BIT STRUCTURE
        MMMM           /TO DECTAPE CONTROL
        JMS     DELAY  /INITIAL 70 MS DELAY
FSC,    DCA     DIREC  /SET DIRECTION SWITCH
/
SCONT,  TAD     ABLOCK /ADDRESS OF TAPE BLOCK NUMBER
        MMML           /TO DECTAPE UNIT
        JMS     DELAY  /WAIT FOR BLOCK TO BE FOUND
        TAD     BLOCK  /ACTUAL BLOCK
        TAD     MRBLK  /-REQUESTED BLOCK
        SNA            /ARE WE THERE
        JMP     FOUND  /YES
        ISZ     DIREC  /NO ... WHAT DIREC ARE WE GOING
        JMP     .+4    /FORWARD
        SMA CLA        /REVERSE ... IS REV CORRECT
        JMP     RSC    /YES ... LET SEARCH CONTINUE
        JMP     REVD   /NO ... REVERSE DIRECTION
/
        SPA CLA        /IS FWD CORRECT
        JMP     FSC    /YES ... LET SEARCH CONTINUE
                       /NO ... REVERSE DIRECTION
/
REVD,   TAD     DIREC  /DIRECTION SWITCH
        SZA CLA        /REV=0,FWD=1 AT THIS TIME
        JMP     SREV   /SEARCH REVERSE
        JMP     SFWD   /SEARCH FORWARD
/
SREV,   TAD     SRCHR  /SEARCH REVERSE BIT STRUCTURE
        MMMM           /TO DECTAPE CONTROL
        JMS     DELAY  /INITIAL 70 MS DELAY
RSC,    CLA CMA        /-1
        DCA     DIREC  /TO DIRECTION SWITCH
        JMP     SCONT  /WAIT FOR A BLOCK TO BE FOUND
/
DELAY,  0
        MMCF           /CLEAR FLAGS
        CLA CLL
        MMSF           /SKIP ON DT FLAG
        JMP     .-1
        MMSC           /SKIP ON ERROR FLAG
        JMP I   DELAY  /RETURN
/
TILT,   TAD     STOP   /STOP TAPE
        MMMM
        MMRS           /READ STATUS BITS
        HLT            /HALT WITH STATUS IN AC
/
FOUND,  ISZ     DIREC  /BLOCK FOUND ... WHICH WAY ARE WE GOING
        JMP I   SEARCH /FORWARD ... RETURN
        JMS     DELAY  /REVERSE ... WAIT UNTIL WE PASS OVER IT
        JMP     SFWD   /GO TO SEARCH FORWARD TO FIND IT AGAIN
/
/
/
ABLOCK, BLOCK 
ASM1,   STOP-1
BLOCK,  0
CORE,   0
DIREC,  0
MRBLK,  0
NBLOCK, 0
RBLOCK, 0
T,      0
T1,     0
/
/  DECTAPE BIT PATTERNS
/
STOP,   0000
SRCHF,  0021
SRCHR,  0031
RDF,    0022
WRF,    0024
/
K0200,  0200
C77,    0077
M5,    -0005
$
                                                         