                                                                                                      
          /B.EIBEN    AACHEN,4.3.68.
          /III.PHYS.INST
          /T.H.AACHEN
          /AACHEN,W.GERMANY
          /TAPE HANDLER
          /
          /MANUAL OPERATION:
          /          ADDR. 7442: NUMBER OF BLOCKS
          /                7443: TRANSFER-ADRESS
          /                7444: INITIAL BLOCK
          /                7445: READ=2,WRITE=4
          /                7446: STARTING ADRESS
          /PROGRAM RETURNS TO 7441 WITH AC=0100,WHEN DONE!
          /
          /USING AS SUBROUTINE:
          /          CALLING SEQUENCE:     JMS I PICKUP
          /                                CORE ADRESS
          /                                INITIAL BLOCK
          /                                NUMBER OF BLOCKS
          /                                ERROR RETURN ADRESS
          /                                READ=2, WRITE=4
          /
          /WITH INTERRUPT,A,SERVICE ROUTINE SHOULD BE PREPARED AND
          /DISM=NOP SHOULD BE REPLACED BY DISM=JMP  Z SCAT OR JMP I
          / Z SCAT AS EXPLAINED FOR DEC STANDARD ROUTINES
          /
          /FOR SEARCHING,REQUEST 0 BLOCKS,CORE ADRESS AND READ OR
          /WRITE IMMATERIAL
          /PROGRAM IS PROTECTED,I.E. BLOCKS 0 OR 1 AND MEM.PORTION
          /7600-7777 CAN'T BE OVERWRITTEN.TO SWITCH OFF PROTECTION
          /CHANGE TAP,  STA RAL  TO TAP, JMP FORWD !
          /
          /AFTER TRANSFER,STATUS IS IN AC!
          /AC=0000              PROTECTION WORKED,NO TRANSFER
          /AC=0100              TRANSFER READY
          /AC OTHERWISE,SEE USERS HANDBOOK FOR STATUS FLAGS!
          /
          /
          DISM=NOP
          *7400
OUT,      CLA IAC    /RETURN SYSTEM
          DCA BLOCKS
          TAD ADDR
          DCA ADRESS
          STL RAL
          DCA BLOCK
          STL RTL
          DCA REWRIT
          TAD ADRESS
          DCA SAVE
          JMP FORWD
M1,       7777
WAIT,     0          /DT-DELAY AND SERVICE SUB
          MMCF
          DISM       /NOP OR JMP,JMP I Z FOR INTERRUPT-MODE
RETURN,   MMSF       /DT-FLAG?
          JMP .-1
          CLA CLL
          MMSC       /ERROR FLAG?
          JMP I WAIT/NO,RETURN
          MMRS       /YES,END ZONE?
          RTL
          SPA CLA
          JMP REVD   /YES,REVERSE DIRECTION
ERRET,    MMMF       /ERROR OR READY,STOP TAPE!
          TAD SAVE
          DCA I ADRESS/RESTORE 129TH WORD
          MMRS       /GET STATUS
          DCA WORK1
          TAD WORK1
          MMSF
          JMP .-1
          JMP I ERROR           /RETURN ADRESS
ERR,      HLT
BLOCKS,   0
ADRESS,   0
BLOCK,    0
REWRIT,   0
BEGIN,    CLA CLL
          TAD BLOCKS
          SNA
          JMP FORWD  /0 BLOCKS REQUESTED,ONLY SEARCHING!
          CIA
          DCA BLOCKS /=-BLOCK-COUNT
          TAD BLOCKS
          DCA WORK1
TAP,      STA RAL    /CHANGE TO JMP FORWD FOR ALL BLOCK-TRANSFER!
          TAD BLOCK
          SPA CLA
          JMP I ERROR/BLOCK 0 OR 1 REQUESTED
          TAD ADRESS
          JMP NEXT+2
NEXT,     TAD SAVE
          TAD C200
          DCA SAVE
          TAD SAVE
          TAD C200
          SNA CLA
          JMP I ERROR/ADRESS IN PROTECTED AREA
          ISZ WORK1
          JMP NEXT
FORWD,    TAD FORWAD /SEARCH FORWARDS
          MMMM
          JMS WAIT
          TAD WRK1   /=(WORK1
          MMML
SUCHE,    JMS WAIT
          TAD WORK1
          CIA
          TAD BLOCK  /BLOCK FOUND?
          SNA
          JMP FINISH /YES!
          SMA
          JMP SUCHE  /NO,GO ON!
REVD,     TAD M1     /SEARCH REVERSE
          DCA SEARCH
          TAD REVERS
          MMMM
          JMS WAIT
          ISZ SEARCH
          JMP .-2
          JMP FORWD
FINISH,   TAD BLOCKS /BLOCK FOUND,BEGIN TRANSFER
          SNA CLA
          JMP ERRET  /0 BLOCKS,ONLY SEARCHING!
          TAD REWRIT
          MMLF
          TAD ADRESS
          MMML
          TAD ADRESS
          TAD C200
          DCA ADRESS
          TAD I ADRESS/SAVE 129TH WORD
          DCA SAVE
          JMS WAIT
          ISZ BLOCKS /READY?
          JMP FINISH /NO
          JMP ERRET
C200,     200
ADDR,     7600
SEARCH,   0
SAVE,     0
ERROR,    ERR        /CAUTION,CHANGE FOR OTHER PAGE
WORK1,    0
WRK1,     WORK1      /CAUTION,CHANGE FOR OTHER PAGE
FORWAD,   121
REVERS,   131
PICKUP,   0
          IOF
          CLA CLL
          TAD PICKUP
          DCA Z 0
          TAD I Z 0  /GET CORE ADRESS
          DCA ADRESS
          ISZ Z 0
          TAD I Z 0  /GET INITIAL BLOCK
          DCA BLOCK
          ISZ Z 0
          TAD I Z 0  /GET BLOCK-COUNT
          DCA BLOCKS
          ISZ Z 0
          TAD I Z 0  /GET (ERROR)-RETURN ADRESS
          DCA ERROR
          ISZ Z 0
          TAD I Z 0  /GET READ-WRITE COMMAND
          DCA REWRIT
          ISZ Z 0    /FIRST RETURN SHOULD BE VIA Z 0
          JMP BEGIN
$
                                                                                                                                                                            Nl~^v_