      LDB BUFLG     LOAD B WITH BUFFER LENGTH 
      JSB .CRCC,I   GO COMPUTE BUFFER CRCC
      STA CRCO1     SAVE CRCC 
      CLA,CLE 
      LDB CRCO2     OUTPUT CRCC MESSAGE 
      JSB FMTR2,I 
      CCA 
      LDB CRCO1     OUTPUT CRCC WORD
      JSB FMTR2,I 
      JMP CRCO0,I   EXIT
* 
CRCO1 NOP 
CRCO2 DEF *+1 
      ASC 12,CRCC = # OUTPUT BUFFER/
* 
* 
*                   CRCC ROUTINE
*CALL:              COMPUTES CYCLIC REDUNDANCY CHECK CHARACTER
*     LDA <BUFFER ADDRESS>
*     LDB <BUFFER LENGTH> 
*     JSB .CRCC,I 
*         <NORMAL RETURN> 
*         <A REG WITH CRCC> 
*         SEE 7970B MAGNETIC TAPE UNIT MAINTENANCE
*          TRAINING MANUAL PAGE C5 FOR EXPLAINATION 
* 
CRCC  NOP 
      STA TMP1      SAVE BUFFER ADDRESS 
      CMB,INB       MAKE B NEGATIVE 
      STB COUNT     SAVE BUFFER LENGTH
CRCC1 EQU * 
      LDB TMP1
      LDA B,I       LOAD DATA 
      ALF,ALF       SHIFT UPPER BYTE TO LOWER 
      AND MK377     ISOLATE UPPER BYTE
      JSB PARIT     GO ADD PARITY BIT 
      JSB CRCR      INPUT TO CRC REGISER
      LDB TMP1
      LDA B,I       LOAD DATA AGAIN 
      AND MK377     ISOLATE LOWER BYTE
      JSB PARIT     GO ADD PARITY BIT 
      JSB CRCR      INPUT TO CRC REGISTER 
      ISZ TMP1      INCREMENT ADDRESS TO NEXT DATA
      ISZ COUNT     IS IT THE LAST DATA?
      JMP CRCC1     NO-DO IT AGAIN
      CLA           YES- COMPLETE CRC 
      JSB CRCR      INPUT TO CRC REGISTER 
      XOR MSK24     COMPLEMENT ALL EXCEPT IBM 2&4 
      STA CRCC2     SAVE NON-INVERTED CRCC
* 
*         INVERT CRCC IN A REGISTER AND STORE IN B WITHOUT PARITY 
      CLB,CLE       CLEAR B AND E REG 
CRCC3 EQU * 
      ALF,ALF       MOVE TO UPPER BYTE
      ELA,CLE       DROP OUT PARITY 
      RAR,ERA       SAVE BIT 0
      ALF,ALF       MOVE TO LOWER BYTE
      RAL,ELA       INSERT BIT 0
      ALF,ALF       SHIFT TO UPPER BYTE 
      JMP CRCC,I    EXIT
* 
CRCC2 NOP           NON-INVERTED CRCC 
MSK24 OCT 753       COMPLEMENT CONSTANT (IBM 2&4) 
* 
* 
* 
*                   ADD PARITY BIT TO BYTE ROUTINE
* 
*CALL:
*     JSB PARIT 
*     LDA <BYTE>
*         <RETURN>
*         <A REG CONTAINS BYTE WITH PARITY> 
* 
* 
PARIT NOP 
      CCE           PRESET-E-TO"1"
      LDB .M8       LOAD B WITH MINUS 8 
PARI1 EQU * 
      SLA,RAR       COMPLEMENT-E-FOR
      CME            EVERY"1" IN INPUT DATA. AT 
      ISZ B           END,-E- CONTAINS PARITY BIT.
      JMP PARI1 
      RAR           INSERT PARITY BIT INTO BYTE 
      ELA 
      ALF,ALF       MOVE TO LOWER BYTE
      JMP PARIT,I   EXIT
