
    DK2P
001  FRAME 452] FRM: 452\0001 7FF001C4] ORG 1\0001
002 *USER*KERMIT
003 *11 MAR 1987
004 *2.0
005 *11 MAR 1987
006 *JF3
007 *For PICK on PC/XT
008 DEV-ADDR DEFN 2 2610 address.\    N 2 1
009 ST AR 7 Status reg.
010 STATUS DEFH ST,0 Status byte.\    H 0 7
011 CMPSTAT DEFT ST,0 Complete - both bytes\    T 0 7
012 TAS DEFB ST,0 Test alternate status.\    B 0 7
013 PE DEFB ST,2 Parity error.\    B 2 7
014 FE DEFB ST,3 Framing error.\    B 3 7
015 OE DEFB ST,4 Overrun error.\    B 4 7
016 OUT-RDY DEFB ST,5 Output ready.\    B 5 7
017 INP-RDY DEFB ST,6 Input ready.\    B 6 7
018 NCCIO DEFB ST,7 Not concurrent i/o.\    B 7 7
019 ALT-STAT DEFH ST,1 Alternate status.\    H 1 7
020 DSR DEFB ST,13 Data Set Ready.\    B D 7
021 ALT-FUNC DEFC ST,3 Alternate function.\    C 3 7
022 RTS DEFB ST,30 Request To Send.\    B 1E 7
023 MASK-STAT DEFH ST,2 Masked status HTLY.\    H 2 7
024 MASK DEFH ST,4 Status mask.\    H 4 7
025 OK DEFH ST,5 Status test condx.\    H 5 7
026 MASK-OK DEFT ST,2 Above two combined.\    T 2 7
027 PERIOD DEFH 0,38 Timeout seconds.\    H 26 0
028 CT AR 9 Control Table reg.
029 CTSAVE EQU AFEND A safe place?
030 LASTIM EQU D9 Timer reset refer.
031 NOPRMPT DEFC TS,1\    C 1 D
032  B XCHNP 01F2 Exchange packets.] B: XCHNP\0001 1E04
033  B SENDP 11F2 Send a packet thru i/f.] B: SENDP\0003 1E50
034 XCHNP EQU *\0005
035  MOV TSBEG,TS Init reg. and\0005 E06EED
036  INC TS inc to MARK char.\0008 3D
037  MCC TS,SC2 Move MARKER char.\0009 D0050D
038  SRA R15,PRMPC EOL in there.\000C E0023F
039  MCC R15,TS Get prompt (EOL).\000F 6DF9
040  BBS MBIT,MODEM Brif 2610 i/o.\0011 908C0451
041  MCAL TS,5,11 Lock buffer frame.\0015 4D05AB
042  BCE NOPRMPT,C'1',Find-MARK Brif first packet.] SRA R15,NOPRMPT\0018 ED013F]
     BCERNL R15,C'1',Find-MARK] BC: R15,C'1',Find-MARK,5\001B 4F310A20
043  WRITE TS Send EOL as prompt.\001F 6DDD
044 Find-MARK READ TS Get next char.] READ: TS\0021 6DD5] BCL TS,X'20',=L002] BC
    : TS,X'20',=L002,3\0023 4D20062C] BBS NOECHO,=L002\0027 90FC042C] WRITE TS\0
    02B 6DDD]=L002 EQUX *
045  BCU TS,SC2,Find-MARK No MARKER yet.] BC: TS,SC2,Find-MARK,2\002D B005D420
046 Next-char INC TS To next position.\0031 3D
047  READ TS Get next char.] READ: TS\0032 6DD5] BCL TS,X'20',=L003] BC: TS,X'20
    ',=L003,3\0034 4D20063D] BBS NOECHO,=L003\0038 90FC043D] WRITE TS\003C 6DDD]
    =L003 EQUX *
048  BCU TS,PRMPC,Next-char Brif not end.] BC: TS,PRMPC,Next-char,2\003E B002D43
    0
049  MCAL TS,6,11 Unlock buffer.\0042 4D06AB
050  MCI SM,TS Terminate for CONV I/F.\0045 4DFF40
051  BSL STR-PAR Strip 8th bit.\0048 1852
052  DEC TS For return I/F.\004A 2D
053  MOV TS,TSEND I/F Requirement.\004B E071DD
054  ENT 1,CONV CONV Return.\004E 10105A
055 * * * * *Send a packet thru i/f only.* * * * *
056 SENDP EQU *\0051
057  RTN * To DATA/BASIC.\0051 14
058 * * * * * Modem i/f. * * * * *
059 MODEM EQU *\0052
060  RTN *\0052 14
061 * * * * * Strip parity * * * * *
062 STR-PAR EQU *\0053
063  MOV TSBEG,TS Init reg.\0053 E06EED
064 AGN? INC TS To next char.\0056 3D
065  BCE TS,SM,RTN All done.] BC: TS,SM,RTN,5\0057 4DFF0A5F
066  AND TS,X'7F' 8th bit = 0.\005B 4D7F70
067  B AGN? Loop.] B: AGN?\005E 1E55
068 * * * * * end new stuff * * * * *
069 RTN RTN * General return.\0060 14
070  END
071  B SEND-CHAR ADDRESSED BY CS REG.] B: SEND-CHAR\0061 1F4F
072  B READ-REC 2 PROMPT AND INPUT BLOCK (CONCURRENT)] B: READ-REC\0063 1E75
073 * * * * *GET STATUS OF 2610 I/F BOARD IN STATUS BYTES* * * * *
074 *
075 *ENTRY: R7 POINTS TO PRIMARY STATUS BYTE LOCATION
076 *EXIT:  ALT-STAT ZEROED IF TEST ALTERNATE STATUS BIT = 0
077 *
078 I/F-STAT EQU *\0065
079  IOI ST,1,DEV-ADDR Input 2610 status.\0065 472078
080  BBS TAS,TST-ALT Brif test alt. flagged\0068 9700046F
081  ZERO ALT-STAT else set alt.=X'00'\006C A70100
082  RTN * and return.\006F 14
083 TST-ALT INC ST To alternate byte.\0070 37
084  IOI ST,7,DEV-ADDR Input alt. status.\0071 47E078
085  DEC ST Back to proper position\0074 27
086   RTN * and return to caller.\0075 14
087 * * * * *
088 *ENTRY: OB POINTS TO RX# ADDR CHAR
089 *EXIT:   SBIT SET MEANS ERROR CONDITION IN STATUS BYTE(S)
090 *
091 IBENDDSP DEFT 0,231\    T E7 0
092 READ-REC EQU *\0076
093  BSL READY? CK OK.\0076 1958
094  BBS SBIT,SERR BRIF CANT CLEAR IT.\0078 909204B5
095  MOV OB,CS POINT TO ADDR CHAR TO\007C 16BC
096  BSL SEND-CHAR SEND OUT.\007E 194F
097  BBS SBIT,SERR BRIF SOMETHING WRONG.\0080 909204B5
098  IOO IB,2,DEV-ADDR START A CONCUR. INPUT.\0084 4A5078
099  MOV R1,CS POINT TO PROMPT.\0087 161C
100  BSL SEND-CHAR TO MICROMUX.\0089 194F
101  SRA R15,ALT-FUNC RAISE THE\008B E7033F
102  OR R15,X'02' RTS LINE TO\008E 4F0210
103  IOO R15,7,DEV-ADDR THE MICROMUX..\0091 4FF078
104  MOV X'0101',MASK-OK MASK NOT CCIO.] MOV =TX'0101',MASK-OK\0094 F70241CE
105  MOV 5,PERIOD SET 5 SECOND TIMER AND] MOV =T5,PERIOD] LOADT =T5\0098 A1D558]
     STOREH PERIOD\009B A02619
106  BSL RDY-TIMER WAIT TILL DONE.\009E 18F2
107  SRA R15,ALT-FUNC TURN OFF\00A0 E7033F
108  AND R15,X'FD' THE RTS LINE\00A3 4FFD70
109  IOO R15,7,DEV-ADDR FOR GOOD MEASURE.\00A6 4FF078
110  BBZ SBIT,READ-DONE BRIF FINISHED.\00A9 90920AC4
111  IOO R15,4,DEV-ADDR DISCONNECT.\00AD 4F9078
112  MOV X'0101',MASK-OK NOT CONC. SET.] MOV =TX'0101',MASK-OK\00B0 F70241CE
113  BSL TIMER3 WAIT FOR DISCONNECT INTERUPT.\00B4 18EC
114 SERR EQU * OUTPUT STATUS ERROR MSG.\00B6
115  LOAD 1 STATUS ERR MSG #.] LOAD =T1\00B6 A1D258
116  BSL EMSGA SETUP MSG ID.\00B9 1944
117  MBXN 4,CMPSTAT,TS STATUS PARAMETER.] LOAD =TX'80'+4\00BB A1D758] MBX CMPSTA
    T,TS\00BE D7007D
118  BSL EMSGZ COMPLETE MSG BODY & PRINT.\00C1 1945
119  B FAULT BACK TO CALLER.] B: FAULT\00C3 1ED6
120 READ-DONE EQU * DATA READ COMPLETE.\00C5
121  MOV IBBEG,IB RESTORE IB.\00C5 E0E4EA
122  MOV IBBEG,IBEND POINT IBEND TO\00C8 F0E7C0E4
123  MOV 511,IBENDDSP END OF FRAME.] MOV =T511,IBENDDSP\00CC F0E741D3
124 CRLOOP SCD IB,X'86' SCAN TO CR OR NUL.\00D0 6A0886
125  BCE IB,CR,CR1 BRIF CARRIAGE RETURN.] BC: IB,CR,CR1,5\00D3 4A0D0ADA
126 FAULT SB FBIT FLAG FAULT.\00D7 8085
127  B REC-DONE1 NO REC READ.] B: REC-DONE1\00D9 1EE5
128 CR1 BE IB,IBEND,REC-DONE BRIF END OF REC.] BR: IB,IBEND,REC-DONE,5\00DB C0E7
    AAE3
129  MCC AM,IB OVERWRITE CR WITH AM\00DF 4AFE20
130  B CRLOOP AND CONTINUE.] B: CRLOOP\00E2 1ECF
131 REC-DONE ZB FBIT NO FAULT.\00E4 7085
132 REC-DONE1 MCC SM,IBEND TERMINATE FOR UPDITM.] MOVSR IBEND,R15\00E6 E0E7EF] M
    CCNR SM,R15\00E9 4FFF20
