      HED MAG TAPE DRIVERS CONFIGURATOR          [F]* *   ENTER WITH THE LOWER MAG TAPE SELECT CODE IN (B).  ALL I/O*   INSTRUCTIONS IN THE MAG TAPE DRIVER ARE MODIFIED TO *   REFERENCE THE GIVEN I/O PORT. * MTDIN NOP       STB MTSCD     SAVE SELECT CODE             [F]      LDB CON1A     GET STARTING POINTER         [F]MTDI1 LDA 1,I       GET INSTRUCTION              [F]      AND DM64      MASK OUT OLD SELECT CODE     [F]      IOR MTSCD     MERGE IN NEW SELECT CODE     [F]      STA 1,I       SAVE IT                      [F]      INB                                        [F]      CPB CON2A     FINISHED DATA CHANNEL?       [F]      ISZ MTSCD     YES, BUMP SELECT CODE        [F]      CPB CON3A     FINISHED COMMAND CHANNEL?    [F]      JMP MTDIN,I   YES                          [F]      JMP MTDI1     NO                           [F]*                                                                [F]CON1  DEF MT.3      DATA CHANNEL INSTRUCTIONS    [F]      DEF MT.9                                   [F]      DEF XT.3                                   [F]      DEF MT.43                                  [F]      DEF MT.47                                  [F]      DEF XT.43                                  [F]      DEF MT.45                                  [F]      DEF MT.49                                  [F]      DEF MT.5                                   [F]      DEF MT.50                                  [F]      DEF XT.5                                   [F]      DEF XT.50                                  [F]      DEF XT.13                                  [F]      DEF MT.2                                   [F]      DEF MT.8                                   [F]      DEF MT.42                                  [F]      DEF MT.44                                  [F]      DEF MT.46                                  [F]      DEF MT.48                                  [F]      DEF XT.2                                   [F]      DEF XT.46                                  [F]      DEF XT.9                                   [F]      DEF XT.11                                  [F]      DEF XT.12                                  [F]CON2  DEF MT.1      COMMAND CHANNEL INSTRUCTIONS [F]      DEF MT.12                                  [F]      DEF MT.21                                  [F]      DEF S.1                                    [F]      DEF XS.1                                   [F]      DEF S.2                                    [F]      DEF XS.0                                   [F]      DEF LOOP                                   [F]      DEF MT.30                                  [F]      DEF MT.51                                  [F]      DEF XLOOP                                  [F]      DEF XT.20                                  [F]      DEF MT.15                                  [F]      DEF XT.15                                  [F]      DEF XT.0                                   [F]      DEF XT.10                                  [F]      DEF XT.8                                   [F]      DEF MT.10                                  [F]      DEF MT.14                                  [F]      DEF MT.20                                  [F]      DEF MT.40                                  [F]      DEF XT.14                                  [F]      DEF XT.1                                   [F]      DEF MT.41                                  [F]      DEF XT.7                                   [F]      DEF XT.6                                   [F]      DEF O.B                                    [F]      DEF XT.4                                   [F]      DEF XT.16                                  [F]CON3  EQU *                                      [F]      HED CONSTANTS, TEMPORARIES, ETC.N5440 DEC -5440 DM255 DEC -255DM64  DEC -64 DM10  DEC -10 DM5   DEC -5DM4   DEC -4DM3   DEC -3                                     [F]DM1   DEC -1D.3   OCT 3 D.4   DEC 4 D.5   DEC 5 D.6   DEC 6 DB7   OCT 7 DB10  OCT 10DB11  OCT 11D.10  DEC 10                                     [F]*                                                                [F]DB15  OCT 15*                                                                [F]DB17  OCT 17                                     [F]DB23  OCT 23D.19  EQU DB23D.24  DEC 24DB31  OCT 31D.25  EQU DB31*                                                                [F]DB35  OCT 35DB40  OCT 40DB41  OCT 41*                                                                [F]DB100 OCT 100 DB101 OCT 101 DB105 OCT 105                                    [F]*                                                                [F]DB110 OCT 110                                    [F]DB215 OCT 215                                    [F]*                                                                [F]DB200 OCT 200 DB201 OCT 201 DB300 OCT 300 DB400 OCT 400 DB733 OCT 733 DB757 OCT 757 D5440 DEC 5440*                                                                [F]B100K OCT 100000*                                                                [F]      SKP *                                                                [F]DTMP0 BSS 1 DTMP1 BSS 1 DTMP2 BSS 1 *                                                                [F]CCNT  BSS 1         TTY CHARACTER COUNT *                                                                [F]BUFA  BSS 1         MTD BUFFER ADDRESSBUFL  BSS 1         MTD BUFFER LENGTH WCNT  BSS 1         MTD WORD COUNTCNT   BSS 1         MTD RECORD COUNTEOTF  BSS 1         END-OF-TAPE FLAGECNT  BSS 1         MTD RETRY COUNTER MTSCD BSS 1                                      [F]EBUF  BSS 2       ASC 1,, * .N    OCT 116                                    [F].Y    OCT 131                                    [F]BSPGA EQU D.5       BASE PAGE DISC ADDRESSBASPG OCT 100200    BASE PAGE CORE ADDRESSJSYS2 DEF BSYS2                                  [F]JDRTT DEF LDRTT                                  [F]JSAD2 DEF BSAD2                                  [F]JSYS3 DEF BSYS3                                  [F]JDRT1 DEF LDRTT+1                                [F]JSAD3 DEF BSAD3                                  [F]MGTCA DEF GETCR                                  [F]TT35I DEF TTY35                                  [F]DISCN DEF DISCD                                  [F]WORDN DEF WORDC                                  [F]CON1A DEF CON1,I                                 [F]CON2A DEF CON2,I                                 [F]CON3A DEF CON3,I                                 [F]COM6A DEF COM6DULTT DEF ULTTA     => USER LIRARY TRACK TABLEDULTB DEF 6000B     DUMP BUFFER ADDRESS FOR ULTTB DDIRA EQU DB100 DTRKB DEF IDTBL     DUMP TRACK BUFFER ADDRESS DTRKR ABS IDTBL+100000B  DISC READ FORM OF DTRKBDMTRL DEF MTRLT     => SYSTEM LIBRARY LENGTHS BUFFERMSTOC STA XWNEC,I   WORD TO RESTORE READ         [F]MCPAC CPA XWNEC,I   WORD READ MATCH BUFFER?      [F]*                                                                [F]* DONEA DEF DONEM ILINM DEF ILIN                                   [F]TAPMA DEF TAPMS *                                                                [F]MTLMA DEF MTLMWNEA  DEF WNE VRFYA DEF VRFY                                   [F]* DONEM OCT 6412      ASC 2,DONE      OCT 6412ILIN  OCT 5111      ASC 6,LLEGAL INPUT      OCT 6400TAPMS OCT 5124      ASC 10,APE BAD OR TOO SHORT       OCT 6412DISCF OCT 5104      ASC 7,ISC FAILURE:MTLM  OCT 5103      ASC 11,HANGE MAG TAPE TO AUTO       OCT 6400WNE   OCT 5127                                   [E]      ASC 8,RITE NOT ENABLED      OCT 6400VRFY  OCT 5126                                   [F]      ASC 4,ERIFY ?                              [F]      HED ASR35 DRIVER* *  UPON ENTRY (A) HOLDS THE NUMBER OF CHARACTERS TO BE OUTPUT OR*  IS ZERO TO REQUEST INPUT.  FOR OUTPUT REQUESTS (B) POINTS TO *  THE FIRST WORD OF THE BUFFER.  A LINE FEED, RUBOUT, NULL, OR *  X-OFF IS IGNORED BY INPUT.  ON INPUT A CARRIAGE RETURN ENDS THE*  RECORD, A _ BACKSPACES ONE CHARACTER, AND AN ESCAPE OR ALT-MODE*  DELETES THE INPUT RECORD.*       ORG 2010B                                  [F]TTY35 NOP       STA CCNTY     SET CHARACTER COUNT          [F]      SZA,RSS       OUTPUT REQUEST?       JMP TTY6      NO      BLS           YES, INITIALIZE       STB BUFAD       CHARACTER POINTER       CCA           SET FLAG      STA TFLAG       AS 'OUTPUT'       LDA B120K     SEND BITS FOR       OTA TTYSC       'PRINT ONLY'TTY1  LDA CCNTY     ALL CHARACTERS               [F]      SZA,RSS         OUTPUT?       JMP TTY35,I   YES       ADA NM1       NO, CORRECT                  [F]      STA CCNTY       CHARACTER COUNT            [F]      LDB BUFAD     COMPUTE       ISZ BUFAD       WORD-CHARACTER      CLE,ERB           ADDRESS       LDA 1,I       LOAD WORD       SEZ,RSS       POSITION      ALF,ALF         CHARACTER       AND DB177     EXTRACT CHARACTER       IOR NB200     ADD IN BIT 7                 [F]      OTA TTYSC     OUTPUT IT TTY2  STC TTYSC,C   REQUEST CHARACTER TRANSFER      SFS TTYSC     WAIT FOR      JMP *-1         COMPLETION FLAG       LDA TFLAG       SZA           OUTPUT?       JMP TTY1      YES       LIA TTYSC     NO, EXTRACT       AND DB177       CHARACTER       CPA DB12      LINE FEED?      JMP TTY2      YES       CPA DB177     NO, RUBOUT?       JMP TTY2      YES       SZA           NO, NULL      CPA NB23        OR X-OFF?                  [F]      JMP TTY2      YES       CPA BKSPC     NO, '_' ?       JMP TTY4      YES       CCB           NO      CPA DB33      EXIT ON       JMP TTY5        VARIOUS       CPA ALTMD         FORMS OF      JMP TTY5            ESCAPE      CPA DB176             OR      JMP TTY5                ALT MODE      STA TTYTM     SAVE CHARACTER      LDB CCNTY     BACKSPACE                    [F]      CPB D.72        IF BUFFER       JSB BKSP          IS FULL       LDB BUFAD     COMPUTE       ISZ BUFAD       NEXT BUFFER       CLE,ERB           ADDRESS       SEZ,RSS       POSITION      ALF,SLA,ALF     AND FORM      IOR 1,I           BUFFER WORD       STA 1,I       STORE AND       ISZ CCNTY       COUNT CHARACTER            [F]      LDA TTYTM     WAS IT A      CPA NB15        CARRIAGE RETURN?           [F]      JMP TTY35,I   YES       JMP TTY2      NOTTY4  JSB BKSP      BACKSPACE       JMP TTY2TTY5  STB TFLAG     SET TO OUTPUT MODE      ADB TTY35     SET RETURN      STB TTY35       TO INPUT CALL       LDA N.3       OUTPUT '\' AND               [F]      LDB RVRSA       CARRIAGE RETURN -       JMP TTY35+1       LINE FEED TTY6  LDB IBUFA     SET UP INPUT      STB BADRA,I     BUFFER      STB BUFAD         POINTERS      STA TFLAG     SET TO INPUT MODE       LDA B160K     SEND INPUT BITS       JMP TTY2-1      TO ASR 35       SPC 2 *                             * **  BACKSPACE ONE CHARACTER  ** *                             * BKSP  NOP       LDB CCNTY     DECREMENT                    [F]      SZB,RSS         CHARACTER       JMP BKSP,I        COUNT       ADB NM1             IF                     [F]      STB CCNTY             NON-ZERO             [F]      CCB           BACKSPACE       ADB BUFAD       CHARACTER       STB BUFAD         ADDRESS       CLE,ERB       INSURE      LDA 1,I         NEXT CHARACTER      AND HIMSK         WILL NOT BE       STA 1,I             GARBLED       LDA TTYTM     RETRIEVE CHARACTER FOR CALLS      JMP BKSP,I      FROM BUFFER OVERFLOW      HED DISC DRIVER * *  UPON ENTRY (A) HOLDS THE DISC ADDRESS (BITS 15-14 DETERMINE*  THE DISC REFERENCED) AND (B) HOLDS THE CORE ADDRESS.  BIT 15 *  OF (B) IS 1 FOR A TRANSFER TO CORE, 0 FOR A TRANSFER TO DISC.*  IT IS ASSUMED THAT WORDC HOLDS THE NEGATIVE TRANSFER LENGTH*  IN WORDS.* DISCD NOP       STA DADDR     SAVE DISC AND       STB CORE        CORE ADDRESSES      LDA WORDC     EXIT ON       SZA,RSS         WORD COUNT      JMP DISCD,I       OF ZERO       SSB,RSS       ROUND UP      AND NM64        TO FULL SECTOR             [F]      STA WORDC         ON WRITE      LDA DADDR     LOAD      RAL,RAL         DISC      AND N.3           SELECT                   [F]      STA DISC#           CODE      ADA DSTBL              WORD       LDA 0,I       STA FAIL      SAVE IT       AND DB77      EXTRACT SELECT CODE       LDB 0         COPY INTO (B)       ADA DCHN      OUTPUT DMA/DISC       OTA DMA         LINKAGE CONTROL WORD      XOR DSTC      COMPUTE       STA DISC3       INA             AND       XOR NB200                                  [F]      STA DISC1         STORE       STA DISC4       STA DISC5           I/O       ADA NB100                                  [F]      STA DISC2             COMMANDS      LDB CORE      SET B[0]      CMB             TO PROPER       RBL               DIRECTION BIT       LDA FAIL      SET B[2:0]      ALF,ALF         TO PROPER       LSL 2             ADDRESS PREFIX      LDA DADDR     EXTRACT       RAL,RAL         TRACK       LSL 6             NUMBER      RAL           REMOVE BIT 7      LSR 9         SHIFT HARDWARE ADDRESS INTO (A)       STA DADDR       LDB NM10      SET RETRY                    [F]      STB FAIL        COUNTER DISC1 LIA 0         WAIT FOR      SLA             DISC CONTROLLER       JMP DISC1         FREE AND      ALF,ALF             DISC      SSA,RSS               UP TO       JMP DISC1               SPEED       LDA DADDR     OUTPUTDISC2 OTA 0           DISC ADDRESS      CLC MAR       OUTPUT      LDA CORE        CORE      OTA MAR           ADDRESS       STC MAR       OUTPUT      LDA WORDC       TRANSFER      OTA MAR           LENGTH      STC DMA,C     INITIATEDISC3 STC 0           TRANSFER      SFS DMA       WAIT FOR      JMP *-1         COMPLETION FLAG DISC4 LIA 0         ABORT       AND NB10        BIT                        [F]      SZA               SET?      JMP DISC6     YES       LDA CORE      NO      SSA,RSS       READ?       JMP DISC7     NODISC5 LIA 0         YES       AND DB32      FAULTY      SZA,RSS         TRANSFER?       JMP DISC7     NODISC6 ISZ FAIL      YES, TRY AGAIN?       JMP DISC1     YES       LDA D.16      NO, PRINT       LDB DISFA       'DISC       JSB TTY35         FAILURE'      LDA DISC#     STORE       ADA DB60        DISC NUMBER       ALF,ALF           AND '/'       ADA SLASH           IN      STA EBFDA,I           BUFFER               [F]      CLB           COMPUTE       LDA DADDR       ALF,ALF         ASCII       RAL                                        [F]      AND DB77      DIV DB12          FOR       ADB DB60      SZA,RSS             TRACK       JMP *+3       ADA DB60              NUMBER      ALF,ALF       IOR 1       STA EB1DA,I   STORE IT                     [F]      LDA N.6       PRINT                        [F]      LDA N.6       PRINT                        [F]      LDB EBFDA       'X/XX, '      JSB TTY35       JMP ERRIA,I   TERMINATE LOAD/DUMP DISC7 CLC DMA,C     CLEAN UP      JMP DISCD,I       HED CONSTANTS, TEMPORARIES, ETC.           [F]NM64  DEC -64                                    [F]NM10  DEC -10                                    [F]NM1   DEC -1                                     [F]N.3   DEC 3                                      [F]N.6   DEC 6                                      [F]NB10  OCT 10                                     [F]DB12  OCT 12NB15  OCT 15                                     [F]D.16  DEC 16NB23  OCT 23                                     [F]DB32  OCT 32DB33  OCT 33DB60  OCT 60DB77  OCT 77NB100 OCT 100                                    [F]D.72  DEC 72DB176 OCT 176 DB177 OCT 177 NB200 OCT 200                                    [F]SLASH OCT 57        '/' BKSPC OCT 137       '_' ALTMD OCT 175 DCHN  OCT 20000 B120K OCT 120000    'PRINT ONLY' TTY CONTROL BITS DSTC  OCT 122700B160K OCT 160000    'INPUT' TTY CONTROL BITSHIMSK OCT 177400TTYSC EQU 11B       ASR35 SELECT CODE RVRSL OCT 56015,5000 '\ CR LF' FOR LINE DELETIONCCNTY BSS 1                                      [F]INBUF BSS 36        TTY INPUT BUFFERBUFAD BSS 1         TTY CHARACTER ADDRESS TFLAG BSS 1         TTY I/O MODETTYTM BSS 1         TTY TEMPORARY CORE  BSS 1         CORE ADDRESS FOR DISC DADDR BSS 1         DISC ADDRESSWORDC BSS 1         BLOCK WORD COUNT FOR DISC DISC# BSS 1         DISC NUMBER FAIL  BSS 1         DISC RETRY COUNTERIBUFA ABS INBUF+INBUF RVRSA DEF RVRSL BADRA DEF BADDR     ADDRESS OF CHARACTER POINTERDSTBL DEF DTBL      DISC SELECT CODE TABLE ADDRESSERRIA DEF ERRIN     ADDRESS OF ABORT MESSAGE CODE EBFDA DEF EBUF      ADDRESS OF ERROR BUFFER EB1DA DEF EBUF+1                                 [F]DISFA DEF DISCF       HED POST-SLEEP DISC LOADER* *  HLT 2 IF A SYSTEM READ IS BAD.  PRESS 'RUN' TO RETRY SYSTEM*  LOADING. * BSLDR CLC 0,C       LDA BLINK     OUTPUT DMA/DISC       OTA DMA         LINKAGE       LDA BSYS1     OUTPUT      STC WCR         FIRST SEGMENT       OTA WCR           WORD COUNT      LDB BSAD1     FIRST CORE ADDRESS      LDA BDAD      ESTABLISH       OTA BDISC+1     DISC ADDRESS      CLC MAR       ESTABLISH       OTB MAR         CORE ADDRESS      STC DMA,C     INITIATE DMA      STC BDISC     START TRANSFER      SFS DMA       WAIT FOR      JMP *-1         END OF TRANSFER       LIA BDISC+1   TRANSFER      AND BSL32       SZA,RSS         OK?       JMP *+3       YES       HLT 2         NO      JMP BSLDR     TRY AGAIN ON 'RUN'      LDA BSYS2     READ      STA WORDC       LDA LDRTT       SECOND      LDB BSAD2       JSB DISCD     SEGMENT       LDA BSYS3     READ      STA WORDC       LDA LDRTT+1     THIRD       LDB BSAD3       JSB DISCD         SEGMENT       CLC 0,C       GET DATE      JMP DATEP,I     AND TIME* BLINK ABS 20000B+BDISCBSYS1 ABS -12000B        SEGMENTBSYS2 ABS 14000B-26500B    WORD BSYS3 ABS 26500B-37300B      COUNTS BDAD  OCT 3              SEGMENTLDRTT OCT 0,0              DISC ADDRESSES BSAD1 OCT 100000    SEGMENT BSAD2 OCT 114000      COREBSAD3 OCT 126500        ADDRESSES DATEP DEF LDR59     ENTRY POINT TO DATE-TIME CODE BSL32 OCT 32* DMA   EQU 7              DMA CHANNELBDISC EQU 14B            DISC SELECT CODE (LOWER) MAR   EQU 3              MEMORY ADDRESS REGISTERWCR   EQU 3              WORD COUNT REGISTER      HED 'DISC LOADER' LOADER* *  THE FOLLOWING IS THE FORMAT FOR THE PORTION OF THE *  BOOTSTRAP LOADER TO BE SET IN 0,0.  THIS SECTION OF THE*  BOOTSTRAP IS LOADED INTO 2 TO 77B BY THE PROTECTED BINARY*  LOADER.  WHEN IT IS READ COMPLETELY INTO CORE IT CHECKS FOR*  READ PARITY ERRORS DURING ITS INPUT.  FOLLOWING THIS, A HALT *  INSTRUCTION PERMITS THE OPERATOR TO PROTECT THE BASIC*  BINARY LOADER AND SET SWITCH 0 OF THE SWITCH REGISTER*  TO 0 (EITHER REAL TIME EXECUTIVE OR TIME-SHARED BASIC) *  OR 1 (DISC MONITOR SYSTEM).  PRESSING 'RUN' READS THE*  SELECTED SYSTEM LOADER FROM 0,1 OR 0,2 RESPECTIVELY.  THIS *  PORTION OF THE BOOTSTRAP OPERATION WILL THEN LOAD INTO *  CORE THE SELECTED SYSTEM AND TRANSFER CONTROL TO IT. * BSBSO EQU 0       ORG BSBSO     ASSEMBLY ORIGIN * RLOAD OCT 0,0       DON'T USE (A) AND (B) RT/TS OCT 0         REAL TIME EXEC/TIME-SHARED BASICDMS   OCT 0         DISC MONITOR SYSTEM       HLT 4,C       IN CASE OF POWER FAIL * BSLD0 STA BSLD2-BSBSO+1  CHANGE IRRECOVERABLE HLT 0       ISZ BSLD2-BSBSO      INTO RECOVERABLE HLT 1       HLT 77B       PROTECT BBL, SET SWR FOR SYSTEM       LDA LINKG-BSBSO    SET UP DISC/DMA      OTA 6                LINKAGE* BSLD1 LIA 1         SELECT SYSTEM LOADER      CLB,INB         FROM SWITCH REGISTER:       SLA               SWR = 0 IMPLIES SECTOR 1      INB               SWR = 1 IMPLIES SECTOR 2DSK7  OTB 0         OUTPUT DISC ADDRESS       CCE,INB       SAVE      LDA 1,I         CHOSEN LOADER'S       STA CORAD-BSBSO   ENTRY POINT       RAL,ERA       OUTPUT 'READ' FORM      CLC 2           OF LOADER'S       OTA 2             CORE ADDRESS      LDA .N64-BSBSO     OUTPUT       STC 2                TRANSFER       OTA 2                  LENGTH       STC 6,C       START DMA DSK8  STC 0         START DISC TRANSFER       JSB TSTAT-BSBSO    VALIDATE READ      JMP CORAD-BSBSO,I  TRANSFER TO SYSTEM LOADER* TSTAT DEF BSLD0-BSBSO    (INITIAL EXIT) DSK9  LIA 0         WAIT FOR      SLA             TRANSFER      JMP *-BSBSO-2     COMPLETION      AND BSB32-BSBSO    TRANSFER       SZA,RSS              OK?      JMP TSTAT-BSBSO,I  YESBSLD2 HLT 0              NO (HLT 1, NOP AFTER CHECK       JMP *-BSBSO-1        ON BOOTSTRAP ITSELF)       JMP BSLD1-BSBSO    RETRY LOAD * CORAD OCT 0         SYSTEM LOADER ENTRY ADDRESS LINKG OCT 20000     DISC/DMA LINKAGE TEMPLATE BSB32 OCT 32        TRANSFER VALIDATION MASK.N64  DEC -64 *       ORG BSBSO+77B       JMP DSK9-BSBSO     TEST BOOTSTRAP LOAD      END 