* 
.M8   DEC -8
* 
* 
*                   SIMULATE CRCR- CRC REGISTER 
*CALL:
*     LDA <A CONTAINS BYTE WITH PARITY> 
*     JSB CRCR
*         <RETURN>
*         <A REG CONTAINS ZERO> 
*         <IF INPUT A = 0, A WILL CONTAIN CRC WORD> 
* 
* 
CRCR  NOP 
      STA CRCR3     SAVE A
      LDA CRCR1     LOAD OLD CRCC 
      AND MK400 
      SZA           IS IT ZERO? 
      JMP CRCR4     NO-JUMP 
      JMP CRCR5 
CRCR4 EQU * 
      LDA CRCR3     LOAD NEW BYTE 
      XOR MSK74     OR WITH MASK 74B
      XOR CRCR1     OR WITH OLD CRCC
      JMP CRCR6 
CRCR5 EQU * 
      LDA CRCR3     LOAD NEW BYTE 
      XOR CRCR1     OR WITH OLD CRCC
CRCR6 EQU * 
      CLE 
*                   REMOVE PARITY BIT FROM CRCC AND 
*                   SHIFT BACK ONE BIT
      ERA           MOVE BIT 0 TO E 
      ALF,ALF       SHIFT TO UPPER BYTE 
      ERA,RAL       INSERT BIT 7 IN PARITY
      ALF,ALF       SHIFT TO LOWER BYTE 
      STA CRCR1 
      LDB CRCR3     CHECK A REG INPUT 
      SZB           IS IT ZERO? 
      JMP CRCR,I    NO-EXIT 
      STB CRCR1     YES-CLEAR OLD CRCC
      JMP CRCR,I    EXIT- CRCC IS IN A REG. 
* 
MSK74 OCT 74        COMPLEMENTS  ITS 2-5
MK400 OCT 400       MASK FOR BIT 7
CRCR1 NOP           OLD CRCC
CRCR3 NOP           TEMPORARY CRCR
* 
* 
*                   COMPUTE CRCC FROM INPUT BUFFER
* 
CRCI0 NOP 
      JSB .CKIN,I   CHECK FOR INPUT BUFFER
      LDA INBUF     LOAD BUFFER ADDRESS 
      LDB INBFL     GET INPUT BUFFER LENGTH 
      JSB .CRCC,I   GO COMPUTE BUFFER CRCC
      STA CRCI1     SAVE CRCC 
      CLA,CLE 
      LDB CRCI2     OUTPUT CRCC MESSAGE 
      JSB FMTR2,I 
      CCA 
      LDB CRCI1     OUTPUT CRCC WORD
      JSB FMTR2,I 
      JMP CRCI0,I   EXIT
* 
CRCI1 NOP 
CRCI2 DEF *+1 
      ASC 11,CRCC = # INPUT BUFFER/ 
* 
* 
* 
* 
*                   COUNTER-INCREMENTS AND PRINTS A 
*                   NUMBER EACH TIME IT IS EXECUTED 
* 
CNT0 NOP
      STA AREG      SAVE PERSET COUNT 
      LDB AREG
      LDA CNT01     LOAD COUNTER
      SZA           IS COUNTER ZERO?
      JMP CNT03     NO-CONTINUE 
      SZB,RSS       YES-IS THERE A PRESET VALUE?
      JMP CNT03     NO-EXIT 
      ADB .M1       YES- SUBTRACT 1 
      STB CNT01     SAVE IT 
CNT03 EQU * 
      ISZ CNT01     NO-INCREMENT COUNTER
      NOP 
      CLA,CLE 
      LDB CNT02     OUTPUT CURRENT COUNT
      JSB FMTR2,I 
      CLA,INA 
      LDB CNT01     OUTPUT #
      JSB FMTR2,I 
      JMP CNT0,I    EXIT
* 
CNT02 DEF *+1 
      ASC 1,#/
* 
*                   FILLS OUTPUT BUFFER WITH A SPECIAL
*                    WORD 
* 
WORD0 NOP 
      STA AREG      SAVE SPECIAL WORD 
      STB BREG      SAVE # OF TIMES TO BE REPEATED
      SZB,RSS       IS THERE A BUFFER LENGTH? 
      LDB BFMAX     NO-GET MAX BUFFER 
      STB WORD1     SETUP BUFFER LENGTH 
      STA WORD2     SETUP DATA WORD 
      LDA .1
      LDB WORD3 
      JSB FILL,I    GO FILL UP BUFFER 
      DEF WORD4     RETURN