133  RTN * TO CALLER.\00EC 14
134 * * * * *GET STATUS, MASK AND CHECK FOR READY WITH TIMER* * * * *
135 TIMER3 MOV 3,PERIOD SECONDS TO TIMEOUT.] MOV =T3,PERIOD] LOADT =T3\00ED A1D4
    58] STOREH PERIOD\00F0 A02619
136 RDY-TIMER TIME * GET CURRENT TIME IN D0.\00F3 4000AA
137  ADD PERIOD FOR TOTAL TIMING PERIOD.\00F6 A02613
138  STORE D2 FOR CHECKING LATER.\00F9 A01899
139 SLOOP BSL I/F-STAT INPUT STATUS BYTE(S).\00FC 1864
140  MOV X'004F00E0',D1 SET UP] MOV =DX'004F00E0',D1\00FE F00481D0
141  MOV MASK,H5 AN 'AND' INSTR. IN\0102 F00A0704
142  LOAD R0FID D1 TO MASK STATUS.\0106 A08298
143  MCC X'14',R0;C12 SETUP A 'RTN' INSTR.] SRARC R15,R0;C12\0109 E00C3F] MCCNR
    X'14',R15\010C 4F1420
144  SRA R15,H1 SET ENTRY POINT\010F E00E3F
145  AND R15,X'0F' IN UPPER HALF\0112 4F0F70
146  OR R15,X'40' OF H1 AS 4.\0115 4F4010
147  SRA R15,MASK-STAT MOVE THE LAST\0118 E7023F
148  MCC ST,R15 STATUS TO BUFFER.\011B 6F79
149  BSLI * MASK IT.\011D 13
150  BU MASK-STAT,OK,STIM BRIF DESIRED STATUS NOT UP.] BT: MASK-STAT,OK,STIM,2\0
    11E F7021705\0122 5527
151  ZB SBIT CLEAR STATUS CHK FLG.\0124 7092
152  B TIMER-RTN ALL OK] B: TIMER-RTN\0126 1F43
153 STIM RQM * PAUSE.\0128 4000A9
154  TIME * GET CURRENT TIME INTO D0\012B 4000AA
155  BLE LASTIM,D0,CTIM CLOCK NOT RESET.] BT: LASTIM,D0,CTIM,4\012E F2399006\013
    2 593B
156  MOV CT,CTSAVE SAVE CT REG.\0134 E0DBD9
157  MOV CTSAVE,CT RESTORE REG.\0137 E0DBE9
158  B RDY-TIMER NOW TRY IT AGAIN.] B: RDY-TIMER\013A 1EF2
159 CTIM BL D0,D2,SLOOP BRIF NOT YET TIMED OUT] BT: D0,D2,SLOOP,6\013C F0069018\
    0140 5CFB
160  SB SBIT FLAG BAD STATUS\0142 8092
161 TIMER-RTN RTN * TO CALLER\0144 14
162 * * * * *STATUS ERROR PROCESSING* * * * *
163 EMSGA EQU * SETUP ERROR MSG ID.\0145
164  RTN * TO CALLER.\0145 14
165 * * * * *TERMINATE ERROR MSG BODY AND PRINT* * * * *
166 EMSGZ MCI SM,TS TERMINATOR.\0146 4DFF40
167  MOV TSBEG,TS FOR PRTERR I/F\0149 E06EED
168  BSL PRTERR PRINT MESSAGE.\014C 11000C
169  RTN * TO CALLER.\014F 14
170 * * * * *SEND SINGLE CHAR OUT TO 2610 BOARD* * * * *
171 SEND-CHAR EQU *\0150
172  IOO CS,0,DEV-ADDR START DATA OUT.\0150 4C1078
173  MOV X'0404',MASK-OK OUTPUT READY] MOV =TX'0404',MASK-OK\0153 F70241D6
174  B TIMER3 WAIT TILL FINISH.] B: TIMER3\0157 1EEC
175 * * * * *CHECK STATUS FOR READY TO SEND* * * * *
176 READY? EQU *\0159
177  BSL I/F-STAT Get status of i/f.\0159 1864
178  BBZ TAS,RR1 Brif alt. status OK.\015B 97000B68
179  MOV X'8000',MASK-OK Alt. status clear.] MOV =TX'8000',MASK-OK\015F F70241CF

180  BSL TIMER3 Check if ready.\0163 18EC
181  BBS SBIT,RR9 Brif it won't come ready.\0165 90920597
182 RR1 BBS OUT-RDY,RR2 Brif OK for output.\0169 97050576
183  MOV X'0404',MASK-OK Output ready set.] MOV =TX'0404',MASK-OK\016D F70241D6
184  BSL TIMER3 Check if ready.\0171 18EC
185  BBS SBIT,RR9 Brif it won't come ready.\0173 90920597
186 RR2 BBS NCCIO,RR3 Brif not concurrent.\0177 97070587
187  IOO R15,4,DEV-ADDR Disconnect.\017B 4F9078
188  MOV X'0101',MASK-OK Not concurrent set.] MOV =TX'0101',MASK-OK\017E F70241C
    E
189  BSL TIMER3 Check and loop.\0182 18EC
190  BBS SBIT,RR9 Brif it won't clear CCIO.\0184 90920597
191 RR3 BBZ INP-RDY,RR9 Brif no input waiting.\0188 97060B97
192  SRA R15,MASK Point to scratch area.\018C E7043F
193  IOI R15,0,DEV-ADDR Dummy character read to\018F 4F0078
194  MOV X'0200',MASK-OK clear input flag.] MOV =TX'0200',MASK-OK\0192 F70241CD
195  BSL TIMER3 Check it out.\0196 18EC
196 RR9 RTN * It's ready.\0198 14
197  END]=TX'0200' :T X'0200'\0199 00\019A 0200]=TX'0101' :T X'0101'\019C 0101]=
    TX'8000' :T X'8000'\019E 8000]=DX'004F00E0' :D X'004F00E0'\01A0 004F00E0]=T1
     :T 1\01A4 0001]=T511 :T 511\01A6 01FF]=T3 :T 3\01A8 0003]=T5 :T 5\01AA 0005
    ]=TX'0404' :T X'0404'\01AC 0404]=TX'80'+4 :T X'80'+4\01AE 0084

    XDK2X
