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