WORD1 NOP           BUFFER LENGTH 
      DEF IRQ       ERROR RETURN
WORD4 EQU * 
      JMP WORD0,I   EXIT
* 
WORD3 DEF *+1       POINTER TO DATA 
WORD2 NOP           DATA WORD 
* 
* 
*                   COMPUTE LRCC FOR INPUT BUFFER 
* 
LRCI0 NOP 
      JSB .CKIN,I   CHECK FOR INPUT BUFFER
      LDA INBUF     LOAD BUFFER ADDRESS 
      LDB INBFL     LOAD BUFFER LENGTH
      JSB .LRCC,I   GO COMPUTE LRCC 
      STA LRCI1     SAVE LRCC 
      CLA,CLE 
      LDB LRCI2     OUTPUT LRCC 
      JSB FMTR2,I 
      CCA 
      LDB LRCI1 
      JSB FMTR2,I 
      JMP LRCI0,I   EXIT
* 
LRCI1 NOP           LRCC
LRCI2 DEF *+1 
      ASC 11,LRCC = # INPUT BUFFER/ 
* 
* 
*                   COMPUTE LRCC FOR OUTPUT BUFFER
* 
LRCO0 NOP 
      JSB .CKOT,I   CHECK FOR OUTPUT BUFFER 
      LDA FWAM      LOAD BUFFER ADDRESS 
      LDB BUFLG     LOAD BUFFER LENGTH
      JSB .LRCC,I   GO COMPUTE LRCC 
      STA LRCO1     SAVE LRCC 
      CLA,CLE 
      LDB LRCO2     OUTPUT LRCC 
      JSB FMTR2,I 
      CCA 
      LDB LRCO1 
      JSB FMTR2,I 
      JMP LRCO0,I   EXIT
* 
LRCO1 NOP           LRCC
LRCO2 DEF *+1 
      ASC 12,LRCC = # OUTPUT BUFFER/
* 
* 
* 
*                   COMPUTE LRCC
*CALL 
*     LDA <BUFFER ADDRESS>
*     LDB <BUFFER LENGTH> 
*     JSB LRCC
*         <NORMAL RETURN> 
*         <LRCC IN A REGISTER>
* 
LRCC  NOP 
      STA LRCC1     SAVE ADDRESS
      STB LRCC2     SAVE LENGTH 
      JSB .CRCC,I   GO COMPUTE CRCC 
      ALF,ALF       SHIFT CRCC TO LOWER BYTE
      JSB .PRIT,I   ADD PARITY
      STA LRCC3     SAVE CRCC 
      CLA 
      STA MASK      SETUP MASK
      LDA LRCC1     GET ADDRESS 
      STA TMP1      SETUP ADDRESS 
      LDB LRCC2 
      CMB,INB 
      STB COUNT     SETUP COUNTER 
LRCC4 EQU * 
      LDB TMP1
      LDA B,I       GET DATA
      ALF,ALF 
      AND MK377     ISOLATE UPPER BYTE
      JSB .PRIT,I   ADD PARITY
      XOR MASK      INPUT TO LRCC REGISTER
      STA MASK
      LDB TMP1
      LDA B,I       GET DATA
      AND MK377     ISOLATE LOWER BYTE
      JSB .PRIT,I   ADD PARITY
      XOR MASK      COMPUTE LRC 
      STA MASK
      ISZ TMP1      SETUP NEXT DATA 
      ISZ COUNT     FINISHED? 
      JMP LRCC4     NO-LOOP 
      LDA LRCC3     YES-GET CRCC
      XOR MASK      COMPUTE LRC 
      STA LRCC5     SAVE LRCC 
      JMP LRCC,I    EXIT-WITH CRCC IN A REG.
* 
LRCC1 NOP           BUFFER ADDRESS
LRCC2 NOP           BUFFER LENGTH 
LRCC3 NOP           CRCC
LRCC5 NOP           FINAL LRCC
* 
* 
TRAP0 NOP           SETUP TRAP CELLS FOR INTERRUPTS 
      STA AREG      SAVE CHANNEL SELECT CODE
      ADA .N100     SUBTRACT 100 FROM SELECT CODE 
      SSA,RSS       IS THE SELECT CODE < 100
      JMP TRAP4     NO-GO USE COMMAND CHANNEL 
      LDA AREG      RELOAD INPUT SELECT CODE
      ADA .M6       SUBTRACT 6 FROM SELECT CODE 
      SSA,RSS       IS THE SELECT CODE > 6? 
      JMP TRAP5     YES-CONTINUE