001 =INT(s/64);L=L+1 REPEAT
002 CASE CHKT=3;*Insert assembly call here
003 END CASE
004 9 RETURN;END
005 (c,1,0);check=c:check
006   UNTIL L=2 DO stus byte.
007 CMPSTAT DEFT ST,0 Complete - both bytes
008 TAS DEFB ST,0 Test alternate status.
009 PE DEFB ST,2 Parity error.
010 FE DEFB ST,3 Framing error.
011 OE DEFB ST,4 Overrun error.
012 OUT-RDY DEFB ST,5 Output ready.
013 INP-RDY DEFB ST,6 Input ready.
014 NCCIO DEFB ST,7 Not concurrent i/o.
015 ALT-STAT DEFH ST,1 Alternate status.
016 DSR DEFB ST,13 Data Set Ready.
017 ALT-FUNC DEFC ST,3 Alternate function.
018 RTS DEFB ST,30 Request To Send.
019 MASK-STAT DEFH ST,2 Masked status HTLY.
020 MASK DEFH ST,4 Status mask.
021 OK DEFH ST,5 Status test condx.
022 MASK-OK DEFT ST,2 Above two combined.
023 PERIOD DEFH 0,38 Timeout seconds.
024 CT AR 9 Control Table reg.
025 CTSAVE EQU AFEND A safe place?
026 LASTIM EQU D9 Timer reset refer.
027 EOL EQU PRMPC
028  B XCHNP 01F2 Exchange packets.
029  B SENDP 11F2 Send a packet thru i/f.
030 XCHNP EQU *
031  MOV TSBEG,TS Init reg. and
032  INC TS inc to MARK char.
033  MCC TS,SC2 Move MARKER char.
034  SRA R15,PRMPC EOL in there.
035  BBS MBIT,MODEM Brif 2610 i/o.
036  MCC R15,TS Get prompt (EOL).
037  MCAL TS,5,11 Lock buffer frame.
038  WRITE TS Send EOL as prompt.
039 Find-MARK READ TS Get next char.
040  BCU TS,SC2,Find-MARK No MARKER yet.
041 Next-char INC TS To next position.
042  READ TS Get next char.
043  BCU TS,PRMPC,Next-char Brif not end.
044  MCAL TS,6,11 Unlock buffer.
045  MCI SM,TS Terminate for CONV I/F.
046  BSL STR-PAR Strip 8th bit.
047  DEC TS For return I/F.
048  MOV TS,TSEND I/F Requirement.
049  ENT 1,CONV CONV Return.
050 * * * * *Send a packet thru i/f only.* * * * *
051 SENDP EQU *
052  RTN * To DATA/BASIC.
053 * * * * * Strip parity * * * * *
054 STR-PAR EQU *
055  MOV TSBEG,TS Init reg.
056 AGN? INC TS To next char.
057  BCE TS,SM,RTN All done.
058  AND TS,X'7F' 8th bit = 0.
059  B AGN? Loop.
060 RTN RTN * General return.
061 * * * * *GET STATUS OF 2610 I/F BOARD IN STATUS BYTES* * * * *
062 *
063 *ENTRY: R7 POINTS TO PRIMARY STATUS BYTE LOCATION
064 *EXIT:  ALT-STAT ZEROED IF TEST ALTERNATE STATUS BIT = 0
065 *
066 I/F-STAT EQU *
067  IOI ST,1,DEV-ADDR Input 2610 status.
068  BBS TAS,TST-ALT Brif test alt. flagged
069  ZERO ALT-STAT else set alt.=X'00'
070  RTN * and return.
071 TST-ALT INC ST To alternate byte.
072  IOI ST,7,DEV-ADDR Input alt. status.
073  DEC ST Back to proper position
074   RTN * and return to caller.
075 * * * * *
076 *ENTRY: OB POINTS TO RX# ADDR CHAR
077 *EXIT:   SBIT set means error condx in status byte(s).
078 *
079 IBENDDSP DEFT 0,231
080 MODEM EQU * Talk to 2610 board.
081  BSL READY? Check for all OK.
082  BBS SBIT,SERR Brif can't clear it.
083  IOO IB,2,DEV-ADDR Start a concurrent input.
084  SRA R15,EOL Point your register.
085  IOO R15,0,DEV-ADDR Fire!
086  MOV X'0404',MASK-OK OUTPUT READY
087  B TIMER3 WAIT TILL FINISH.
088  MOV X'0101',MASK-OK MASK NOT CCIO.
089  MOV 5,PERIOD SET 5 SECOND TIMER AND
090  BSL RDY-TIMER WAIT TILL DONE.
091  BBZ SBIT,READ-DONE BRIF FINISHED.
092  IOO R15,4,DEV-ADDR DISCONNECT.
093  MOV X'0101',MASK-OK NOT CONC. SET.
094  BSL TIMER3 WAIT FOR DISCONNECT INTERUPT.
095 SERR EQU * OUTPUT STATUS ERROR MSG.
096  LOAD 1 STATUS ERR MSG #.
097  BSL EMSGA SETUP MSG ID.
098  MBXN 4,CMPSTAT,TS STATUS PARAMETER.
099  BSL EMSGZ COMPLETE MSG BODY & PRINT.
100  B FAULT BACK TO CALLER.
101 READ-DONE EQU * DATA READ COMPLETE.
102  MOV IBBEG,IB RESTORE IB.
103  MOV IBBEG,IBEND POINT IBEND TO
104  MOV 511,IBENDDSP END OF FRAME.
105 EOL-LOOP SCD IB,X'86' Scan to EOL or NUL.
106  BCE IB,EOL,EOL1 Brif EOL character.
107 FAULT SB FBIT Flag an uh-oh.
108  B PKT-DONE1 No good packet.
109 EOL1 BE IB,IBEND,REC-DONE BRIF END OF REC.
110  MCI SM,IB OVERWRITE CR WITH AM
111  B EOL-LOOP and continue.
112 REC-DONE ZB FBIT NO FAULT.
113 REC-DONE1 MCC SM,IBEND TERMINATE FOR UPDITM.
114  RTN * TO CALLER.
115 * * * * *GET STATUS, MASK AND CHECK FOR READY WITH TIMER* * * * *
116 TIMER3 MOV 3,PERIOD Seconds to timeout.
117 RDY-TIMER TIME * Get time into D0.
118  ADD PERIOD To figure wakeup time
119  STORE D2 and save it.
120 SLOOP BSL I/F-STAT Get status byte(s).
121  MOV X'004F00E0',D1 Set up
122  MOV MASK,H5 an 'AND' instr. in
123  LOAD R0FID D1 to mask status.
124  MCC X'14',R0;C12 Set up a 'RTN' instr.
125  SRA R15,H1 Set entry point
126  AND R15,X'0F' in upper half
127  OR R15,X'40' of H1 as 4.
128  SRA R15,MASK-STAT Move the last
129  MCC ST,R15 status to buffer.
130  BSLI * Mask it.
131  BU MASK-STAT,OK,STIM Brif not OK.
132  ZB SBIT Clear status check flag.
133  B TIMER-RTN All is OK.
134 STIM RQM * Pause for awhile.
135  TIME * Check the time.
136  BLE LASTIM,D0,CTIM Clock not reset.
137  MOV CT,CTSAVE Save for later.
138  MOV CTSAVE,CT Restroe register.
139  B RDY-TIMER Now try again.
140 CTIM BL D0,D2,SLOOP Brif not yet timed out.
141  SB SBIT Flag bad status.
142 TIMER-RTN RTN * To caller.
143 * * * * *STATUS ERROR PROCESSING* * * * *
144 EMSGA EQU * SETUP ERROR MSG ID.
145  RTN * TO CALLER.
146 * * * * *TERMINATE ERROR MSG BODY AND PRINT* * * * *
147 EMSGZ MCI SM,TS TERMINATOR.
148  MOV TSBEG,TS FOR PRTERR I/F
149  BSL PRTERR PRINT MESSAGE.
150  RTN * TO CALLER.
151 * * * * *CHECK STATUS FOR READY TO SEND* * * * *
152 READY? EQU *
153  BSL I/F-STAT Get status of i/f.
154  BBZ TAS,RR1 Brif alt. status OK.
155  MOV X'8000',MASK-OK Alt. status clear.
156  BSL TIMER3 Check if ready.
157  BBS SBIT,RR9 Brif it won't come ready.
158 RR1 BBS OUT-RDY,RR2 Brif OK for output.
159  MOV X'0404',MASK-OK Output ready set.
160  BSL TIMER3 Check if ready.
161  BBS SBIT,RR9 Brif it won't come ready.
162 RR2 BBS NCCIO,RR3 Brif not concurrent.
163  IOO R15,4,DEV-ADDR Disconnect.
164  MOV X'0101',MASK-OK Not concurrent set.
165  BSL TIMER3 Check and loop.
166  BBS SBIT,RR9 Brif it won't clear CCIO.
167 RR3 BBZ INP-RDY,RR9 Brif no input waiting.
168  SRA R15,MASK Point to scratch area.
169  IOI R15,0,DEV-ADDR Dummy character read to
170  MOV X'0200',MASK-OK clear input flag.
171  BSL TIMER3 Check it out.
172 RR9 RTN * It's ready.
173  END

    DK1U
001  FRAME 451] FRM: 451\0001 7FF001C3] ORG 1\0001
002 *USER*KERMIT
003 *20 APR 1987
004 *R10*170S
005 *21 APR 1987
006 *FISHER
007 *For Ultimate Processor in microVAX
008  B PINIT Initialize for printfile] B: INIT\0001 1E0D
009  B PNXTPKT Next print data packet] B: NXTPKT\0003 1E3A
010  B ctl Controlify a char] B: ctl\0005 1E74
011  B CINIT Init. for catalog data.
012  B CNXTPKT Next catalog packet.
013 BEGQTAB DTLY 26854\0007 00\0008 000068E6
014 PF-BEG DEFD 9,6 Printfile beginning.\    D 6 9
015 PF-CUR DEFS 9,3 Printfile pointer.\    S 3 9
016 PFCURDSP DEFT 9,3 PF-CUR displacement.\    T 3 9
017 PFCURFID DEFD 9,4 PF-CUR Frame ID.\    D 4 9
018 PKTLEN TLY 80\000C 0050
019 PINIT EQU *\000E
020  BSL GINPARG Input arg to T0.\000E 187D
021  ZERO R9WA Detatch reg.\0010 A0A440
022  DIV 10 Entries per frame.] DIV =T10\0013 A14351
023  ADD BEGQTAB To proper FID. \0016 A10493
024  STORE R9FID Point to Q table.\0019 A0A699
025  MOV D1,D0 Get remainder.\001C F0068004
026  MUL 50 Bytes per entry.] MUL =T50\0020 A14450
027  INC T0 Byte 1; linked format.\0023 A00743
028  STORE R9DSP Point to table entry.\0026 A0A559
029  MOV R9,SR27 Save pointer.\0029 E2B5D9
030  MOV PF-BEG,PFCURFID Initialize pointer FID\002C F9048906
031  ONE PFCURDSP and displacement.\0030 A90341
032  MOV TSBEG,TS Reinit.\0033 E06EED
033  MCI C'1',TS Return OK.\0036 4D3140
034  B CRTN Done.] B: CRTN\0039 1E6A
035 PNXTPKT EQU *\003B
036  BSL GINPARG Check for length.\003B 187D
037  STORE CTR39 # of chars.\003D A22159
038  MOV SR27,R9 Point at table entry.\0040 E2B5E9
039  MOV TSBEG,TS Init.\0043 E06EED
040  MCC X'00',SC1 Spooler job filler.] SRARC R15,SC1\0046 E0043F] MCCNR X'00',R
    15\0049 4F0020
041  MCC LF,SC2 Spooler job line term.] SRARC R15,SC2\004C E0053F] MCCNR LF,R15\
    004F 4F0A20
042  MOV PF-CUR,R15 Point at data.\0052 E903EF
043  BNZ CTR39,FIXLEN Brif no terminators.\0055 A221745D
044  MIID R15,TS,X'83' Move thru a NUL or LF.\0059 6FD083
045  B PKTDONE That's it.] B: PKTDONE\005C 1E67
046 FIXLEN MII R15,TS Move next char.\005E 6FD2
047  BCE R15,X'00',PKTDONE NUL is last char.] BC: R15,X'00',PKTDONE,5\0060 4F000
    A67
048  BDNZ CTR39,FIXLEN Loop for more.\0064 A221645D
049 PKTDONE MOV R15,PF-CUR Save for next packet.\0068 E903DF
050 CRTN MCI SM,TS Terminate for\006B 4DFF40
051  DEC TS CONV interface\006E 2D
052  MOV TS,TSEND to BASIC.\006F E071DD
053  ENT 1,CONV Over and out!\0072 10105A
054 *
055 ctl EQU * See PROTOCOL Manual 2.4.\0075
056  MOV TSBEG,TS Init reg.\0075 E06EED
057  INC TS To the byte.\0078 3D
058  XOR TS,64 Thats it!\0079 4D4050
059  B CRTN Finish up.] B: CRTN\007C 1E6A
060 GINPARG EQU *\007E
061  MOV TSBEG,R15 Init.\007E E06EEF
062  BSL CVDR15 Conv to T0\0081 114008
063  RTN * To caller.\0084 14
064  END]=T10 :T 10\0085 00\0086 000A]=T50 :T 50\0088 0032

    DK1PA
001  FRAME 451\0001 000000A3
002 *USER*KERMIT
003 *04 NOV 1988
004 *2.2
005 *21 APR 1987
006 *JF3
007 *For PICK on PC/AT
008  B PINIT Initialize for printfile\0005 000002C0] JUS @O1
009  B PNXTPKT Next print data packet\0009 000002C0] JUS @O1
010  B ctl Controlify a char\000D 000002C0] JUS @O1
011 * B CINIT Init. for catalog data.
012 * B CNXTPKT Next catalog packet.
013 BEGQTAB DTLY X'1302'\0011 000004A0
014 PF-BEG DEFD 9,6 Printfile beginning.
015 PF-CUR DEFS 9,3 Printfile pointer.
016 PFCURDSP DEFT 9,3 PF-CUR displacement.
017 PFCURFID DEFD 9,4 PF-CUR Frame ID.
018 PKTLEN TLY 80\0015 000002A0
019 PINIT EQU *\0019 000000C0
020  BSL GINPARG Input arg to T0.\001D 000008C0] MVI @O1,AX] CALLSEG #LOCAL.BSL,
    0]@K*]@EDS0
021  MOV SR27,R9 To detatch reg.\0021 002908C0] MVI @B3;1,SI] CALLSEG #MOVI.SR.@
    D4,0]@K*]@EDS0
022  DIV 10 Entries per frame.\0025 000009C0] MVI @O1,AX] CWD] CALLSEG #DIV32D,0
    ]@EDS0
