home
***
CD-ROM
|
disk
|
FTP
|
other
***
search
/
Columbia Kermit
/
kermit.zip
/
archives
/
pick.tar.gz
/
pick.tar
/
picum.asm
< prev
next >
Wrap
Assembly Source File
|
1987-01-22
|
53KB
|
1,243 lines
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