TRAP4 EQU *         NO-USE COMMAND CHANNEL
      LDA CMD       GET COMMAND CHANNEL SELECT CODE 
      STA AREG      SAVE IT FOR USE LATER 
TRAP5 EQU * 
      STB TRAP2     SAVE LINE # FOR JMP 
      SZB,RSS       IS THE LINE # MISSING?
      JMP .OPLN,I   YES-GO REPORT IT
      LDA AREG      NO-SETUP TRAP CELL
      JSB INTJP,I   FOR INTERRUPT 
      DEF JMPIL     BASE PAGE LINK
      DEF TRAP1     POINTER TO INTERRUPT ROUTINE
      JMP TRAP0,I   EXIT
* 
* 
TRAP1 EQU * 
      LDA TRAP0     GET RETURN ADDRESS
      INA           ADJUST RETURN 
      STA TRAP3     SETUP RETURN FOR NEW LINE # 
      LDA TRAP2     GET NEW LINE #
      JMP *+1,I     GOTO NEW LINE NUMBER
TRAP3 NOP           RETURN ADDRESS
TRAP2 NOP           NEW LINE NUMBER 
* 
* 
      SKP 
      ORG PAG16 
*        SKIP TO NEXT PAGE OF MEMORY ******************************** 
* 
*         COMPARE INPUT AND OUTPUT BUFFER ROUTINE 
* 
COMP0 NOP 
      JSB .CKIN,I   CHECK FOR INPUT BUFFER
      JSB .CKOT,I   CHECK FOR  OUTPUT BUFFER
      CLA           CLEAR READ AND WRITE ER FLAGS 
      STA RDERR 
      STA WRERR 
      JSB COMPR     GO COMPARE BUFFERS
      JMP COMP0,I   EXIT
* 
* 
STC0  NOP           SET CONTROL ROUTINE 
      AND .77       GET SELECT CODE 
      ADA STC01     ADD INSTRUCTION 
      STA *+1       SAVE FOR EXECUTION
      NOP           EXECUTE INSTRUCTION 
      JMP STC0,I    EXIT
STC01 STC 0 
* 
* 
CLC0  NOP           CLEAR CONTROL ROUTINE 
      AND .77       GET SELECT CODE 
      ADA CLC01     ADD INSTRUCTION 
      STA *+1       SAVE FOR EXECUTION
      NOP           EXECUTE INSTRUCTION 
      JMP CLC0,I    EXIT
CLC01 CLC 0 
* 
* 
STF0  NOP           SET FLAG ROUTINE
      AND .77       GET SELECT CODE 
      ADA STF01     ADD INSTRUCTION 
      STA *+1       SAVE FOR EXECUTION
      NOP           EXECUTE INSTRUCTION 
      JMP STF0,I    EXIT
STF01 STF 0 
* 
* 
CLF0  NOP           CLEAR FLAG ROUTINE
      AND .77       GET SELECT CODE 
      ADA CLF01     ADD INSTRUCTION 
      STA *+1       SAVE FOR EXECUTION
      NOP           EXECUTE INSTRUCTION 
      JMP CLF0,I    EXIT
CLF01 CLF 0 
* 
* 
* 
*                   CKIN- CHECKS FOR INPUT BUFFER 
*                    IF IT DOES NOT EXIST-THEN EXITS
*                    TO IRQ.
* 
CKIN  NOP 
      STA AREG      SAVE A AND B REGISTER 
      STB BREG
      LDA INBFL     CHECK INPUT BUFFER LENGTH 
      SZA           IS IT ZERO? 
      JMP CKIN1     NO-CONTINUE 
      JMP CKIN2     YES-ERROR EXIT
CKIN1 EQU * 
      LDA AREG      RESTORE A AND B REGISTER
      LDB BREG
      JMP CKIN,I    EXIT
CKIN2 EQU * 
      CLA,CLE 
      LDB CKIN3 
      JSB FMTR2,I   OUTPUT ERROR MESSAGE
      CLA,INA 
      LDB CULN      GET CURRENT LINE #
      JSB FMTR2,I   OUTPUT IT 
      JMP .IRQ,I    ERROR EXIT