023  ADD BEGQTAB To proper FID. ]%1\0029 100024] MOV @B1(2),DX] XCHG DH,DL] LDA
    @U0T0] XCHG AH,AL] ADD DX,AX] XCHG AH,AL] STA @U0T0] MOV @B1,DX] XCHG DH,DL]
     LDA @U0T1] XCHG AH,AL] ADC DX,AX] XCHG AH,AL] STA @U0T1]%2\002C 10000BC2] M
    OV @B1,CX] MOV @B1(2),DX]@FDS0] CALL @A($ADD:D)
024  STORE R9FID Point to Q table.]%1\0030 00000C] LDA @U0T1] STA @B1] LDA @U0T0
    ] STA @B1(2)]@W1]%2\0033 000006] MVI @B4;1,DI] CALL @A($STORE:D)]@KES]@W4
025  MOV D1,D0 Get remainder.\0036 00000C] LDA @B1] STA @B2] LDA @B1(2)] STA @B2
    (2)]@W2
026  MUL 50 Bytes per entry.\0039 000008C0] MVI @O1,AX] CALLSEG #MUL32T,0]@EDS0
027  INC T0 Byte 1; linked format.]%1\003D 00000BC2] LDA @B1] XCHG AH,AL] INC AX
    ] XCHG AH,AL] STA @B1]@W1]%2\0041 000006C0] MVI @B3;1,SI] CALL @A($INC:T)]@W
    3
028  STORE R9DSP Point to table entry.\0045 000006] LDA @U0T0] STA @B1]@W1
029  MOV R9,SR27 Save pointer.]%1\0048 02901E]@U0] MOV @D3FID,DX]@U0] LDA @D3WA]
     TESTIB X'80',DL] JR CC.NZ,@L1] SUIS 11,AX]@L1 XCHG AH,AL] STA @B2] MOV DX,@
    B2(2)]@U0] LDA 2+@D3FID] STA @B2(4)]@W2]%2\004B 009209] MVI @B4;2,DI] MVI @D
    3WA,SI] CALL @A($MOV:RS)]@W4
030  MOV PF-BEG,PFCURFID Initialize pointer FID\004E 99000C] LDA @B1] STA @B2] L
    DA @B1(2)] STA @B2(2)]@W2
031  ONE PFCURDSP and displacement.\0051 900006C2] MVI.V 1,@B1]@W1
032  MOV TSBEG,TS Reinit.\0055 000D08C0] MVI @B3;1,SI] CALLSEG #MOVI.SR.@D4,0]@K
    *]@EDS0
033  MCI C'1',TS Return OK.\0059 000D0AC0] CALLSEG #INC.@D4,0]@K*]@EDS0\005D 0D0
    0] MVIB @O1,@B2;0]@W2
034  B CRTN Done.\005F 000002C0] JUS @O1
035 PNXTPKT EQU *\0063 000000C0
036  BSL GINPARG Check for length.\0067 000008C0] MVI @O1,AX] CALLSEG #LOCAL.BSL
    ,0]@K*]@EDS0
037  STORE CTR39 # of chars.\006B 200006] LDA @U0T0] STA @B1]@W1
038  MOV SR27,R9 Point at table entry.\006E 002908C0] MVI @B3;1,SI] CALLSEG #MOV
    I.SR.@D4,0]@K*]@EDS0
039  MOV TSBEG,TS Init.\0072 000D08C0] MVI @B3;1,SI] CALLSEG #MOVI.SR.@D4,0]@K*]
    @EDS0
040  MCC X'00',SC1 Spooler job filler.\0076 000005C2] MVIB @O1,@B2]@W2
041  MCC LF,SC2 Spooler job line term.\007A 000005C2] MVIB @O1,@B2]@W2
042  MOV PF-CUR,R15 Point at data.\007E 009F08C0] MVI @B3;1,SI] CALLSEG #MOVI.SR
    .@D4,0]@K*]@EDS0
043  BNZ CTR39,FIXLEN Brif no terminators.\0082 20000AC2] LDA @B1] XCHG AH,AL] A
    DA 0] JCS @C0,@O2
044  MIID R15,TS,X'83' Move thru a NUL or LF.\0086 00FD0FC0]@L1 EQU  *] MVIB @O3
    ,AL] MVI @D3WA,SI] MVI @D4WA,DI]@K*]@W4] CALLSEG #MIID,0] JR @L1]@EDS0
045  B PKTDONE That's it.\008A 000002C0] JUS @O1
046 FIXLEN MII R15,TS Move next char.\008E 00FD10C0] CALLSEG #INC.@D3,0] CALLSEG
     #INC.@D4,0]@K*]@EDS0\0092 FD00] LDAB @B1;0] STAB @B2;0]@W2
047  BCE R15,X'00',PKTDONE NUL is last char.\0094 F00007C2] CPIB @O2,@B1;0] JCS
    @C0,@O3
048  BDNZ CTR39,FIXLEN Loop for more.\0098 20000FC2]@W1] LDA @B1] XCHG AH,AL] SU
    IS 1,AX] XCHG AH,AL] STA @B1] JCS @C0,@O2
049 PKTDONE MOV R15,PF-CUR Save for next packet.]%1\009C 09F01E]@U0] MOV @D3FID,
    DX]@U0] LDA @D3WA] TESTIB X'80',DL] JR CC.NZ,@L1] SUIS 11,AX]@L1 XCHG AH,AL]
     STA @B2] MOV DX,@B2(2)]@U0] LDA 2+@D3FID] STA @B2(4)]@W2]%2\009F 00F909] MV
    I @B4;2,DI] MVI @D3WA,SI] CALL @A($MOV:RS)]@W4
050 CRTN MCI SM,TS Terminate for\00A2 000D0AC0] CALLSEG #INC.@D4,0]@K*]@EDS0\00A
    6 0D00] MVIB @O1,@B2;0]@W2
051  DEC TS CONV interface\00A8 000D05C0] CALLSEG #DEC.@D4,0]@K*]@EDS0
052  MOV TS,TSEND to BASIC.]%1\00AC 00D01E]@U0] MOV @D3FID,DX]@U0] LDA @D3WA] TE
    STIB X'80',DL] JR CC.NZ,@L1] SUIS 11,AX]@L1 XCHG AH,AL] STA @B2] MOV DX,@B2(
    2)]@U0] LDA 2+@D3FID] STA @B2(4)]@W2]%2\00AF 00D009] MVI @B4;2,DI] MVI @D3WA
    ,SI] CALL @A($MOV:RS)]@W4
053  ENT 1,CONV Over and out!\00B2 000008C0] MVI X'@A(O1;4096;*;B2;CVD;+;CVX)',A
    X] JMPSEG #ENT,0]@K*
054 *
055 ctl EQU * See PROTOCOL Manual 2.4.\00B6 000000C0
056  MOV TSBEG,TS Init reg.\00BA 000D08C0] MVI @B3;1,SI] CALLSEG #MOVI.SR.@D4,0]
    @K*]@EDS0
057  INC TS To the byte.\00BE 000D05C0] CALLSEG #INC.@D4,0]@K*]@EDS0
058  XOR TS,64 Thats it!\00C2 D00006C2] XRIB @O2,@B1;0]@W1
059  B CRTN Finish up.\00C6 000002C0] JUS @O1
060 GINPARG EQU *\00CA 000000C0
061  MOV TSBEG,R15 Init.\00CE 000F08C0] MVI @B3;1,SI] CALLSEG #MOVI.SR.@D4,0]@K*
    ]@EDS0
062  BSL CVDR15 Conv to T0\00D2 000008C0] MVI @M1,AX] CALLSEG #MODAL.BSL,0]@K*]@
    EDS0
063  RTN * To caller.\00D6 000005C0] JMPSEG #RTN,0]@K*
064  END

    XDK2
001  FRAME 498
002 *KERMIT
003 *29MAY86
004 *04
005 *02E
006 *FISHER
007 DEV-ADDR DEFN 2 2610 address.
008 ST AR 7 Status reg.
009 STATUS DEFH ST,0 Status byte.
010 CMPSTAT DEFT ST,0 Complete - both bytes
011 TAS DEFB ST,0 Test alternate status.
012 PE DEFB ST,2 Parity error.
013 FE DEFB ST,3 Framing error.
014 OE DEFB ST,4 Overrun error.
015 OUT-RDY DEFB ST,5 Output ready.
016 INP-RDY DEFB ST,6 Input ready.
017 NCCIO DEFB ST,7 Not concurrent i/o.
018 ALT-STAT DEFH ST,1 Alternate status.
019 DSR DEFB ST,13 Data Set Ready.
020 ALT-FUNC DEFC ST,3 Alternate function.
021 RTS DEFB ST,30 Request To Send.
022 MASK-STAT DEFH ST,2 Masked status HTLY.
023 MASK DEFH ST,4 Status mask.
024 OK DEFH ST,5 Status test condx.
025 MASK-OK DEFT ST,2 Above two combined.
026 PERIOD DEFH 0,38 Timeout seconds.
027 CT AR 9 Control Table reg.
028 CTSAVE EQU AFEND A safe place?
029 LASTIM EQU D9 Timer reset refer.
030  B XCHNP 01F2 Exchange packets.
031  B SENDP 11F2 Send a packet thru i/f.
032 XCHNP EQU *
033  MOV TSBEG,TS Init reg. and
034  INC TS inc to MARK char.
035  MCC TS,SC2 Move MARKER char.
036  SRA R15,PRMPC EOL in there.
037  MCC R15,TS Get prompt (EOL).
038  BBS MBIT,MODEM Brif 2610 i/o.
039  MCAL TS,5,11 Lock buffer frame.
040  WRITE TS Send EOL as prompt.
041 Find-MARK READ TS Get next char.
042  BCU TS,SC2,Find-MARK No MARKER yet.
043 Next-char INC TS To next position.
044  READ TS Get next char.
045  BCU TS,PRMPC,Next-char Brif not end.
046  MCAL TS,6,11 Unlock buffer.
047  MCI SM,TS Terminate for CONV I/F.
048  BSL STR-PAR Strip 8th bit.
049  DEC TS For return I/F.
050  MOV TS,TSEND I/F Requirement.
051  ENT 1,CONV CONV Return.
052 * * * * *Send a packet thru i/f only.* * * * *
053 SENDP EQU *
054  RTN * To DATA/BASIC.
055 * * * * * Modem i/f. * * * * *
056 MODEM EQU *
057  RTN *
058 * * * * * Strip parity * * * * *
059 STR-PAR EQU *
060  MOV TSBEG,TS Init reg.
061 AGN? INC TS To next char.
062  BCE TS,SM,RTN All done.
063  AND TS,X'7F' 8th bit = 0.
064  B AGN? Loop.
065 * * * * * end new stuff * * * * *
066 RTN RTN * General return.
067  END
068  B SEND-CHAR ADDRESSED BY CS REG.
069  B READ-REC 2 PROMPT AND INPUT BLOCK (CONCURRENT)
070 * * * * *GET STATUS OF 2610 I/F BOARD IN STATUS BYTES* * * * *
071 *
072 *ENTRY: R7 POINTS TO PRIMARY STATUS BYTE LOCATION
073 *EXIT:  ALT-STAT ZEROED IF TEST ALTERNATE STATUS BIT = 0
074 *
075 I/F-STAT EQU *
076  IOI ST,1,DEV-ADDR Input 2610 status.
077  BBS TAS,TST-ALT Brif test alt. flagged
078  ZERO ALT-STAT else set alt.=X'00'
079  RTN * and return.
080 TST-ALT INC ST To alternate byte.
081  IOI ST,7,DEV-ADDR Input alt. status.
082  DEC ST Back to proper position
083   RTN * and return to caller.
084 * * * * *
085 *ENTRY: OB POINTS TO RX# ADDR CHAR
086 *EXIT:   SBIT SET MEANS ERROR CONDITION IN STATUS BYTE(S)
087 *
088 IBENDDSP DEFT 0,231
089 READ-REC EQU *
090  BSL READY? CK OK.
091  BBS SBIT,SERR BRIF CANT CLEAR IT.
092  MOV OB,CS POINT TO ADDR CHAR TO
093  BSL SEND-CHAR SEND OUT.
094  BBS SBIT,SERR BRIF SOMETHING WRONG.
095  IOO IB,2,DEV-ADDR START A CONCUR. INPUT.
096  MOV R1,CS POINT TO PROMPT.
097  BSL SEND-CHAR TO MICROMUX.
098  SRA R15,ALT-FUNC RAISE THE
099  OR R15,X'02' RTS LINE TO
100  IOO R15,7,DEV-ADDR THE MICROMUX..
101  MOV X'0101',MASK-OK MASK NOT CCIO.
102  MOV 5,PERIOD SET 5 SECOND TIMER AND
103  BSL RDY-TIMER WAIT TILL DONE.
104  SRA R15,ALT-FUNC TURN OFF
105  AND R15,X'FD' THE RTS LINE
106  IOO R15,7,DEV-ADDR FOR GOOD MEASURE.
107  BBZ SBIT,READ-DONE BRIF FINISHED.
108  IOO R15,4,DEV-ADDR DISCONNECT.
109  MOV X'0101',MASK-OK NOT CONC. SET.
110  BSL TIMER3 WAIT FOR DISCONNECT INTERUPT.
111 SERR EQU * OUTPUT STATUS ERROR MSG.
112  LOAD 1 STATUS ERR MSG #.
113  BSL EMSGA SETUP MSG ID.
114  MBXN 4,CMPSTAT,TS STATUS PARAMETER.
115  BSL EMSGZ COMPLETE MSG BODY & PRINT.
116  B FAULT BACK TO CALLER.
117 READ-DONE EQU * DATA READ COMPLETE.
118  MOV IBBEG,IB RESTORE IB.
119  MOV IBBEG,IBEND POINT IBEND TO
120  MOV 511,IBENDDSP END OF FRAME.
121 CRLOOP SCD IB,X'86' SCAN TO CR OR NUL.
122  BCE IB,CR,CR1 BRIF CARRIAGE RETURN.
123 FAULT SB FBIT FLAG FAULT.
124  B REC-DONE1 NO REC READ.
125 CR1 BE IB,IBEND,REC-DONE BRIF END OF REC.
126  MCC AM,IB OVERWRITE CR WITH AM
127  B CRLOOP AND CONTINUE.
128 REC-DONE ZB FBIT NO FAULT.
129 REC-DONE1 MCC SM,IBEND TERMINATE FOR UPDITM.
130  RTN * TO CALLER.
131 * * * * *GET STATUS, MASK AND CHECK FOR READY WITH TIMER* * * * *
132 TIMER3 MOV 3,PERIOD SECONDS TO TIMEOUT.
133 RDY-TIMER TIME * GET CURRENT TIME IN D0.
134  ADD PERIOD FOR TOTAL TIMING PERIOD.
135  STORE D2 FOR CHECKING LATER.
136 SLOOP BSL I/F-STAT INPUT STATUS BYTE(S).
137  MOV X'004F00E0',D1 SET UP
138  MOV MASK,H5 AN 'AND' INSTR. IN
139  LOAD R0FID D1 TO MASK STATUS.
140  MCC X'14',R0;C12 SETUP A 'RTN' INSTR.
141  SRA R15,H1 SET ENTRY POINT
142  AND R15,X'0F' IN UPPER HALF
143  OR R15,X'40' OF H1 AS 4.
144  SRA R15,MASK-STAT MOVE THE LAST
145  MCC ST,R15 STATUS TO BUFFER.
146  BSLI * MASK IT.
147  BU MASK-STAT,OK,STIM BRIF DESIRED STATUS NOT UP.
148  ZB SBIT CLEAR STATUS CHK FLG.
149  B TIMER-RTN ALL OK
150 STIM RQM * PAUSE.
151  TIME * GET CURRENT TIME INTO D0
152  BLE LASTIM,D0,CTIM CLOCK NOT RESET.
153  MOV CT,CTSAVE SAVE CT REG.
154  MOV CTSAVE,CT RESTORE REG.
155  B RDY-TIMER NOW TRY IT AGAIN.
156 CTIM BL D0,D2,SLOOP BRIF NOT YET TIMED OUT
157  SB SBIT FLAG BAD STATUS
158 TIMER-RTN RTN * TO CALLER
159 * * * * *STATUS ERROR PROCESSING* * * * *
160 EMSGA EQU * SETUP ERROR MSG ID.
161  RTN * TO CALLER.
162 * * * * *TERMINATE ERROR MSG BODY AND PRINT* * * * *
163 EMSGZ MCI SM,TS TERMINATOR.
164  MOV TSBEG,TS FOR PRTERR I/F
165  BSL PRTERR PRINT MESSAGE.
166  RTN * TO CALLER.
167 * * * * *SEND SINGLE CHAR OUT TO 2610 BOARD* * * * *
168 SEND-CHAR EQU *
169  IOO CS,0,DEV-ADDR START DATA OUT.
170  MOV X'0404',MASK-OK OUTPUT READY
171  B TIMER3 WAIT TILL FINISH.
172 * * * * *CHECK STATUS FOR READY TO SEND* * * * *
173 READY? EQU *
174  BSL I/F-STAT Get status of i/f.
175  BBZ TAS,RR1 Brif alt. status OK.
176  MOV X'8000',MASK-OK Alt. status clear.
177  BSL TIMER3 Check if ready.
178  BBS SBIT,RR9 Brif it won't come ready.
179 RR1 BBS OUT-RDY,RR2 Brif OK for output.
180  MOV X'0404',MASK-OK Output ready set.
181  BSL TIMER3 Check if ready.
182  BBS SBIT,RR9 Brif it won't come ready.
183 RR2 BBS NCCIO,RR3 Brif not concurrent.
184  IOO R15,4,DEV-ADDR Disconnect.
185  MOV X'0101',MASK-OK Not concurrent set.
186  BSL TIMER3 Check and loop.
187  BBS SBIT,RR9 Brif it won't clear CCIO.
188 RR3 BBZ INP-RDY,RR9 Brif no input waiting.
189  SRA R15,MASK Point to scratch area.
190  IOI R15,0,DEV-ADDR Dummy character read to
191  MOV X'0200',MASK-OK clear input flag.
192  BSL TIMER3 Check it out.
193 RR9 RTN * It's ready.
194  END

    DK2U
001  FRAME 452] FRM: 452\0001 7FF001C4] ORG 1\0001
002 *USER*KERMIT
003 *11 MAR 1987
004 *R10*170S
005 *11 MAR 1987
006 *FISHER
007 *For Ultimate Processor in microVAX
008 DEV-ADDR DEFN 2 2610 address.\    N 2 1
009 ST AR 7 Status reg.
010 STATUS DEFH ST,0 Status byte.\    H 0 7
011 CMPSTAT DEFT ST,0 Complete - both bytes\    T 0 7
012 TAS DEFB ST,0 Test alternate status.\    B 0 7
013 PE DEFB ST,2 Parity error.\    B 2 7
014 FE DEFB ST,3 Framing error.\    B 3 7
015 OE DEFB ST,4 Overrun error.\    B 4 7
016 OUT-RDY DEFB ST,5 Output ready.\    B 5 7
017 INP-RDY DEFB ST,6 Input ready.\    B 6 7
018 NCCIO DEFB ST,7 Not concurrent i/o.\    B 7 7
019 ALT-STAT DEFH ST,1 Alternate status.\    H 1 7
020 DSR DEFB ST,13 Data Set Ready.\    B D 7
021 ALT-FUNC DEFC ST,3 Alternate function.\    C 3 7
022 RTS DEFB ST,30 Request To Send.\    B 1E 7
023 MASK-STAT DEFH ST,2 Masked status HTLY.\    H 2 7
024 MASK DEFH ST,4 Status mask.\    H 4 7
025 OK DEFH ST,5 Status test condx.\    H 5 7
026 MASK-OK DEFT ST,2 Above two combined.\    T 2 7
027 PERIOD DEFH 0,38 Timeout seconds.\    H 26 0
028 CT AR 9 Control Table reg.
029 CTSAVE EQU AFEND A safe place?
030 LASTIM EQU D9 Timer reset refer.
031 NOPRMPT DEFC TS,1\    C 1 D
032  B XCHNP 01F2 Exchange packets.] B: XCHNP\0001 1E04
033  B SENDP 11F2 Send a packet thru i/f.] B: SENDP\0003 1E50
034 XCHNP EQU *\0005
035  MOV TSBEG,TS Init reg. and\0005 E06EED
036  INC TS inc to MARK char.\0008 3D
037  MCC TS,SC2 Move MARKER char.\0009 D0050D
038  SRA R15,PRMPC EOL in there.\000C E0023F
039  MCC R15,TS Get prompt (EOL).\000F 6DF9
040  BBS MBIT,MODEM Brif 2610 i/o.\0011 908C0451
041  MCAL TS,5,11 Lock buffer frame.\0015 4D05AB
042  BCE NOPRMPT,C'1',Find-MARK Brif first packet.] SRA R15,NOPRMPT\0018 ED013F]
     BCERNL R15,C'1',Find-MARK] BC: R15,C'1',Find-MARK,5\001B 4F310A20