* 
CKIN3 DEF *+1 
      ASC 13,NO INPUT BUFFER (LINE #)/
* 
* 
*                   CKOUT-CHECKS FOR OUTPUT BUFFER
*                   IF IT DOES NOT EXIST-THEN EXITS 
*                   TO IRQ. 
* 
CKOUT NOP 
      STA AREG      SAVE A AND B REGISTER 
      STB BREG
      LDA BUFLG     CHECK OUTPUT BUFFER LENGTH
      SZA,RSS       IS IT ZERO? 
      JMP CKOT2     YES-ERROR EXIT
      LDA AREG      RESTORE A AND B REGISTER
      LDB BREG
      JMP CKOUT,I   EXIT
CKOT2 EQU * 
      CLA,CLE       YES-ERROR 
      LDB CKOT1 
      JSB FMTR2,I   OUTPUT ERROR MESSAGE
      CLA,INA 
      LDB CULN      GET CURRENT LINE #
      JSB FMTR2,I   OUTPUT IT 
      JMP .IRQ,I    ERROR EXIT
* 
CKOT1 DEF *+1 
      ASC 13,NO OUTPUT BUFFER (LINE #)/ 
* 
* 
* 
*                   PCMND-EXTENDS NUMBER OF PROGRAM COMMANDS IN 
*                        OPERATOR DESIGN
* 
.PCMD NOP 
      CPA AIL       IS IT AN INPUT BUFFER LENGTH
      JMP PBL0      YES-GO DO IT
      JMP .PCMD,I   ERROR RETURN
PBL0  EQU * 
      CLA,CLE       BEGIN FORMAT
      LDB BFCT1 
      JSB FMTR2,I   OUTPUT MESSAGE
      CLA,INA       SETUP INTEGER OUTPUT
      LDB INBFL     GET BUFFER LENGTH 
      JSB FMTR2,I   OUTPUT NUMBER 
      ISZ .PCMD     ADJUST RETURN 
      JMP .PCMD,I   NORMAL EXIT 
* 
* 
AIL   ASC 01,IL     BUFFER LENGTH REQUEST 
* 
* 
BFCT1 DEF *+1 
      ASC 04,BF CT #/ 
* 
* 
      HED           7970 (13181-13183) TAPE DIAGNOSTIC
* 
* 
.STAR EQU * 
      CLC INTP,C    TURN I/O SYSTEM OFF 
      LIA SW        GET SELECT CODE AND OPTIONS 
      STA USSC      SAVE IT 
      AND  .77      ELIMINATE OPTIONS 
      STA ORGSC     SAVE SELECT CODE (DATA CHANNEL) 
      LDB A 
      CMB,INB       CHECK THAT SC>7 
      ADB  .7 
      SSB           ? 
      JMP *+3       OK GO ON
      HLT 73B       NO
      JMP .STAR     TRY AGAIN 
      STA SC        SETUP CURRENT SELECT CODE 
      LDB IOIP2     SETUP DATA CHANNEL I/O
      JSB SCIN,I      INSTRUCTIONS
      LDA ORGSC 
      INA           GET COMMAND CHANNEL SC
      STA SC        SETUP CURRENT SELECT CODE 
      LDB IOIP      LOAD POINTER TO IO TABLE
      JSB SCIN,I    GO SETUP I/O INSTRUCTIONS 
      JSB DMACK     CHECKS FOR DMA OPTIONS
      JSB ..TIM,I   GO SETUP TIMING CONSTANTS 
      JMP .STAR     ERROR RETURN
* 
      HLT 74B       ALLOW CHANGE IN SWITCH REGISTER 
      LDA MEMO      GET COMPUTER SIZE 
      AND MK77K     ISOLATE COMPUTER SIZE BITS
      CPA SW12      IS IT AN 8K COMPUTER? 
      RSS           YES-GO SETUP FOR 8K 
      JMP .STR1     NO-SKIP OVER
      LDA .STR2     GET FIRST WORD OF RELEASABLE CORE 
      STA FWAM      SAVE IT AS FWAM 
      LDA .STR3     GET HALT 102070 
      STA .STAR     SAVE IT FOR HALT ON ENTRY 
      LDA .STR1     GET JUMP TO 2000K INSTRUCTION 
      STA .STAR+1   SAVE IT - TO PREVENT REENTRY
.STR1 JMP BEGIN,I   GO TO START OF DIAGNOSTIC 
* 
* 
.STR2 DEF .STAR+2 
.STR3 OCT 102070
* 
* 
      HED           7970 TIMING SUBROUTINES AND TABLES
* 
* 
*                   .TIME-SETUP FOR TIMING TABLES ON BASE PAGE
*CALL:
*     JSB ..TIM,I 
*         <ERROR RETURN>
*         <NORMAL RETURN> 
* 
.TIME NOP 
      LDA USSC      LOAD OPTIONS
      ALF,ALF       MOVE 13181/183 OPTIONS TO LOW BYTE
      AND .17       MASK OFF 13183/181 BITS 
      CPA .10       IS IT 13183 WITH DMA? 
      JMP .TI11     YES-GO SET IT UP
      CPA .4        IS IT 13181?
      JMP .TI12     YES-GO SET IT UP
      CPA .12       IS IT 13183 WITHOUT DMA?
      JMP .TI13     YES-GO SET IT UP
      JMP .TI14     NONE OF THE ABOVE-ERROR EXIT
* 
.12   OCT 12        MASK CONSTANT 
* 
.TI11 EQU * 
      LDA .TI18     SETUP 13183 HEADER MESSAGE
      STA HDMP
      LDA DMAFG     IS THERE ANY DMA? 
      SZA 
      JMP .TI15     YES-CONTINUE
      HLT 71B       NO-HALT 
      JMP .TIME,I   ERROR EXIT
.TI15 EQU * 
      CCA           SETUP TAPE TYPE FLAG-13183
      STA FG183 
      LDA MSKIO     LOAD IO MASK
      ADA MSKST     ADD IN SINGLE TRACK ERROR BIT 
      STA MSKIO     SAVE MASK 
      LDA .2
      STA FGDMA     SETUP CHANNEL 2 DMA 
      LDB .TIM2     LOAD 13183 TIME TABLE POINTER 
      JMP .TI16     GO CHECK SPEED
* 
.TI12 EQU * 
      LDA .TI17     LOAD 13181 HEADER MESSAGE 
      STA HDMP
      CLA 
      STA FGDMA     CLEAR DMA FLAG
      STA FG183     SETUP TAPE TYPE FLAG-13181
      LDA MKIO      GET IO MASK 
      STA MSKIO     SAVE MASK 
      LDB .TIM1 
      JMP .TI16     SETUP 13181 TIME TABLE POINTER
MKIO  OCT 4022
* 
.TI13 EQU * 
      LDA .TI18     SETUP 13183 HEADER MESSAGE
      STA HDMP
      CLA 
      STA FGDMA     SETUP NO DMA FLAG 
      LDA .1
      STA FG183     SETUP TAPE TYPE FLAG-13183
      LDB .TIM2     SETUP 13183 TIME TABLE POINTER
      JMP .TI16     GO CHECK SPEED
* 
.TI17 DEF HDMS1     POINTER TO 13181 HEADER MESSAGE 
.TI18 DEF HDMS2     POINTER TO 13183 HEADER MESSAGE 
* 
.TI16 EQU *         BEGIN SPEED CHECK ROUTINE 
      LDA USSC      GET OPTIONS 
      ALF           MOVE TAPE SPEEDS TO LOWER BITS
      AND .17       ISOLATE TAPE SPEED BITS 
      CPA .10       IS IT 45 IPS? 
      JMP .TIM3     YES-GO LOAD TABLE 
      CPA .4        IS IT 37.5 IPS? 
      JMP .TIM4     YES-GO LOAD TABLE 
      CPA .2        IS IT 25 IPS? 
      JMP .TIM5     YES-GO LOAD TABLE 
      CPA .1        IS IT 12.5 IPS? 
      JMP .TIM6     YES - GO LOAD TABLE 
* 
.TI14 EQU *         NO-NONE OF THE ABOVE-ERROR EXIT 
      HLT 72B       ERROR HALT
      JMP .TIME,I   ERROR EXIT
* 
.TIM6 EQU *         12.5 IPS TABLE
      ADB .7        ADJUST POINTER ADDRESS
.TIM5 EQU *         25 IPS TABLE
      ADB .7        ADJUST POINTER ADDRESS
.TIM4 EQU *         37.5 IPS TABLE
      ADB .7        ADJUST POINTER ADDRESS
.TIM3 EQU *         45 IPS TABLE
*                   LOAD UP TIMING TABLE TO BASE PAGE 
      LDA TIME
      STA .TIM8     SETUP POINTER TO BASE PAGE
      LDA .M7 
      STA .TIM9     SETUP LOOP COUNTER
.TI10 EQU * 
      LDA B,I       LOAD TIMING CONSTANT
      STA .TIM8,I   TRANSFER TO BASE PAGE 
      INB           INCREMENT TABLE POINTER 
      ISZ .TIM8     INCREMENT BASE PAGE POINTER 
      ISZ .TIM9     IS THIS THE 7TH TRANSFER? 
      JMP .TI10     NO-GO DO IT AGAIN 
      ISZ .TIME     YES-ADJUST POINTER FOR RETURN 
      JMP .TIME,I   EXIT ROUTINE
* 
.M7   DEC -7        LOOP CONSTANT 
.TIM8 NOP           BASE PAGE POINTER 
.TIM9 NOP           LOOP COUNTER
* 
* 
* 
* 
* 
*  MANY OF THE TIME CONSTANTS WERE EMPIRICALLY DETERMINED 
* 
*                   TIME DELAY TABLES 
* 
*                   UNIT    TYPE    SPEED 
* 
.TIM1 DEF *+1 
      DEC 1         13181   REW         45 IPS
      DEC 8           "     WRITE        "
      DEC 10          "     CLEAR        "
      DEC 104         "     GAP          "
      DEC 14          "     IRG          "
      DEC 15          "     MIN BYTE     "
      DEC 19          "     MAX BYTE     "
* 
      DEC 1           "     REW         37.5 IPS
      DEC 10          "     WRITE        "
      DEC 12          "     CLEAR        "
      DEC 125         "     GAP          "
      DEC 16          "     IRG          "
      DEC 18          "     MIN BYTE     "
      DEC 23          "     MAX BYTE     "
* 
      DEC 2           "     REW         25.0 IPS
      DEC 14          "     WRITE        "
      DEC 18          "     CLEAR        "
      DEC 187         "     GAP          "
      DEC 24          "     IRG          "
      DEC 27          "     MIN BYTE     "
      DEC 35          "     MAX BYTE     "
* 
      DEC 3           "     REW         12.5 IPS
      DEC 29          "     WRITE        "
      DEC 35          "     CLEAR        "
      DEC 374         "     GAP          "
      DEC 48          "     IRG          "
      DEC 54          "     MIN BYTE     "
      DEC 69          "     MAX BYTE     "
* 
* 
.TIM2 DEF *+1 
      DEC 1         13183   REW         45.0 IPS
      DEC 11          "     WRITE        "
      DEC 10          "     CLEAR        "
      DEC 60          "     GAP          "
      DEC 15          "     IRG          "
      DEC 11          "     MIN BYTE     "
      DEC 15          "     MAX BYTE     "
* 
      DEC 1           "     REW         37.5 IPS
      DEC 13          "     WRITE        "
      DEC 12          "     CLEAR        "
      DEC 72          "     GAP          "
      DEC 17          "     IRG          "
      DEC 13          "     MIN BYTE     "
      DEC 18          "     MAX BYTE     "
* 
      DEC 2           "     REW         25.0 IPS
      DEC 20          "     WRITE        "
      DEC 18          "     CLEAR        "
      DEC 108         "     GAP          "
      DEC 26          "     IRG          "
      DEC 20          "     MIN BYTE     "
      DEC 27          "     MAX BYTE     "
* 
      DEC 3           "     REW         12.5 IPS
      DEC 40          "     WRITE        "
      DEC 35          "     CLEAR        "
      DEC 216         "     GAP          "
      DEC 52          "     IRG          "
      DEC 39          "     MIN BYTE     "
      DEC 54          "     MAX BYTE     "
* 
* 
FWAA  EQU *         FIRST WORD OF AVAILABLE MEMORY
      END 
                                                                                                                                      