043  WRITE TS Send EOL as prompt.\001F 6DDD
044 Find-MARK READ TS Get next char.] READ: TS\0021 6DD5] BCL TS,X'20',=L002] BC
    : TS,X'20',=L002,3\0023 4D20062C] BBS NOECHO,=L002\0027 90FC042C] WRITE TS\0
    02B 6DDD]=L002 EQUX *
045  BCU TS,SC2,Find-MARK No MARKER yet.] BC: TS,SC2,Find-MARK,2\002D B005D420
046 Next-char INC TS To next position.\0031 3D
047  READ TS Get next char.] READ: TS\0032 6DD5] BCL TS,X'20',=L003] BC: TS,X'20
    ',=L003,3\0034 4D20063D] BBS NOECHO,=L003\0038 90FC043D] WRITE TS\003C 6DDD]
    =L003 EQUX *
048  BCU TS,PRMPC,Next-char Brif not end.] BC: TS,PRMPC,Next-char,2\003E B002D43
    0
049  MCAL TS,6,11 Unlock buffer.\0042 4D06AB
050  MCI SM,TS Terminate for CONV I/F.\0045 4DFF40
051  BSL STR-PAR Strip 8th bit.\0048 1852
052  DEC TS For return I/F.\004A 2D
053  MOV TS,TSEND I/F Requirement.\004B E071DD
054  ENT 1,CONV CONV Return.\004E 10105A
055 * * * * *Send a packet thru i/f only.* * * * *
056 SENDP EQU *\0051
057  RTN * To DATA/BASIC.\0051 14
058 * * * * * Modem i/f. * * * * *
059 MODEM EQU *\0052
060  RTN *\0052 14
061 * * * * * Strip parity * * * * *
062 STR-PAR EQU *\0053
063  MOV TSBEG,TS Init reg.\0053 E06EED
064 AGN? INC TS To next char.\0056 3D
065  BCE TS,SM,RTN All done.] BC: TS,SM,RTN,5\0057 4DFF0A5F
066  AND TS,X'7F' 8th bit = 0.\005B 4D7F70
067  B AGN? Loop.] B: AGN?\005E 1E55
068 * * * * * end new stuff * * * * *
069 RTN RTN * General return.\0060 14
070  END
071  B SEND-CHAR ADDRESSED BY CS REG.] B: SEND-CHAR\0061 1F4F
072  B READ-REC 2 PROMPT AND INPUT BLOCK (CONCURRENT)] B: READ-REC\0063 1E75
073 * * * * *GET STATUS OF 2610 I/F BOARD IN STATUS BYTES* * * * *
074 *
075 *ENTRY: R7 POINTS TO PRIMARY STATUS BYTE LOCATION
076 *EXIT:  ALT-STAT ZEROED IF TEST ALTERNATE STATUS BIT = 0
077 *
078 I/F-STAT EQU *\0065
079  IOI ST,1,DEV-ADDR Input 2610 status.\0065 472078
080  BBS TAS,TST-ALT Brif test alt. flagged\0068 9700046F
081  ZERO ALT-STAT else set alt.=X'00'\006C A70100
082  RTN * and return.\006F 14
083 TST-ALT INC ST To alternate byte.\0070 37
084  IOI ST,7,DEV-ADDR Input alt. status.\0071 47E078
085  DEC ST Back to proper position\0074 27
086   RTN * and return to caller.\0075 14
087 * * * * *
088 *ENTRY: OB POINTS TO RX# ADDR CHAR
089 *EXIT:   SBIT SET MEANS ERROR CONDITION IN STATUS BYTE(S)
090 *
091 IBENDDSP DEFT 0,231\    T E7 0
092 READ-REC EQU *\0076
093  BSL READY? CK OK.\0076 1958
094  BBS SBIT,SERR BRIF CANT CLEAR IT.\0078 909204B5
095  MOV OB,CS POINT TO ADDR CHAR TO\007C 16BC
096  BSL SEND-CHAR SEND OUT.\007E 194F
097  BBS SBIT,SERR BRIF SOMETHING WRONG.\0080 909204B5
098  IOO IB,2,DEV-ADDR START A CONCUR. INPUT.\0084 4A5078
099  MOV R1,CS POINT TO PROMPT.\0087 161C
100  BSL SEND-CHAR TO MICROMUX.\0089 194F
101  SRA R15,ALT-FUNC RAISE THE\008B E7033F
102  OR R15,X'02' RTS LINE TO\008E 4F0210
103  IOO R15,7,DEV-ADDR THE MICROMUX..\0091 4FF078
104  MOV X'0101',MASK-OK MASK NOT CCIO.] MOV =TX'0101',MASK-OK\0094 F70241CE
105  MOV 5,PERIOD SET 5 SECOND TIMER AND] MOV =T5,PERIOD] LOADT =T5\0098 A1D558]
     STOREH PERIOD\009B A02619
106  BSL RDY-TIMER WAIT TILL DONE.\009E 18F2
107  SRA R15,ALT-FUNC TURN OFF\00A0 E7033F
108  AND R15,X'FD' THE RTS LINE\00A3 4FFD70
109  IOO R15,7,DEV-ADDR FOR GOOD MEASURE.\00A6 4FF078
110  BBZ SBIT,READ-DONE BRIF FINISHED.\00A9 90920AC4
111  IOO R15,4,DEV-ADDR DISCONNECT.\00AD 4F9078
112  MOV X'0101',MASK-OK NOT CONC. SET.] MOV =TX'0101',MASK-OK\00B0 F70241CE
113  BSL TIMER3 WAIT FOR DISCONNECT INTERUPT.\00B4 18EC
114 SERR EQU * OUTPUT STATUS ERROR MSG.\00B6
115  LOAD 1 STATUS ERR MSG #.] LOAD =T1\00B6 A1D258
116  BSL EMSGA SETUP MSG ID.\00B9 1944
117  MBXN 4,CMPSTAT,TS STATUS PARAMETER.] LOAD =TX'80'+4\00BB A1D758] MBX CMPSTA
    T,TS\00BE D7007D
118  BSL EMSGZ COMPLETE MSG BODY & PRINT.\00C1 1945
119  B FAULT BACK TO CALLER.] B: FAULT\00C3 1ED6
120 READ-DONE EQU * DATA READ COMPLETE.\00C5
121  MOV IBBEG,IB RESTORE IB.\00C5 E0E4EA
122  MOV IBBEG,IBEND POINT IBEND TO\00C8 F0E7C0E4
123  MOV 511,IBENDDSP END OF FRAME.] MOV =T511,IBENDDSP\00CC F0E741D3
124 CRLOOP SCD IB,X'86' SCAN TO CR OR NUL.\00D0 6A0886
125  BCE IB,CR,CR1 BRIF CARRIAGE RETURN.] BC: IB,CR,CR1,5\00D3 4A0D0ADA
126 FAULT SB FBIT FLAG FAULT.\00D7 8085
127  B REC-DONE1 NO REC READ.] B: REC-DONE1\00D9 1EE5
128 CR1 BE IB,IBEND,REC-DONE BRIF END OF REC.] BR: IB,IBEND,REC-DONE,5\00DB C0E7
    AAE3
129  MCC AM,IB OVERWRITE CR WITH AM\00DF 4AFE20
130  B CRLOOP AND CONTINUE.] B: CRLOOP\00E2 1ECF
131 REC-DONE ZB FBIT NO FAULT.\00E4 7085
132 REC-DONE1 MCC SM,IBEND TERMINATE FOR UPDITM.] MOVSR IBEND,R15\00E6 E0E7EF] M
    CCNR SM,R15\00E9 4FFF20
133  RTN * TO CALLER.\00EC 14
134 * * * * *GET STATUS, MASK AND CHECK FOR READY WITH TIMER* * * * *
135 TIMER3 MOV 3,PERIOD SECONDS TO TIMEOUT.] MOV =T3,PERIOD] LOADT =T3\00ED A1D4
    58] STOREH PERIOD\00F0 A02619
136 RDY-TIMER TIME * GET CURRENT TIME IN D0.\00F3 4000AA
137  ADD PERIOD FOR TOTAL TIMING PERIOD.\00F6 A02613
138  STORE D2 FOR CHECKING LATER.\00F9 A01899
139 SLOOP BSL I/F-STAT INPUT STATUS BYTE(S).\00FC 1864
140  MOV X'004F00E0',D1 SET UP] MOV =DX'004F00E0',D1\00FE F00481D0
141  MOV MASK,H5 AN 'AND' INSTR. IN\0102 F00A0704
142  LOAD R0FID D1 TO MASK STATUS.\0106 A08298
143  MCC X'14',R0;C12 SETUP A 'RTN' INSTR.] SRARC R15,R0;C12\0109 E00C3F] MCCNR
    X'14',R15\010C 4F1420
144  SRA R15,H1 SET ENTRY POINT\010F E00E3F
145  AND R15,X'0F' IN UPPER HALF\0112 4F0F70
146  OR R15,X'40' OF H1 AS 4.\0115 4F4010
147  SRA R15,MASK-STAT MOVE THE LAST\0118 E7023F
148  MCC ST,R15 STATUS TO BUFFER.\011B 6F79
149  BSLI * MASK IT.\011D 13
150  BU MASK-STAT,OK,STIM BRIF DESIRED STATUS NOT UP.] BT: MASK-STAT,OK,STIM,2\0
    11E F7021705\0122 5527
151  ZB SBIT CLEAR STATUS CHK FLG.\0124 7092
152  B TIMER-RTN ALL OK] B: TIMER-RTN\0126 1F43
153 STIM RQM * PAUSE.\0128 4000A9
154  TIME * GET CURRENT TIME INTO D0\012B 4000AA
155  BLE LASTIM,D0,CTIM CLOCK NOT RESET.] BT: LASTIM,D0,CTIM,4\012E F2399006\013
    2 593B
156  MOV CT,CTSAVE SAVE CT REG.\0134 E0DBD9
157  MOV CTSAVE,CT RESTORE REG.\0137 E0DBE9
158  B RDY-TIMER NOW TRY IT AGAIN.] B: RDY-TIMER\013A 1EF2
159 CTIM BL D0,D2,SLOOP BRIF NOT YET TIMED OUT] BT: D0,D2,SLOOP,6\013C F0069018\
    0140 5CFB
160  SB SBIT FLAG BAD STATUS\0142 8092
161 TIMER-RTN RTN * TO CALLER\0144 14
162 * * * * *STATUS ERROR PROCESSING* * * * *
163 EMSGA EQU * SETUP ERROR MSG ID.\0145
164  RTN * TO CALLER.\0145 14
165 * * * * *TERMINATE ERROR MSG BODY AND PRINT* * * * *
166 EMSGZ MCI SM,TS TERMINATOR.\0146 4DFF40
167  MOV TSBEG,TS FOR PRTERR I/F\0149 E06EED
168  BSL PRTERR PRINT MESSAGE.\014C 11000C
169  RTN * TO CALLER.\014F 14
170 * * * * *SEND SINGLE CHAR OUT TO 2610 BOARD* * * * *
171 SEND-CHAR EQU *\0150
172  IOO CS,0,DEV-ADDR START DATA OUT.\0150 4C1078
173  MOV X'0404',MASK-OK OUTPUT READY] MOV =TX'0404',MASK-OK\0153 F70241D6
174  B TIMER3 WAIT TILL FINISH.] B: TIMER3\0157 1EEC
175 * * * * *CHECK STATUS FOR READY TO SEND* * * * *
176 READY? EQU *\0159
177  BSL I/F-STAT Get status of i/f.\0159 1864
178  BBZ TAS,RR1 Brif alt. status OK.\015B 97000B68
179  MOV X'8000',MASK-OK Alt. status clear.] MOV =TX'8000',MASK-OK\015F F70241CF

180  BSL TIMER3 Check if ready.\0163 18EC
181  BBS SBIT,RR9 Brif it won't come ready.\0165 90920597
182 RR1 BBS OUT-RDY,RR2 Brif OK for output.\0169 97050576
183  MOV X'0404',MASK-OK Output ready set.] MOV =TX'0404',MASK-OK\016D F70241D6
184  BSL TIMER3 Check if ready.\0171 18EC
185  BBS SBIT,RR9 Brif it won't come ready.\0173 90920597
186 RR2 BBS NCCIO,RR3 Brif not concurrent.\0177 97070587
187  IOO R15,4,DEV-ADDR Disconnect.\017B 4F9078
188  MOV X'0101',MASK-OK Not concurrent set.] MOV =TX'0101',MASK-OK\017E F70241C
    E
189  BSL TIMER3 Check and loop.\0182 18EC
190  BBS SBIT,RR9 Brif it won't clear CCIO.\0184 90920597
191 RR3 BBZ INP-RDY,RR9 Brif no input waiting.\0188 97060B97
192  SRA R15,MASK Point to scratch area.\018C E7043F
193  IOI R15,0,DEV-ADDR Dummy character read to\018F 4F0078
194  MOV X'0200',MASK-OK clear input flag.] MOV =TX'0200',MASK-OK\0192 F70241CD
195  BSL TIMER3 Check it out.\0196 18EC
196 RR9 RTN * It's ready.\0198 14
197  END]=TX'0200' :T X'0200'\0199 00\019A 0200]=TX'0101' :T X'0101'\019C 0101]=
    TX'8000' :T X'8000'\019E 8000]=DX'004F00E0' :D X'004F00E0'\01A0 004F00E0]=T1
     :T 1\01A4 0001]=T511 :T 511\01A6 01FF]=T3 :T 3\01A8 0003]=T5 :T 5\01AA 0005
    ]=TX'0404' :T X'0404'\01AC 0404]=TX'80'+4 :T X'80'+4\01AE 0084

    DK1P
001  FRAME 451] FRM: 451\0001 7FF001C3] ORG 1\0001
002 *USER*KERMIT
003 *20 APR 1987
004 *2.2
005 *21 APR 1987
006 *JF3
007 *For PICK on PC/AT
008  B PINIT Initialize for printfile] B: INIT\0001 1E0D
009  B PNXTPKT Next print data packet] B: NXTPKT\0003 1E3A
010  B ctl Controlify a char] B: ctl\0005 1E74
011  B CINIT Init. for catalog data.
012  B CNXTPKT Next catalog packet.
013 BEGQTAB DTLY X'1302'\0007 00\0008 000068E6
014 PF-BEG DEFD 9,6 Printfile beginning.\    D 6 9
015 PF-CUR DEFS 9,3 Printfile pointer.\    S 3 9
016 PFCURDSP DEFT 9,3 PF-CUR displacement.\    T 3 9
017 PFCURFID DEFD 9,4 PF-CUR Frame ID.\    D 4 9
018 PKTLEN TLY 80\000C 0050
019 PINIT EQU *\000E
020  BSL GINPARG Input arg to T0.\000E 187D
021  ZERO R9WA Detatch reg.\0010 A0A440
022  DIV 10 Entries per frame.] DIV =T10\0013 A14351
023  ADD BEGQTAB To proper FID. \0016 A10493
024  STORE R9FID Point to Q table.\0019 A0A699
025  MOV D1,D0 Get remainder.\001C F0068004
026  MUL 50 Bytes per entry.] MUL =T50\0020 A14450
027  INC T0 Byte 1; linked format.\0023 A00743
028  STORE R9DSP Point to table entry.\0026 A0A559
029  MOV R9,SR27 Save pointer.\0029 E2B5D9
030  MOV PF-BEG,PFCURFID Initialize pointer FID\002C F9048906
031  ONE PFCURDSP and displacement.\0030 A90341
032  MOV TSBEG,TS Reinit.\0033 E06EED
033  MCI C'1',TS Return OK.\0036 4D3140
034  B CRTN Done.] B: CRTN\0039 1E6A
035 PNXTPKT EQU *\003B
036  BSL GINPARG Check for length.\003B 187D
037  STORE CTR39 # of chars.\003D A22159
038  MOV SR27,R9 Point at table entry.\0040 E2B5E9
039  MOV TSBEG,TS Init.\0043 E06EED
040  MCC X'00',SC1 Spooler job filler.] SRARC R15,SC1\0046 E0043F] MCCNR X'00',R
    15\0049 4F0020
041  MCC LF,SC2 Spooler job line term.] SRARC R15,SC2\004C E0053F] MCCNR LF,R15\
    004F 4F0A20
042  MOV PF-CUR,R15 Point at data.\0052 E903EF
043  BNZ CTR39,FIXLEN Brif no terminators.\0055 A221745D
044  MIID R15,TS,X'83' Move thru a NUL or LF.\0059 6FD083
045  B PKTDONE That's it.] B: PKTDONE\005C 1E67
046 FIXLEN MII R15,TS Move next char.\005E 6FD2
047  BCE R15,X'00',PKTDONE NUL is last char.] BC: R15,X'00',PKTDONE,5\0060 4F000
    A67
048  BDNZ CTR39,FIXLEN Loop for more.\0064 A221645D
049 PKTDONE MOV R15,PF-CUR Save for next packet.\0068 E903DF
050 CRTN MCI SM,TS Terminate for\006B 4DFF40
051  DEC TS CONV interface\006E 2D
052  MOV TS,TSEND to BASIC.\006F E071DD
053  ENT 1,CONV Over and out!\0072 10105A
054 *
055 ctl EQU * See PROTOCOL Manual 2.4.\0075
056  MOV TSBEG,TS Init reg.\0075 E06EED
057  INC TS To the byte.\0078 3D
058  XOR TS,64 Thats it!\0079 4D4050
059  B CRTN Finish up.] B: CRTN\007C 1E6A
060 GINPARG EQU *\007E
061  MOV TSBEG,R15 Init.\007E E06EEF
062  BSL CVDR15 Conv to T0\0081 114008
063  RTN * To caller.\0084 14
064  END]=T10 :T 10\0085 00\0086 000A]=T50 :T 50\0088 0032

    DK2X
001  FRAME 498] FRM: 498\000 7FF001F2] ORG 1\001
002 *KERMIT
003 *05JUN86
004 *04
005 *02E
006 *FISHER
007 DEV-ADDR DEFN 2 2610 address.\    N 2 1
008 ST AR 7 Status reg.
009 STATUS DEFH ST,0 Status byte.\    H 0 7
010 CMPSTAT DEFT ST,0 Complete - both bytes\    T 0 7
011 TAS DEFB ST,0 Test alternate status.\    B 0 7
012 PE DEFB ST,2 Parity error.\    B 2 7
013 FE DEFB ST,3 Framing error.\    B 3 7
014 OE DEFB ST,4 Overrun error.\    B 4 7
015 OUT-RDY DEFB ST,5 Output ready.\    B 5 7
016 INP-RDY DEFB ST,6 Input ready.\    B 6 7
017 NCCIO DEFB ST,7 Not concurrent i/o.\    B 7 7
018 ALT-STAT DEFH ST,1 Alternate status.\    H 1 7
019 DSR DEFB ST,13 Data Set Ready.\    B D 7
020 ALT-FUNC DEFC ST,3 Alternate function.\    C 3 7
021 RTS DEFB ST,30 Request To Send.\    B 1E 7
022 MASK-STAT DEFH ST,2 Masked status HTLY.\    H 2 7
023 MASK DEFH ST,4 Status mask.\    H 4 7
024 OK DEFH ST,5 Status test condx.\    H 5 7
025 MASK-OK DEFT ST,2 Above two combined.\    T 2 7
026 PERIOD DEFH 0,38 Timeout seconds.\    H 26 0
027 CT AR 9 Control Table reg.
028 CTSAVE EQU AFEND A safe place?
029 LASTIM EQU D9 Timer reset refer.
030 EOL EQU PRMPC
031  B XCHNP 01F2 Exchange packets.] B: XCHNP\001 1E04
032  B SENDP 11F2 Send a packet thru i/f.] B: SENDP\003 1E35
033 XCHNP EQU *\005
034  MOV TSBEG,TS Init reg. and\005 E06EED
035  INC TS inc to MARK char.\008 3D
036  MCC TS,SC2 Move MARKER char.\009 D0050D
037  SRA R15,PRMPC EOL in there.\00C E0023F
038  BBS MBIT,MODEM Brif 2610 i/o.\00F 928C0055
039  MCC R15,TS Get prompt (EOL).\013 6DF9
040  MCAL TS,5,11 Lock buffer frame.\015 4D057B
041  WRITE TS Send EOL as prompt.\018 6DDD
042 Find-MARK READ TS Get next char.\01A 6DD5
043  BCU TS,SC2,Find-MARK No MARKER yet.] BC: TS,SC2,Find-MARK,0\01C B005D019
044 Next-char INC TS To next position.\020 3D
045  READ TS Get next char.\021 6DD5
046  BCU TS,PRMPC,Next-char Brif not end.] BC: TS,PRMPC,Next-char,0\023 B002D01F

047  MCAL TS,6,11 Unlock buffer.\027 4D067B
048  MCI SM,TS Terminate for CONV I/F.\02A 4DFF40
049  BSL STR-PAR Strip 8th bit.\02D 1836
050  DEC TS For return I/F.\02F 2D
051  MOV TS,TSEND I/F Requirement.\030 E071DD
052  ENT 1,CONV CONV Return.\033 10105A
053 * * * * *Send a packet thru i/f only.* * * * *
054 SENDP EQU *\036
055  RTN * To DATA/BASIC.\036 14
056 * * * * * Strip parity * * * * *
057 STR-PAR EQU *\037
058  MOV TSBEG,TS Init reg.\037 E06EED
059 AGN? INC TS To next char.\03A 3D
060  BCE TS,SM,RTN All done.] BC: TS,SM,RTN,2\03B 4DFF0843
061  AND TS,X'7F' 8th bit = 0.\03F 4D7FE0
062  B AGN? Loop.] B: AGN?\042 1E39
063 RTN RTN * General return.\044 14
064 * * * * *GET STATUS OF 2610 I/F BOARD IN STATUS BYTES* * * * *
065 *
066 *ENTRY: R7 POINTS TO PRIMARY STATUS BYTE LOCATION
067 *EXIT:  ALT-STAT ZEROED IF TEST ALTERNATE STATUS BIT = 0
068 *
069 I/F-STAT EQU *\045
070  IOI ST,1,DEV-ADDR Input 2610 status.\045 472078
071  BBS TAS,TST-ALT Brif test alt. flagged\048 9700004F
072  ZERO ALT-STAT else set alt.=X'00'\04C A70100
073  RTN * and return.\04F 14
074 TST-ALT INC ST To alternate byte.\050 37
075  IOI ST,7,DEV-ADDR Input alt. status.\051 47E078
076  DEC ST Back to proper position\054 27
077   RTN * and return to caller.\055 14
078 * * * * *
079 *ENTRY: OB POINTS TO RX# ADDR CHAR
080 *EXIT:   SBIT set means error condx in status byte(s).
081 *
082 IBENDDSP DEFT 0,231\    T E7 0
083 MODEM EQU * Talk to 2610 board.\056
084  BSL READY? Check for all OK.\056 191D
085  BBS SBIT,SERR Brif can't clear it.\058 92920083
086  IOO IB,2,DEV-ADDR Start a concurrent input.\05C 4A5078
087  SRA R15,EOL Point your register.\05F E0023F
088  IOO R15,0,DEV-ADDR Fire!\062 4F1078
089  MOV X'0404',MASK-OK OUTPUT READY] MOV =TX'0404',MASK-OK\065 F70241B6
090  B TIMER3 WAIT TILL FINISH.] B: TIMER3\069 1EBA
091  MOV X'0101',MASK-OK MASK NOT CCIO.] MOV =TX'0101',MASK-OK\06B F70241B2
092  MOV 5,PERIOD SET 5 SECOND TIMER AND] MOV =T5,PERIOD] LOADT =T5\06F A1B758]
    STOREH PERIOD\072 A02619
093  BSL RDY-TIMER WAIT TILL DONE.\075 18C0
094  BBZ SBIT,READ-DONE BRIF FINISHED.\077 92920892
095  IOO R15,4,DEV-ADDR DISCONNECT.\07B 4F9078
096  MOV X'0101',MASK-OK NOT CONC. SET.] MOV =TX'0101',MASK-OK\07E F70241B2
097  BSL TIMER3 WAIT FOR DISCONNECT INTERUPT.\082 18BA
098 SERR EQU * OUTPUT STATUS ERROR MSG.\084
099  LOAD 1 STATUS ERR MSG #.] LOAD =T1\084 A1B458
100  BSL EMSGA SETUP MSG ID.\087 1912
101  MBXN 4,CMPSTAT,TS STATUS PARAMETER.] LOAD =TX'80'+4\089 A1B958] MBX CMPSTAT
    ,TS\08C D7007D
102  BSL EMSGZ COMPLETE MSG BODY & PRINT.\08F 1913
103  B FAULT BACK TO CALLER.] B: FAULT\091 1EA4
104 READ-DONE EQU * DATA READ COMPLETE.\093
105  MOV IBBEG,IB RESTORE IB.\093 E0E4EA
106  MOV IBBEG,IBEND POINT IBEND TO\096 F0E7C0E4
107  MOV 511,IBENDDSP END OF FRAME.] MOV =T511,IBENDDSP\09A F0E741B8
108 EOL-LOOP SCD IB,X'86' Scan to EOL or NUL.\09E 6A0886
109  BCE IB,EOL,EOL1 Brif EOL character.
110 FAULT SB FBIT Flag an uh-oh.
111  B PKT-DONE1 No good packet.
112 EOL1 BE IB,IBEND,REC-DONE BRIF END OF REC.] BT: IB,IBEND,REC-DONE,2] BR:2 IB
    ,IBEND,REC-DONE\0A9 C0E7A8B1
113  MCI SM,IB OVERWRITE CR WITH AM\0AD 4AFE20
114  B EOL-LOOP and continue.] B: EOL-LOOP\0B0 1E9D
115 REC-DONE ZB FBIT NO FAULT.\0B2 7285
116 REC-DONE1 MCC SM,IBEND TERMINATE FOR UPDITM.] MOVSR IBEND,R15\0B4 E0E7EF] MC
    CNR SM,R15\0B7 4FFF20
117  RTN * TO CALLER.\0BA 14
118 * * * * *GET STATUS, MASK AND CHECK FOR READY WITH TIMER* * * * *
119 TIMER3 MOV 3,PERIOD Seconds to timeout.] MOV =T3,PERIOD] LOADT =T3\0BB A1B55
    8] STOREH PERIOD\0BE A02619
120 RDY-TIMER TIME * Get time into D0.\0C1 40007A
121  ADD PERIOD To figure wakeup time\0C4 A02613
122  STORE D2 and save it.\0C7 A01899
123 SLOOP BSL I/F-STAT Get status byte(s).\0CA 1844
124  MOV X'004F00E0',D1 Set up] MOV =DX'004F00E0',D1\0CC F00481AF
125  MOV MASK,H5 an 'AND' instr. in\0D0 F00A0704
126  LOAD R0FID D1 to mask status.\0D4 A08298
127  MCC X'14',R0;C12 Set up a 'RTN' instr.] SRARC R15,R0;C12\0D7 E00C3F] MCCNR
    X'14',R15\0DA 4F1420
128  SRA R15,H1 Set entry point\0DD E00E3F
129  AND R15,X'0F' in upper half\0E0 4F0FE0
130  OR R15,X'40' of H1 as 4.\0E3 4F40C0
131  SRA R15,MASK-STAT Move the last\0E6 E7023F
132  MCC ST,R15 status to buffer.\0E9 6F79
133  BSLI * Mask it.\0EB 13
134  BU MASK-STAT,OK,STIM Brif not OK.] BT: MASK-STAT,OK,STIM,0\0EC F7021705\0F0
     50F5
135  ZB SBIT Clear status check flag.\0F2 7292
136  B TIMER-RTN All is OK.] B: TIMER-RTN\0F4 1F11
137 STIM RQM * Pause for awhile.\0F6 400079
138  TIME * Check the time.\0F9 40007A
139  BLE LASTIM,D0,CTIM Clock not reset.] BT: LASTIM,D0,CTIM,3\0FC F2399006\100
    5D09
140  MOV CT,CTSAVE Save for later.\102 E0DBD9
141  MOV CTSAVE,CT Restroe register.\105 E0DBE9
142  B RDY-TIMER Now try again.] B: RDY-TIMER\108 1EC0
143 CTIM BL D0,D2,SLOOP Brif not yet timed out.] BT: D0,D2,SLOOP,1\10A F0069018\
    10E 54C9
144  SB SBIT Flag bad status.\110 8292
145 TIMER-RTN RTN * To caller.\112 14
146 * * * * *STATUS ERROR PROCESSING* * * * *
147 EMSGA EQU * SETUP ERROR MSG ID.\113
148  RTN * TO CALLER.\113 14
149 * * * * *TERMINATE ERROR MSG BODY AND PRINT* * * * *
150 EMSGZ MCI SM,TS TERMINATOR.\114 4DFF40
151  MOV TSBEG,TS FOR PRTERR I/F\117 E06EED
152  BSL PRTERR PRINT MESSAGE.\11A 11000C
153  RTN * TO CALLER.\11D 14
154 * * * * *CHECK STATUS FOR READY TO SEND* * * * *
155 READY? EQU *\11E
156  BSL I/F-STAT Get status of i/f.\11E 1844
157  BBZ TAS,RR1 Brif alt. status OK.\120 9700092D
158  MOV X'8000',MASK-OK Alt. status clear.] MOV =TX'8000',MASK-OK\124 F70241B1
159  BSL TIMER3 Check if ready.\128 18BA
160  BBS SBIT,RR9 Brif it won't come ready.\12A 9292015C
161 RR1 BBS OUT-RDY,RR2 Brif OK for output.\12E 9705013B
162  MOV X'0404',MASK-OK Output ready set.] MOV =TX'0404',MASK-OK\132 F70241B6
163  BSL TIMER3 Check if ready.\136 18BA
164  BBS SBIT,RR9 Brif it won't come ready.\138 9292015C
165 RR2 BBS NCCIO,RR3 Brif not concurrent.\13C 9707014C
166  IOO R15,4,DEV-ADDR Disconnect.\140 4F9078
167  MOV X'0101',MASK-OK Not concurrent set.] MOV =TX'0101',MASK-OK\143 F70241B2

168  BSL TIMER3 Check and loop.\147 18BA
169  BBS SBIT,RR9 Brif it won't clear CCIO.\149 9292015C
170 RR3 BBZ INP-RDY,RR9 Brif no input waiting.\14D 9706095C
171  SRA R15,MASK Point to scratch area.\151 E7043F
172  IOI R15,0,DEV-ADDR Dummy character read to\154 4F0078
173  MOV X'0200',MASK-OK clear input flag.] MOV =TX'0200',MASK-OK\157 F70241B3
174  BSL TIMER3 Check it out.\15B 18BA
175 RR9 RTN * It's ready.\15D 14
176  END]=DX'004F00E0' :D X'004F00E0'\15E 004F00E0]=TX'8000' :T X'8000'\162 8000
    ]=TX'0101' :T X'0101'\164 0101]=TX'0200' :T X'0200'\166 0200]=T1 :T 1\168 00
    01]=T3 :T 3\16A 0003]=TX'0404' :T X'0404'\16C 0404]=T5 :T 5\16E 0005]=T511 :
    T 511\170 01FF]=TX'80'+4 :T X'80'+4\172 0084\FFE 9D31

