home *** CD-ROM | disk | FTP | other *** search
/ Columbia Kermit / kermit.zip / pick / picum.asm < prev    next >
Assembly Source File  |  2020-01-01  |  53KB  |  1,243 lines

  1.  
  2.     DK2P
  3. 001  FRAME 452] FRM: 452\0001 7FF001C4] ORG 1\0001
  4. 002 *USER*KERMIT
  5. 003 *11 MAR 1987
  6. 004 *2.0
  7. 005 *11 MAR 1987
  8. 006 *JF3
  9. 007 *For PICK on PC/XT
  10. 008 DEV-ADDR DEFN 2 2610 address.\    N 2 1
  11. 009 ST AR 7 Status reg.
  12. 010 STATUS DEFH ST,0 Status byte.\    H 0 7
  13. 011 CMPSTAT DEFT ST,0 Complete - both bytes\    T 0 7
  14. 012 TAS DEFB ST,0 Test alternate status.\    B 0 7
  15. 013 PE DEFB ST,2 Parity error.\    B 2 7
  16. 014 FE DEFB ST,3 Framing error.\    B 3 7
  17. 015 OE DEFB ST,4 Overrun error.\    B 4 7
  18. 016 OUT-RDY DEFB ST,5 Output ready.\    B 5 7
  19. 017 INP-RDY DEFB ST,6 Input ready.\    B 6 7
  20. 018 NCCIO DEFB ST,7 Not concurrent i/o.\    B 7 7
  21. 019 ALT-STAT DEFH ST,1 Alternate status.\    H 1 7
  22. 020 DSR DEFB ST,13 Data Set Ready.\    B D 7
  23. 021 ALT-FUNC DEFC ST,3 Alternate function.\    C 3 7
  24. 022 RTS DEFB ST,30 Request To Send.\    B 1E 7
  25. 023 MASK-STAT DEFH ST,2 Masked status HTLY.\    H 2 7
  26. 024 MASK DEFH ST,4 Status mask.\    H 4 7
  27. 025 OK DEFH ST,5 Status test condx.\    H 5 7
  28. 026 MASK-OK DEFT ST,2 Above two combined.\    T 2 7
  29. 027 PERIOD DEFH 0,38 Timeout seconds.\    H 26 0
  30. 028 CT AR 9 Control Table reg.
  31. 029 CTSAVE EQU AFEND A safe place?
  32. 030 LASTIM EQU D9 Timer reset refer.
  33. 031 NOPRMPT DEFC TS,1\    C 1 D
  34. 032  B XCHNP 01F2 Exchange packets.] B: XCHNP\0001 1E04
  35. 033  B SENDP 11F2 Send a packet thru i/f.] B: SENDP\0003 1E50
  36. 034 XCHNP EQU *\0005
  37. 035  MOV TSBEG,TS Init reg. and\0005 E06EED
  38. 036  INC TS inc to MARK char.\0008 3D
  39. 037  MCC TS,SC2 Move MARKER char.\0009 D0050D
  40. 038  SRA R15,PRMPC EOL in there.\000C E0023F
  41. 039  MCC R15,TS Get prompt (EOL).\000F 6DF9
  42. 040  BBS MBIT,MODEM Brif 2610 i/o.\0011 908C0451
  43. 041  MCAL TS,5,11 Lock buffer frame.\0015 4D05AB
  44. 042  BCE NOPRMPT,C'1',Find-MARK Brif first packet.] SRA R15,NOPRMPT\0018 ED013F]
  45.      BCERNL R15,C'1',Find-MARK] BC: R15,C'1',Find-MARK,5\001B 4F310A20
  46. 043  WRITE TS Send EOL as prompt.\001F 6DDD
  47. 044 Find-MARK READ TS Get next char.] READ: TS\0021 6DD5] BCL TS,X'20',=L002] BC
  48.     : TS,X'20',=L002,3\0023 4D20062C] BBS NOECHO,=L002\0027 90FC042C] WRITE TS\0
  49.     02B 6DDD]=L002 EQUX *
  50. 045  BCU TS,SC2,Find-MARK No MARKER yet.] BC: TS,SC2,Find-MARK,2\002D B005D420
  51. 046 Next-char INC TS To next position.\0031 3D
  52. 047  READ TS Get next char.] READ: TS\0032 6DD5] BCL TS,X'20',=L003] BC: TS,X'20
  53.     ',=L003,3\0034 4D20063D] BBS NOECHO,=L003\0038 90FC043D] WRITE TS\003C 6DDD]
  54.     =L003 EQUX *
  55. 048  BCU TS,PRMPC,Next-char Brif not end.] BC: TS,PRMPC,Next-char,2\003E B002D43
  56.     0
  57. 049  MCAL TS,6,11 Unlock buffer.\0042 4D06AB
  58. 050  MCI SM,TS Terminate for CONV I/F.\0045 4DFF40
  59. 051  BSL STR-PAR Strip 8th bit.\0048 1852
  60. 052  DEC TS For return I/F.\004A 2D
  61. 053  MOV TS,TSEND I/F Requirement.\004B E071DD
  62. 054  ENT 1,CONV CONV Return.\004E 10105A
  63. 055 * * * * *Send a packet thru i/f only.* * * * *
  64. 056 SENDP EQU *\0051
  65. 057  RTN * To DATA/BASIC.\0051 14
  66. 058 * * * * * Modem i/f. * * * * *
  67. 059 MODEM EQU *\0052
  68. 060  RTN *\0052 14
  69. 061 * * * * * Strip parity * * * * *
  70. 062 STR-PAR EQU *\0053
  71. 063  MOV TSBEG,TS Init reg.\0053 E06EED
  72. 064 AGN? INC TS To next char.\0056 3D
  73. 065  BCE TS,SM,RTN All done.] BC: TS,SM,RTN,5\0057 4DFF0A5F
  74. 066  AND TS,X'7F' 8th bit = 0.\005B 4D7F70
  75. 067  B AGN? Loop.] B: AGN?\005E 1E55
  76. 068 * * * * * end new stuff * * * * *
  77. 069 RTN RTN * General return.\0060 14
  78. 070  END
  79. 071  B SEND-CHAR ADDRESSED BY CS REG.] B: SEND-CHAR\0061 1F4F
  80. 072  B READ-REC 2 PROMPT AND INPUT BLOCK (CONCURRENT)] B: READ-REC\0063 1E75
  81. 073 * * * * *GET STATUS OF 2610 I/F BOARD IN STATUS BYTES* * * * *
  82. 074 *
  83. 075 *ENTRY: R7 POINTS TO PRIMARY STATUS BYTE LOCATION
  84. 076 *EXIT:  ALT-STAT ZEROED IF TEST ALTERNATE STATUS BIT = 0
  85. 077 *
  86. 078 I/F-STAT EQU *\0065
  87. 079  IOI ST,1,DEV-ADDR Input 2610 status.\0065 472078
  88. 080  BBS TAS,TST-ALT Brif test alt. flagged\0068 9700046F
  89. 081  ZERO ALT-STAT else set alt.=X'00'\006C A70100
  90. 082  RTN * and return.\006F 14
  91. 083 TST-ALT INC ST To alternate byte.\0070 37
  92. 084  IOI ST,7,DEV-ADDR Input alt. status.\0071 47E078
  93. 085  DEC ST Back to proper position\0074 27
  94. 086   RTN * and return to caller.\0075 14
  95. 087 * * * * *
  96. 088 *ENTRY: OB POINTS TO RX# ADDR CHAR
  97. 089 *EXIT:   SBIT SET MEANS ERROR CONDITION IN STATUS BYTE(S)
  98. 090 *
  99. 091 IBENDDSP DEFT 0,231\    T E7 0
  100. 092 READ-REC EQU *\0076
  101. 093  BSL READY? CK OK.\0076 1958
  102. 094  BBS SBIT,SERR BRIF CANT CLEAR IT.\0078 909204B5
  103. 095  MOV OB,CS POINT TO ADDR CHAR TO\007C 16BC
  104. 096  BSL SEND-CHAR SEND OUT.\007E 194F
  105. 097  BBS SBIT,SERR BRIF SOMETHING WRONG.\0080 909204B5
  106. 098  IOO IB,2,DEV-ADDR START A CONCUR. INPUT.\0084 4A5078
  107. 099  MOV R1,CS POINT TO PROMPT.\0087 161C
  108. 100  BSL SEND-CHAR TO MICROMUX.\0089 194F
  109. 101  SRA R15,ALT-FUNC RAISE THE\008B E7033F
  110. 102  OR R15,X'02' RTS LINE TO\008E 4F0210
  111. 103  IOO R15,7,DEV-ADDR THE MICROMUX..\0091 4FF078
  112. 104  MOV X'0101',MASK-OK MASK NOT CCIO.] MOV =TX'0101',MASK-OK\0094 F70241CE
  113. 105  MOV 5,PERIOD SET 5 SECOND TIMER AND] MOV =T5,PERIOD] LOADT =T5\0098 A1D558]
  114.      STOREH PERIOD\009B A02619
  115. 106  BSL RDY-TIMER WAIT TILL DONE.\009E 18F2
  116. 107  SRA R15,ALT-FUNC TURN OFF\00A0 E7033F
  117. 108  AND R15,X'FD' THE RTS LINE\00A3 4FFD70
  118. 109  IOO R15,7,DEV-ADDR FOR GOOD MEASURE.\00A6 4FF078
  119. 110  BBZ SBIT,READ-DONE BRIF FINISHED.\00A9 90920AC4
  120. 111  IOO R15,4,DEV-ADDR DISCONNECT.\00AD 4F9078
  121. 112  MOV X'0101',MASK-OK NOT CONC. SET.] MOV =TX'0101',MASK-OK\00B0 F70241CE
  122. 113  BSL TIMER3 WAIT FOR DISCONNECT INTERUPT.\00B4 18EC
  123. 114 SERR EQU * OUTPUT STATUS ERROR MSG.\00B6
  124. 115  LOAD 1 STATUS ERR MSG #.] LOAD =T1\00B6 A1D258
  125. 116  BSL EMSGA SETUP MSG ID.\00B9 1944
  126. 117  MBXN 4,CMPSTAT,TS STATUS PARAMETER.] LOAD =TX'80'+4\00BB A1D758] MBX CMPSTA
  127.     T,TS\00BE D7007D
  128. 118  BSL EMSGZ COMPLETE MSG BODY & PRINT.\00C1 1945
  129. 119  B FAULT BACK TO CALLER.] B: FAULT\00C3 1ED6
  130. 120 READ-DONE EQU * DATA READ COMPLETE.\00C5
  131. 121  MOV IBBEG,IB RESTORE IB.\00C5 E0E4EA
  132. 122  MOV IBBEG,IBEND POINT IBEND TO\00C8 F0E7C0E4
  133. 123  MOV 511,IBENDDSP END OF FRAME.] MOV =T511,IBENDDSP\00CC F0E741D3
  134. 124 CRLOOP SCD IB,X'86' SCAN TO CR OR NUL.\00D0 6A0886
  135. 125  BCE IB,CR,CR1 BRIF CARRIAGE RETURN.] BC: IB,CR,CR1,5\00D3 4A0D0ADA
  136. 126 FAULT SB FBIT FLAG FAULT.\00D7 8085
  137. 127  B REC-DONE1 NO REC READ.] B: REC-DONE1\00D9 1EE5
  138. 128 CR1 BE IB,IBEND,REC-DONE BRIF END OF REC.] BR: IB,IBEND,REC-DONE,5\00DB C0E7
  139.     AAE3
  140. 129  MCC AM,IB OVERWRITE CR WITH AM\00DF 4AFE20
  141. 130  B CRLOOP AND CONTINUE.] B: CRLOOP\00E2 1ECF
  142. 131 REC-DONE ZB FBIT NO FAULT.\00E4 7085
  143. 132 REC-DONE1 MCC SM,IBEND TERMINATE FOR UPDITM.] MOVSR IBEND,R15\00E6 E0E7EF] M
  144.     CCNR SM,R15\00E9 4FFF20
  145. 133  RTN * TO CALLER.\00EC 14
  146. 134 * * * * *GET STATUS, MASK AND CHECK FOR READY WITH TIMER* * * * *
  147. 135 TIMER3 MOV 3,PERIOD SECONDS TO TIMEOUT.] MOV =T3,PERIOD] LOADT =T3\00ED A1D4
  148.     58] STOREH PERIOD\00F0 A02619
  149. 136 RDY-TIMER TIME * GET CURRENT TIME IN D0.\00F3 4000AA
  150. 137  ADD PERIOD FOR TOTAL TIMING PERIOD.\00F6 A02613
  151. 138  STORE D2 FOR CHECKING LATER.\00F9 A01899
  152. 139 SLOOP BSL I/F-STAT INPUT STATUS BYTE(S).\00FC 1864
  153. 140  MOV X'004F00E0',D1 SET UP] MOV =DX'004F00E0',D1\00FE F00481D0
  154. 141  MOV MASK,H5 AN 'AND' INSTR. IN\0102 F00A0704
  155. 142  LOAD R0FID D1 TO MASK STATUS.\0106 A08298
  156. 143  MCC X'14',R0;C12 SETUP A 'RTN' INSTR.] SRARC R15,R0;C12\0109 E00C3F] MCCNR
  157.     X'14',R15\010C 4F1420
  158. 144  SRA R15,H1 SET ENTRY POINT\010F E00E3F
  159. 145  AND R15,X'0F' IN UPPER HALF\0112 4F0F70
  160. 146  OR R15,X'40' OF H1 AS 4.\0115 4F4010
  161. 147  SRA R15,MASK-STAT MOVE THE LAST\0118 E7023F
  162. 148  MCC ST,R15 STATUS TO BUFFER.\011B 6F79
  163. 149  BSLI * MASK IT.\011D 13
  164. 150  BU MASK-STAT,OK,STIM BRIF DESIRED STATUS NOT UP.] BT: MASK-STAT,OK,STIM,2\0
  165.     11E F7021705\0122 5527
  166. 151  ZB SBIT CLEAR STATUS CHK FLG.\0124 7092
  167. 152  B TIMER-RTN ALL OK] B: TIMER-RTN\0126 1F43
  168. 153 STIM RQM * PAUSE.\0128 4000A9
  169. 154  TIME * GET CURRENT TIME INTO D0\012B 4000AA
  170. 155  BLE LASTIM,D0,CTIM CLOCK NOT RESET.] BT: LASTIM,D0,CTIM,4\012E F2399006\013
  171.     2 593B
  172. 156  MOV CT,CTSAVE SAVE CT REG.\0134 E0DBD9
  173. 157  MOV CTSAVE,CT RESTORE REG.\0137 E0DBE9
  174. 158  B RDY-TIMER NOW TRY IT AGAIN.] B: RDY-TIMER\013A 1EF2
  175. 159 CTIM BL D0,D2,SLOOP BRIF NOT YET TIMED OUT] BT: D0,D2,SLOOP,6\013C F0069018\
  176.     0140 5CFB
  177. 160  SB SBIT FLAG BAD STATUS\0142 8092
  178. 161 TIMER-RTN RTN * TO CALLER\0144 14
  179. 162 * * * * *STATUS ERROR PROCESSING* * * * *
  180. 163 EMSGA EQU * SETUP ERROR MSG ID.\0145
  181. 164  RTN * TO CALLER.\0145 14
  182. 165 * * * * *TERMINATE ERROR MSG BODY AND PRINT* * * * *
  183. 166 EMSGZ MCI SM,TS TERMINATOR.\0146 4DFF40
  184. 167  MOV TSBEG,TS FOR PRTERR I/F\0149 E06EED
  185. 168  BSL PRTERR PRINT MESSAGE.\014C 11000C
  186. 169  RTN * TO CALLER.\014F 14
  187. 170 * * * * *SEND SINGLE CHAR OUT TO 2610 BOARD* * * * *
  188. 171 SEND-CHAR EQU *\0150
  189. 172  IOO CS,0,DEV-ADDR START DATA OUT.\0150 4C1078
  190. 173  MOV X'0404',MASK-OK OUTPUT READY] MOV =TX'0404',MASK-OK\0153 F70241D6
  191. 174  B TIMER3 WAIT TILL FINISH.] B: TIMER3\0157 1EEC
  192. 175 * * * * *CHECK STATUS FOR READY TO SEND* * * * *
  193. 176 READY? EQU *\0159
  194. 177  BSL I/F-STAT Get status of i/f.\0159 1864
  195. 178  BBZ TAS,RR1 Brif alt. status OK.\015B 97000B68
  196. 179  MOV X'8000',MASK-OK Alt. status clear.] MOV =TX'8000',MASK-OK\015F F70241CF
  197.  
  198. 180  BSL TIMER3 Check if ready.\0163 18EC
  199. 181  BBS SBIT,RR9 Brif it won't come ready.\0165 90920597
  200. 182 RR1 BBS OUT-RDY,RR2 Brif OK for output.\0169 97050576
  201. 183  MOV X'0404',MASK-OK Output ready set.] MOV =TX'0404',MASK-OK\016D F70241D6
  202. 184  BSL TIMER3 Check if ready.\0171 18EC
  203. 185  BBS SBIT,RR9 Brif it won't come ready.\0173 90920597
  204. 186 RR2 BBS NCCIO,RR3 Brif not concurrent.\0177 97070587
  205. 187  IOO R15,4,DEV-ADDR Disconnect.\017B 4F9078
  206. 188  MOV X'0101',MASK-OK Not concurrent set.] MOV =TX'0101',MASK-OK\017E F70241C
  207.     E
  208. 189  BSL TIMER3 Check and loop.\0182 18EC
  209. 190  BBS SBIT,RR9 Brif it won't clear CCIO.\0184 90920597
  210. 191 RR3 BBZ INP-RDY,RR9 Brif no input waiting.\0188 97060B97
  211. 192  SRA R15,MASK Point to scratch area.\018C E7043F
  212. 193  IOI R15,0,DEV-ADDR Dummy character read to\018F 4F0078
  213. 194  MOV X'0200',MASK-OK clear input flag.] MOV =TX'0200',MASK-OK\0192 F70241CD
  214. 195  BSL TIMER3 Check it out.\0196 18EC
  215. 196 RR9 RTN * It's ready.\0198 14
  216. 197  END]=TX'0200' :T X'0200'\0199 00\019A 0200]=TX'0101' :T X'0101'\019C 0101]=
  217.     TX'8000' :T X'8000'\019E 8000]=DX'004F00E0' :D X'004F00E0'\01A0 004F00E0]=T1
  218.      :T 1\01A4 0001]=T511 :T 511\01A6 01FF]=T3 :T 3\01A8 0003]=T5 :T 5\01AA 0005
  219.     ]=TX'0404' :T X'0404'\01AC 0404]=TX'80'+4 :T X'80'+4\01AE 0084
  220.  
  221.     XDK2X
  222. 001 =INT(s/64);L=L+1 REPEAT
  223. 002 CASE CHKT=3;*Insert assembly call here
  224. 003 END CASE
  225. 004 9 RETURN;END
  226. 005 (c,1,0);check=c:check
  227. 006   UNTIL L=2 DO stus byte.
  228. 007 CMPSTAT DEFT ST,0 Complete - both bytes
  229. 008 TAS DEFB ST,0 Test alternate status.
  230. 009 PE DEFB ST,2 Parity error.
  231. 010 FE DEFB ST,3 Framing error.
  232. 011 OE DEFB ST,4 Overrun error.
  233. 012 OUT-RDY DEFB ST,5 Output ready.
  234. 013 INP-RDY DEFB ST,6 Input ready.
  235. 014 NCCIO DEFB ST,7 Not concurrent i/o.
  236. 015 ALT-STAT DEFH ST,1 Alternate status.
  237. 016 DSR DEFB ST,13 Data Set Ready.
  238. 017 ALT-FUNC DEFC ST,3 Alternate function.
  239. 018 RTS DEFB ST,30 Request To Send.
  240. 019 MASK-STAT DEFH ST,2 Masked status HTLY.
  241. 020 MASK DEFH ST,4 Status mask.
  242. 021 OK DEFH ST,5 Status test condx.
  243. 022 MASK-OK DEFT ST,2 Above two combined.
  244. 023 PERIOD DEFH 0,38 Timeout seconds.
  245. 024 CT AR 9 Control Table reg.
  246. 025 CTSAVE EQU AFEND A safe place?
  247. 026 LASTIM EQU D9 Timer reset refer.
  248. 027 EOL EQU PRMPC
  249. 028  B XCHNP 01F2 Exchange packets.
  250. 029  B SENDP 11F2 Send a packet thru i/f.
  251. 030 XCHNP EQU *
  252. 031  MOV TSBEG,TS Init reg. and
  253. 032  INC TS inc to MARK char.
  254. 033  MCC TS,SC2 Move MARKER char.
  255. 034  SRA R15,PRMPC EOL in there.
  256. 035  BBS MBIT,MODEM Brif 2610 i/o.
  257. 036  MCC R15,TS Get prompt (EOL).
  258. 037  MCAL TS,5,11 Lock buffer frame.
  259. 038  WRITE TS Send EOL as prompt.
  260. 039 Find-MARK READ TS Get next char.
  261. 040  BCU TS,SC2,Find-MARK No MARKER yet.
  262. 041 Next-char INC TS To next position.
  263. 042  READ TS Get next char.
  264. 043  BCU TS,PRMPC,Next-char Brif not end.
  265. 044  MCAL TS,6,11 Unlock buffer.
  266. 045  MCI SM,TS Terminate for CONV I/F.
  267. 046  BSL STR-PAR Strip 8th bit.
  268. 047  DEC TS For return I/F.
  269. 048  MOV TS,TSEND I/F Requirement.
  270. 049  ENT 1,CONV CONV Return.
  271. 050 * * * * *Send a packet thru i/f only.* * * * *
  272. 051 SENDP EQU *
  273. 052  RTN * To DATA/BASIC.
  274. 053 * * * * * Strip parity * * * * *
  275. 054 STR-PAR EQU *
  276. 055  MOV TSBEG,TS Init reg.
  277. 056 AGN? INC TS To next char.
  278. 057  BCE TS,SM,RTN All done.
  279. 058  AND TS,X'7F' 8th bit = 0.
  280. 059  B AGN? Loop.
  281. 060 RTN RTN * General return.
  282. 061 * * * * *GET STATUS OF 2610 I/F BOARD IN STATUS BYTES* * * * *
  283. 062 *
  284. 063 *ENTRY: R7 POINTS TO PRIMARY STATUS BYTE LOCATION
  285. 064 *EXIT:  ALT-STAT ZEROED IF TEST ALTERNATE STATUS BIT = 0
  286. 065 *
  287. 066 I/F-STAT EQU *
  288. 067  IOI ST,1,DEV-ADDR Input 2610 status.
  289. 068  BBS TAS,TST-ALT Brif test alt. flagged
  290. 069  ZERO ALT-STAT else set alt.=X'00'
  291. 070  RTN * and return.
  292. 071 TST-ALT INC ST To alternate byte.
  293. 072  IOI ST,7,DEV-ADDR Input alt. status.
  294. 073  DEC ST Back to proper position
  295. 074   RTN * and return to caller.
  296. 075 * * * * *
  297. 076 *ENTRY: OB POINTS TO RX# ADDR CHAR
  298. 077 *EXIT:   SBIT set means error condx in status byte(s).
  299. 078 *
  300. 079 IBENDDSP DEFT 0,231
  301. 080 MODEM EQU * Talk to 2610 board.
  302. 081  BSL READY? Check for all OK.
  303. 082  BBS SBIT,SERR Brif can't clear it.
  304. 083  IOO IB,2,DEV-ADDR Start a concurrent input.
  305. 084  SRA R15,EOL Point your register.
  306. 085  IOO R15,0,DEV-ADDR Fire!
  307. 086  MOV X'0404',MASK-OK OUTPUT READY
  308. 087  B TIMER3 WAIT TILL FINISH.
  309. 088  MOV X'0101',MASK-OK MASK NOT CCIO.
  310. 089  MOV 5,PERIOD SET 5 SECOND TIMER AND
  311. 090  BSL RDY-TIMER WAIT TILL DONE.
  312. 091  BBZ SBIT,READ-DONE BRIF FINISHED.
  313. 092  IOO R15,4,DEV-ADDR DISCONNECT.
  314. 093  MOV X'0101',MASK-OK NOT CONC. SET.
  315. 094  BSL TIMER3 WAIT FOR DISCONNECT INTERUPT.
  316. 095 SERR EQU * OUTPUT STATUS ERROR MSG.
  317. 096  LOAD 1 STATUS ERR MSG #.
  318. 097  BSL EMSGA SETUP MSG ID.
  319. 098  MBXN 4,CMPSTAT,TS STATUS PARAMETER.
  320. 099  BSL EMSGZ COMPLETE MSG BODY & PRINT.
  321. 100  B FAULT BACK TO CALLER.
  322. 101 READ-DONE EQU * DATA READ COMPLETE.
  323. 102  MOV IBBEG,IB RESTORE IB.
  324. 103  MOV IBBEG,IBEND POINT IBEND TO
  325. 104  MOV 511,IBENDDSP END OF FRAME.
  326. 105 EOL-LOOP SCD IB,X'86' Scan to EOL or NUL.
  327. 106  BCE IB,EOL,EOL1 Brif EOL character.
  328. 107 FAULT SB FBIT Flag an uh-oh.
  329. 108  B PKT-DONE1 No good packet.
  330. 109 EOL1 BE IB,IBEND,REC-DONE BRIF END OF REC.
  331. 110  MCI SM,IB OVERWRITE CR WITH AM
  332. 111  B EOL-LOOP and continue.
  333. 112 REC-DONE ZB FBIT NO FAULT.
  334. 113 REC-DONE1 MCC SM,IBEND TERMINATE FOR UPDITM.
  335. 114  RTN * TO CALLER.
  336. 115 * * * * *GET STATUS, MASK AND CHECK FOR READY WITH TIMER* * * * *
  337. 116 TIMER3 MOV 3,PERIOD Seconds to timeout.
  338. 117 RDY-TIMER TIME * Get time into D0.
  339. 118  ADD PERIOD To figure wakeup time
  340. 119  STORE D2 and save it.
  341. 120 SLOOP BSL I/F-STAT Get status byte(s).
  342. 121  MOV X'004F00E0',D1 Set up
  343. 122  MOV MASK,H5 an 'AND' instr. in
  344. 123  LOAD R0FID D1 to mask status.
  345. 124  MCC X'14',R0;C12 Set up a 'RTN' instr.
  346. 125  SRA R15,H1 Set entry point
  347. 126  AND R15,X'0F' in upper half
  348. 127  OR R15,X'40' of H1 as 4.
  349. 128  SRA R15,MASK-STAT Move the last
  350. 129  MCC ST,R15 status to buffer.
  351. 130  BSLI * Mask it.
  352. 131  BU MASK-STAT,OK,STIM Brif not OK.
  353. 132  ZB SBIT Clear status check flag.
  354. 133  B TIMER-RTN All is OK.
  355. 134 STIM RQM * Pause for awhile.
  356. 135  TIME * Check the time.
  357. 136  BLE LASTIM,D0,CTIM Clock not reset.
  358. 137  MOV CT,CTSAVE Save for later.
  359. 138  MOV CTSAVE,CT Restroe register.
  360. 139  B RDY-TIMER Now try again.
  361. 140 CTIM BL D0,D2,SLOOP Brif not yet timed out.
  362. 141  SB SBIT Flag bad status.
  363. 142 TIMER-RTN RTN * To caller.
  364. 143 * * * * *STATUS ERROR PROCESSING* * * * *
  365. 144 EMSGA EQU * SETUP ERROR MSG ID.
  366. 145  RTN * TO CALLER.
  367. 146 * * * * *TERMINATE ERROR MSG BODY AND PRINT* * * * *
  368. 147 EMSGZ MCI SM,TS TERMINATOR.
  369. 148  MOV TSBEG,TS FOR PRTERR I/F
  370. 149  BSL PRTERR PRINT MESSAGE.
  371. 150  RTN * TO CALLER.
  372. 151 * * * * *CHECK STATUS FOR READY TO SEND* * * * *
  373. 152 READY? EQU *
  374. 153  BSL I/F-STAT Get status of i/f.
  375. 154  BBZ TAS,RR1 Brif alt. status OK.
  376. 155  MOV X'8000',MASK-OK Alt. status clear.
  377. 156  BSL TIMER3 Check if ready.
  378. 157  BBS SBIT,RR9 Brif it won't come ready.
  379. 158 RR1 BBS OUT-RDY,RR2 Brif OK for output.
  380. 159  MOV X'0404',MASK-OK Output ready set.
  381. 160  BSL TIMER3 Check if ready.
  382. 161  BBS SBIT,RR9 Brif it won't come ready.
  383. 162 RR2 BBS NCCIO,RR3 Brif not concurrent.
  384. 163  IOO R15,4,DEV-ADDR Disconnect.
  385. 164  MOV X'0101',MASK-OK Not concurrent set.
  386. 165  BSL TIMER3 Check and loop.
  387. 166  BBS SBIT,RR9 Brif it won't clear CCIO.
  388. 167 RR3 BBZ INP-RDY,RR9 Brif no input waiting.
  389. 168  SRA R15,MASK Point to scratch area.
  390. 169  IOI R15,0,DEV-ADDR Dummy character read to
  391. 170  MOV X'0200',MASK-OK clear input flag.
  392. 171  BSL TIMER3 Check it out.
  393. 172 RR9 RTN * It's ready.
  394. 173  END
  395.  
  396.     DK1U
  397. 001  FRAME 451] FRM: 451\0001 7FF001C3] ORG 1\0001
  398. 002 *USER*KERMIT
  399. 003 *20 APR 1987
  400. 004 *R10*170S
  401. 005 *21 APR 1987
  402. 006 *FISHER
  403. 007 *For Ultimate Processor in microVAX
  404. 008  B PINIT Initialize for printfile] B: INIT\0001 1E0D
  405. 009  B PNXTPKT Next print data packet] B: NXTPKT\0003 1E3A
  406. 010  B ctl Controlify a char] B: ctl\0005 1E74
  407. 011  B CINIT Init. for catalog data.
  408. 012  B CNXTPKT Next catalog packet.
  409. 013 BEGQTAB DTLY 26854\0007 00\0008 000068E6
  410. 014 PF-BEG DEFD 9,6 Printfile beginning.\    D 6 9
  411. 015 PF-CUR DEFS 9,3 Printfile pointer.\    S 3 9
  412. 016 PFCURDSP DEFT 9,3 PF-CUR displacement.\    T 3 9
  413. 017 PFCURFID DEFD 9,4 PF-CUR Frame ID.\    D 4 9
  414. 018 PKTLEN TLY 80\000C 0050
  415. 019 PINIT EQU *\000E
  416. 020  BSL GINPARG Input arg to T0.\000E 187D
  417. 021  ZERO R9WA Detatch reg.\0010 A0A440
  418. 022  DIV 10 Entries per frame.] DIV =T10\0013 A14351
  419. 023  ADD BEGQTAB To proper FID. \0016 A10493
  420. 024  STORE R9FID Point to Q table.\0019 A0A699
  421. 025  MOV D1,D0 Get remainder.\001C F0068004
  422. 026  MUL 50 Bytes per entry.] MUL =T50\0020 A14450
  423. 027  INC T0 Byte 1; linked format.\0023 A00743
  424. 028  STORE R9DSP Point to table entry.\0026 A0A559
  425. 029  MOV R9,SR27 Save pointer.\0029 E2B5D9
  426. 030  MOV PF-BEG,PFCURFID Initialize pointer FID\002C F9048906
  427. 031  ONE PFCURDSP and displacement.\0030 A90341
  428. 032  MOV TSBEG,TS Reinit.\0033 E06EED
  429. 033  MCI C'1',TS Return OK.\0036 4D3140
  430. 034  B CRTN Done.] B: CRTN\0039 1E6A
  431. 035 PNXTPKT EQU *\003B
  432. 036  BSL GINPARG Check for length.\003B 187D
  433. 037  STORE CTR39 # of chars.\003D A22159
  434. 038  MOV SR27,R9 Point at table entry.\0040 E2B5E9
  435. 039  MOV TSBEG,TS Init.\0043 E06EED
  436. 040  MCC X'00',SC1 Spooler job filler.] SRARC R15,SC1\0046 E0043F] MCCNR X'00',R
  437.     15\0049 4F0020
  438. 041  MCC LF,SC2 Spooler job line term.] SRARC R15,SC2\004C E0053F] MCCNR LF,R15\
  439.     004F 4F0A20
  440. 042  MOV PF-CUR,R15 Point at data.\0052 E903EF
  441. 043  BNZ CTR39,FIXLEN Brif no terminators.\0055 A221745D
  442. 044  MIID R15,TS,X'83' Move thru a NUL or LF.\0059 6FD083
  443. 045  B PKTDONE That's it.] B: PKTDONE\005C 1E67
  444. 046 FIXLEN MII R15,TS Move next char.\005E 6FD2
  445. 047  BCE R15,X'00',PKTDONE NUL is last char.] BC: R15,X'00',PKTDONE,5\0060 4F000
  446.     A67
  447. 048  BDNZ CTR39,FIXLEN Loop for more.\0064 A221645D
  448. 049 PKTDONE MOV R15,PF-CUR Save for next packet.\0068 E903DF
  449. 050 CRTN MCI SM,TS Terminate for\006B 4DFF40
  450. 051  DEC TS CONV interface\006E 2D
  451. 052  MOV TS,TSEND to BASIC.\006F E071DD
  452. 053  ENT 1,CONV Over and out!\0072 10105A
  453. 054 *
  454. 055 ctl EQU * See PROTOCOL Manual 2.4.\0075
  455. 056  MOV TSBEG,TS Init reg.\0075 E06EED
  456. 057  INC TS To the byte.\0078 3D
  457. 058  XOR TS,64 Thats it!\0079 4D4050
  458. 059  B CRTN Finish up.] B: CRTN\007C 1E6A
  459. 060 GINPARG EQU *\007E
  460. 061  MOV TSBEG,R15 Init.\007E E06EEF
  461. 062  BSL CVDR15 Conv to T0\0081 114008
  462. 063  RTN * To caller.\0084 14
  463. 064  END]=T10 :T 10\0085 00\0086 000A]=T50 :T 50\0088 0032
  464.  
  465.     DK1PA
  466. 001  FRAME 451\0001 000000A3
  467. 002 *USER*KERMIT
  468. 003 *04 NOV 1988
  469. 004 *2.2
  470. 005 *21 APR 1987
  471. 006 *JF3
  472. 007 *For PICK on PC/AT
  473. 008  B PINIT Initialize for printfile\0005 000002C0] JUS @O1
  474. 009  B PNXTPKT Next print data packet\0009 000002C0] JUS @O1
  475. 010  B ctl Controlify a char\000D 000002C0] JUS @O1
  476. 011 * B CINIT Init. for catalog data.
  477. 012 * B CNXTPKT Next catalog packet.
  478. 013 BEGQTAB DTLY X'1302'\0011 000004A0
  479. 014 PF-BEG DEFD 9,6 Printfile beginning.
  480. 015 PF-CUR DEFS 9,3 Printfile pointer.
  481. 016 PFCURDSP DEFT 9,3 PF-CUR displacement.
  482. 017 PFCURFID DEFD 9,4 PF-CUR Frame ID.
  483. 018 PKTLEN TLY 80\0015 000002A0
  484. 019 PINIT EQU *\0019 000000C0
  485. 020  BSL GINPARG Input arg to T0.\001D 000008C0] MVI @O1,AX] CALLSEG #LOCAL.BSL,
  486.     0]@K*]@EDS0
  487. 021  MOV SR27,R9 To detatch reg.\0021 002908C0] MVI @B3;1,SI] CALLSEG #MOVI.SR.@
  488.     D4,0]@K*]@EDS0
  489. 022  DIV 10 Entries per frame.\0025 000009C0] MVI @O1,AX] CWD] CALLSEG #DIV32D,0
  490.     ]@EDS0
  491. 023  ADD BEGQTAB To proper FID. ]%1\0029 100024] MOV @B1(2),DX] XCHG DH,DL] LDA
  492.     @U0T0] XCHG AH,AL] ADD DX,AX] XCHG AH,AL] STA @U0T0] MOV @B1,DX] XCHG DH,DL]
  493.      LDA @U0T1] XCHG AH,AL] ADC DX,AX] XCHG AH,AL] STA @U0T1]%2\002C 10000BC2] M
  494.     OV @B1,CX] MOV @B1(2),DX]@FDS0] CALL @A($ADD:D)
  495. 024  STORE R9FID Point to Q table.]%1\0030 00000C] LDA @U0T1] STA @B1] LDA @U0T0
  496.     ] STA @B1(2)]@W1]%2\0033 000006] MVI @B4;1,DI] CALL @A($STORE:D)]@KES]@W4
  497. 025  MOV D1,D0 Get remainder.\0036 00000C] LDA @B1] STA @B2] LDA @B1(2)] STA @B2
  498.     (2)]@W2
  499. 026  MUL 50 Bytes per entry.\0039 000008C0] MVI @O1,AX] CALLSEG #MUL32T,0]@EDS0
  500. 027  INC T0 Byte 1; linked format.]%1\003D 00000BC2] LDA @B1] XCHG AH,AL] INC AX
  501.     ] XCHG AH,AL] STA @B1]@W1]%2\0041 000006C0] MVI @B3;1,SI] CALL @A($INC:T)]@W
  502.     3
  503. 028  STORE R9DSP Point to table entry.\0045 000006] LDA @U0T0] STA @B1]@W1
  504. 029  MOV R9,SR27 Save pointer.]%1\0048 02901E]@U0] MOV @D3FID,DX]@U0] LDA @D3WA]
  505.      TESTIB X'80',DL] JR CC.NZ,@L1] SUIS 11,AX]@L1 XCHG AH,AL] STA @B2] MOV DX,@
  506.     B2(2)]@U0] LDA 2+@D3FID] STA @B2(4)]@W2]%2\004B 009209] MVI @B4;2,DI] MVI @D
  507.     3WA,SI] CALL @A($MOV:RS)]@W4
  508. 030  MOV PF-BEG,PFCURFID Initialize pointer FID\004E 99000C] LDA @B1] STA @B2] L
  509.     DA @B1(2)] STA @B2(2)]@W2
  510. 031  ONE PFCURDSP and displacement.\0051 900006C2] MVI.V 1,@B1]@W1
  511. 032  MOV TSBEG,TS Reinit.\0055 000D08C0] MVI @B3;1,SI] CALLSEG #MOVI.SR.@D4,0]@K
  512.     *]@EDS0
  513. 033  MCI C'1',TS Return OK.\0059 000D0AC0] CALLSEG #INC.@D4,0]@K*]@EDS0\005D 0D0
  514.     0] MVIB @O1,@B2;0]@W2
  515. 034  B CRTN Done.\005F 000002C0] JUS @O1
  516. 035 PNXTPKT EQU *\0063 000000C0
  517. 036  BSL GINPARG Check for length.\0067 000008C0] MVI @O1,AX] CALLSEG #LOCAL.BSL
  518.     ,0]@K*]@EDS0
  519. 037  STORE CTR39 # of chars.\006B 200006] LDA @U0T0] STA @B1]@W1
  520. 038  MOV SR27,R9 Point at table entry.\006E 002908C0] MVI @B3;1,SI] CALLSEG #MOV
  521.     I.SR.@D4,0]@K*]@EDS0
  522. 039  MOV TSBEG,TS Init.\0072 000D08C0] MVI @B3;1,SI] CALLSEG #MOVI.SR.@D4,0]@K*]
  523.     @EDS0
  524. 040  MCC X'00',SC1 Spooler job filler.\0076 000005C2] MVIB @O1,@B2]@W2
  525. 041  MCC LF,SC2 Spooler job line term.\007A 000005C2] MVIB @O1,@B2]@W2
  526. 042  MOV PF-CUR,R15 Point at data.\007E 009F08C0] MVI @B3;1,SI] CALLSEG #MOVI.SR
  527.     .@D4,0]@K*]@EDS0
  528. 043  BNZ CTR39,FIXLEN Brif no terminators.\0082 20000AC2] LDA @B1] XCHG AH,AL] A
  529.     DA 0] JCS @C0,@O2
  530. 044  MIID R15,TS,X'83' Move thru a NUL or LF.\0086 00FD0FC0]@L1 EQU  *] MVIB @O3
  531.     ,AL] MVI @D3WA,SI] MVI @D4WA,DI]@K*]@W4] CALLSEG #MIID,0] JR @L1]@EDS0
  532. 045  B PKTDONE That's it.\008A 000002C0] JUS @O1
  533. 046 FIXLEN MII R15,TS Move next char.\008E 00FD10C0] CALLSEG #INC.@D3,0] CALLSEG
  534.      #INC.@D4,0]@K*]@EDS0\0092 FD00] LDAB @B1;0] STAB @B2;0]@W2
  535. 047  BCE R15,X'00',PKTDONE NUL is last char.\0094 F00007C2] CPIB @O2,@B1;0] JCS
  536.     @C0,@O3
  537. 048  BDNZ CTR39,FIXLEN Loop for more.\0098 20000FC2]@W1] LDA @B1] XCHG AH,AL] SU
  538.     IS 1,AX] XCHG AH,AL] STA @B1] JCS @C0,@O2
  539. 049 PKTDONE MOV R15,PF-CUR Save for next packet.]%1\009C 09F01E]@U0] MOV @D3FID,
  540.     DX]@U0] LDA @D3WA] TESTIB X'80',DL] JR CC.NZ,@L1] SUIS 11,AX]@L1 XCHG AH,AL]
  541.      STA @B2] MOV DX,@B2(2)]@U0] LDA 2+@D3FID] STA @B2(4)]@W2]%2\009F 00F909] MV
  542.     I @B4;2,DI] MVI @D3WA,SI] CALL @A($MOV:RS)]@W4
  543. 050 CRTN MCI SM,TS Terminate for\00A2 000D0AC0] CALLSEG #INC.@D4,0]@K*]@EDS0\00A
  544.     6 0D00] MVIB @O1,@B2;0]@W2
  545. 051  DEC TS CONV interface\00A8 000D05C0] CALLSEG #DEC.@D4,0]@K*]@EDS0
  546. 052  MOV TS,TSEND to BASIC.]%1\00AC 00D01E]@U0] MOV @D3FID,DX]@U0] LDA @D3WA] TE
  547.     STIB X'80',DL] JR CC.NZ,@L1] SUIS 11,AX]@L1 XCHG AH,AL] STA @B2] MOV DX,@B2(
  548.     2)]@U0] LDA 2+@D3FID] STA @B2(4)]@W2]%2\00AF 00D009] MVI @B4;2,DI] MVI @D3WA
  549.     ,SI] CALL @A($MOV:RS)]@W4
  550. 053  ENT 1,CONV Over and out!\00B2 000008C0] MVI X'@A(O1;4096;*;B2;CVD;+;CVX)',A
  551.     X] JMPSEG #ENT,0]@K*
  552. 054 *
  553. 055 ctl EQU * See PROTOCOL Manual 2.4.\00B6 000000C0
  554. 056  MOV TSBEG,TS Init reg.\00BA 000D08C0] MVI @B3;1,SI] CALLSEG #MOVI.SR.@D4,0]
  555.     @K*]@EDS0
  556. 057  INC TS To the byte.\00BE 000D05C0] CALLSEG #INC.@D4,0]@K*]@EDS0
  557. 058  XOR TS,64 Thats it!\00C2 D00006C2] XRIB @O2,@B1;0]@W1
  558. 059  B CRTN Finish up.\00C6 000002C0] JUS @O1
  559. 060 GINPARG EQU *\00CA 000000C0
  560. 061  MOV TSBEG,R15 Init.\00CE 000F08C0] MVI @B3;1,SI] CALLSEG #MOVI.SR.@D4,0]@K*
  561.     ]@EDS0
  562. 062  BSL CVDR15 Conv to T0\00D2 000008C0] MVI @M1,AX] CALLSEG #MODAL.BSL,0]@K*]@
  563.     EDS0
  564. 063  RTN * To caller.\00D6 000005C0] JMPSEG #RTN,0]@K*
  565. 064  END
  566.  
  567.     XDK2
  568. 001  FRAME 498
  569. 002 *KERMIT
  570. 003 *29MAY86
  571. 004 *04
  572. 005 *02E
  573. 006 *FISHER
  574. 007 DEV-ADDR DEFN 2 2610 address.
  575. 008 ST AR 7 Status reg.
  576. 009 STATUS DEFH ST,0 Status byte.
  577. 010 CMPSTAT DEFT ST,0 Complete - both bytes
  578. 011 TAS DEFB ST,0 Test alternate status.
  579. 012 PE DEFB ST,2 Parity error.
  580. 013 FE DEFB ST,3 Framing error.
  581. 014 OE DEFB ST,4 Overrun error.
  582. 015 OUT-RDY DEFB ST,5 Output ready.
  583. 016 INP-RDY DEFB ST,6 Input ready.
  584. 017 NCCIO DEFB ST,7 Not concurrent i/o.
  585. 018 ALT-STAT DEFH ST,1 Alternate status.
  586. 019 DSR DEFB ST,13 Data Set Ready.
  587. 020 ALT-FUNC DEFC ST,3 Alternate function.
  588. 021 RTS DEFB ST,30 Request To Send.
  589. 022 MASK-STAT DEFH ST,2 Masked status HTLY.
  590. 023 MASK DEFH ST,4 Status mask.
  591. 024 OK DEFH ST,5 Status test condx.
  592. 025 MASK-OK DEFT ST,2 Above two combined.
  593. 026 PERIOD DEFH 0,38 Timeout seconds.
  594. 027 CT AR 9 Control Table reg.
  595. 028 CTSAVE EQU AFEND A safe place?
  596. 029 LASTIM EQU D9 Timer reset refer.
  597. 030  B XCHNP 01F2 Exchange packets.
  598. 031  B SENDP 11F2 Send a packet thru i/f.
  599. 032 XCHNP EQU *
  600. 033  MOV TSBEG,TS Init reg. and
  601. 034  INC TS inc to MARK char.
  602. 035  MCC TS,SC2 Move MARKER char.
  603. 036  SRA R15,PRMPC EOL in there.
  604. 037  MCC R15,TS Get prompt (EOL).
  605. 038  BBS MBIT,MODEM Brif 2610 i/o.
  606. 039  MCAL TS,5,11 Lock buffer frame.
  607. 040  WRITE TS Send EOL as prompt.
  608. 041 Find-MARK READ TS Get next char.
  609. 042  BCU TS,SC2,Find-MARK No MARKER yet.
  610. 043 Next-char INC TS To next position.
  611. 044  READ TS Get next char.
  612. 045  BCU TS,PRMPC,Next-char Brif not end.
  613. 046  MCAL TS,6,11 Unlock buffer.
  614. 047  MCI SM,TS Terminate for CONV I/F.
  615. 048  BSL STR-PAR Strip 8th bit.
  616. 049  DEC TS For return I/F.
  617. 050  MOV TS,TSEND I/F Requirement.
  618. 051  ENT 1,CONV CONV Return.
  619. 052 * * * * *Send a packet thru i/f only.* * * * *
  620. 053 SENDP EQU *
  621. 054  RTN * To DATA/BASIC.
  622. 055 * * * * * Modem i/f. * * * * *
  623. 056 MODEM EQU *
  624. 057  RTN *
  625. 058 * * * * * Strip parity * * * * *
  626. 059 STR-PAR EQU *
  627. 060  MOV TSBEG,TS Init reg.
  628. 061 AGN? INC TS To next char.
  629. 062  BCE TS,SM,RTN All done.
  630. 063  AND TS,X'7F' 8th bit = 0.
  631. 064  B AGN? Loop.
  632. 065 * * * * * end new stuff * * * * *
  633. 066 RTN RTN * General return.
  634. 067  END
  635. 068  B SEND-CHAR ADDRESSED BY CS REG.
  636. 069  B READ-REC 2 PROMPT AND INPUT BLOCK (CONCURRENT)
  637. 070 * * * * *GET STATUS OF 2610 I/F BOARD IN STATUS BYTES* * * * *
  638. 071 *
  639. 072 *ENTRY: R7 POINTS TO PRIMARY STATUS BYTE LOCATION
  640. 073 *EXIT:  ALT-STAT ZEROED IF TEST ALTERNATE STATUS BIT = 0
  641. 074 *
  642. 075 I/F-STAT EQU *
  643. 076  IOI ST,1,DEV-ADDR Input 2610 status.
  644. 077  BBS TAS,TST-ALT Brif test alt. flagged
  645. 078  ZERO ALT-STAT else set alt.=X'00'
  646. 079  RTN * and return.
  647. 080 TST-ALT INC ST To alternate byte.
  648. 081  IOI ST,7,DEV-ADDR Input alt. status.
  649. 082  DEC ST Back to proper position
  650. 083   RTN * and return to caller.
  651. 084 * * * * *
  652. 085 *ENTRY: OB POINTS TO RX# ADDR CHAR
  653. 086 *EXIT:   SBIT SET MEANS ERROR CONDITION IN STATUS BYTE(S)
  654. 087 *
  655. 088 IBENDDSP DEFT 0,231
  656. 089 READ-REC EQU *
  657. 090  BSL READY? CK OK.
  658. 091  BBS SBIT,SERR BRIF CANT CLEAR IT.
  659. 092  MOV OB,CS POINT TO ADDR CHAR TO
  660. 093  BSL SEND-CHAR SEND OUT.
  661. 094  BBS SBIT,SERR BRIF SOMETHING WRONG.
  662. 095  IOO IB,2,DEV-ADDR START A CONCUR. INPUT.
  663. 096  MOV R1,CS POINT TO PROMPT.
  664. 097  BSL SEND-CHAR TO MICROMUX.
  665. 098  SRA R15,ALT-FUNC RAISE THE
  666. 099  OR R15,X'02' RTS LINE TO
  667. 100  IOO R15,7,DEV-ADDR THE MICROMUX..
  668. 101  MOV X'0101',MASK-OK MASK NOT CCIO.
  669. 102  MOV 5,PERIOD SET 5 SECOND TIMER AND
  670. 103  BSL RDY-TIMER WAIT TILL DONE.
  671. 104  SRA R15,ALT-FUNC TURN OFF
  672. 105  AND R15,X'FD' THE RTS LINE
  673. 106  IOO R15,7,DEV-ADDR FOR GOOD MEASURE.
  674. 107  BBZ SBIT,READ-DONE BRIF FINISHED.
  675. 108  IOO R15,4,DEV-ADDR DISCONNECT.
  676. 109  MOV X'0101',MASK-OK NOT CONC. SET.
  677. 110  BSL TIMER3 WAIT FOR DISCONNECT INTERUPT.
  678. 111 SERR EQU * OUTPUT STATUS ERROR MSG.
  679. 112  LOAD 1 STATUS ERR MSG #.
  680. 113  BSL EMSGA SETUP MSG ID.
  681. 114  MBXN 4,CMPSTAT,TS STATUS PARAMETER.
  682. 115  BSL EMSGZ COMPLETE MSG BODY & PRINT.
  683. 116  B FAULT BACK TO CALLER.
  684. 117 READ-DONE EQU * DATA READ COMPLETE.
  685. 118  MOV IBBEG,IB RESTORE IB.
  686. 119  MOV IBBEG,IBEND POINT IBEND TO
  687. 120  MOV 511,IBENDDSP END OF FRAME.
  688. 121 CRLOOP SCD IB,X'86' SCAN TO CR OR NUL.
  689. 122  BCE IB,CR,CR1 BRIF CARRIAGE RETURN.
  690. 123 FAULT SB FBIT FLAG FAULT.
  691. 124  B REC-DONE1 NO REC READ.
  692. 125 CR1 BE IB,IBEND,REC-DONE BRIF END OF REC.
  693. 126  MCC AM,IB OVERWRITE CR WITH AM
  694. 127  B CRLOOP AND CONTINUE.
  695. 128 REC-DONE ZB FBIT NO FAULT.
  696. 129 REC-DONE1 MCC SM,IBEND TERMINATE FOR UPDITM.
  697. 130  RTN * TO CALLER.
  698. 131 * * * * *GET STATUS, MASK AND CHECK FOR READY WITH TIMER* * * * *
  699. 132 TIMER3 MOV 3,PERIOD SECONDS TO TIMEOUT.
  700. 133 RDY-TIMER TIME * GET CURRENT TIME IN D0.
  701. 134  ADD PERIOD FOR TOTAL TIMING PERIOD.
  702. 135  STORE D2 FOR CHECKING LATER.
  703. 136 SLOOP BSL I/F-STAT INPUT STATUS BYTE(S).
  704. 137  MOV X'004F00E0',D1 SET UP
  705. 138  MOV MASK,H5 AN 'AND' INSTR. IN
  706. 139  LOAD R0FID D1 TO MASK STATUS.
  707. 140  MCC X'14',R0;C12 SETUP A 'RTN' INSTR.
  708. 141  SRA R15,H1 SET ENTRY POINT
  709. 142  AND R15,X'0F' IN UPPER HALF
  710. 143  OR R15,X'40' OF H1 AS 4.
  711. 144  SRA R15,MASK-STAT MOVE THE LAST
  712. 145  MCC ST,R15 STATUS TO BUFFER.
  713. 146  BSLI * MASK IT.
  714. 147  BU MASK-STAT,OK,STIM BRIF DESIRED STATUS NOT UP.
  715. 148  ZB SBIT CLEAR STATUS CHK FLG.
  716. 149  B TIMER-RTN ALL OK
  717. 150 STIM RQM * PAUSE.
  718. 151  TIME * GET CURRENT TIME INTO D0
  719. 152  BLE LASTIM,D0,CTIM CLOCK NOT RESET.
  720. 153  MOV CT,CTSAVE SAVE CT REG.
  721. 154  MOV CTSAVE,CT RESTORE REG.
  722. 155  B RDY-TIMER NOW TRY IT AGAIN.
  723. 156 CTIM BL D0,D2,SLOOP BRIF NOT YET TIMED OUT
  724. 157  SB SBIT FLAG BAD STATUS
  725. 158 TIMER-RTN RTN * TO CALLER
  726. 159 * * * * *STATUS ERROR PROCESSING* * * * *
  727. 160 EMSGA EQU * SETUP ERROR MSG ID.
  728. 161  RTN * TO CALLER.
  729. 162 * * * * *TERMINATE ERROR MSG BODY AND PRINT* * * * *
  730. 163 EMSGZ MCI SM,TS TERMINATOR.
  731. 164  MOV TSBEG,TS FOR PRTERR I/F
  732. 165  BSL PRTERR PRINT MESSAGE.
  733. 166  RTN * TO CALLER.
  734. 167 * * * * *SEND SINGLE CHAR OUT TO 2610 BOARD* * * * *
  735. 168 SEND-CHAR EQU *
  736. 169  IOO CS,0,DEV-ADDR START DATA OUT.
  737. 170  MOV X'0404',MASK-OK OUTPUT READY
  738. 171  B TIMER3 WAIT TILL FINISH.
  739. 172 * * * * *CHECK STATUS FOR READY TO SEND* * * * *
  740. 173 READY? EQU *
  741. 174  BSL I/F-STAT Get status of i/f.
  742. 175  BBZ TAS,RR1 Brif alt. status OK.
  743. 176  MOV X'8000',MASK-OK Alt. status clear.
  744. 177  BSL TIMER3 Check if ready.
  745. 178  BBS SBIT,RR9 Brif it won't come ready.
  746. 179 RR1 BBS OUT-RDY,RR2 Brif OK for output.
  747. 180  MOV X'0404',MASK-OK Output ready set.
  748. 181  BSL TIMER3 Check if ready.
  749. 182  BBS SBIT,RR9 Brif it won't come ready.
  750. 183 RR2 BBS NCCIO,RR3 Brif not concurrent.
  751. 184  IOO R15,4,DEV-ADDR Disconnect.
  752. 185  MOV X'0101',MASK-OK Not concurrent set.
  753. 186  BSL TIMER3 Check and loop.
  754. 187  BBS SBIT,RR9 Brif it won't clear CCIO.
  755. 188 RR3 BBZ INP-RDY,RR9 Brif no input waiting.
  756. 189  SRA R15,MASK Point to scratch area.
  757. 190  IOI R15,0,DEV-ADDR Dummy character read to
  758. 191  MOV X'0200',MASK-OK clear input flag.
  759. 192  BSL TIMER3 Check it out.
  760. 193 RR9 RTN * It's ready.
  761. 194  END
  762.  
  763.     DK2U
  764. 001  FRAME 452] FRM: 452\0001 7FF001C4] ORG 1\0001
  765. 002 *USER*KERMIT
  766. 003 *11 MAR 1987
  767. 004 *R10*170S
  768. 005 *11 MAR 1987
  769. 006 *FISHER
  770. 007 *For Ultimate Processor in microVAX
  771. 008 DEV-ADDR DEFN 2 2610 address.\    N 2 1
  772. 009 ST AR 7 Status reg.
  773. 010 STATUS DEFH ST,0 Status byte.\    H 0 7
  774. 011 CMPSTAT DEFT ST,0 Complete - both bytes\    T 0 7
  775. 012 TAS DEFB ST,0 Test alternate status.\    B 0 7
  776. 013 PE DEFB ST,2 Parity error.\    B 2 7
  777. 014 FE DEFB ST,3 Framing error.\    B 3 7
  778. 015 OE DEFB ST,4 Overrun error.\    B 4 7
  779. 016 OUT-RDY DEFB ST,5 Output ready.\    B 5 7
  780. 017 INP-RDY DEFB ST,6 Input ready.\    B 6 7
  781. 018 NCCIO DEFB ST,7 Not concurrent i/o.\    B 7 7
  782. 019 ALT-STAT DEFH ST,1 Alternate status.\    H 1 7
  783. 020 DSR DEFB ST,13 Data Set Ready.\    B D 7
  784. 021 ALT-FUNC DEFC ST,3 Alternate function.\    C 3 7
  785. 022 RTS DEFB ST,30 Request To Send.\    B 1E 7
  786. 023 MASK-STAT DEFH ST,2 Masked status HTLY.\    H 2 7
  787. 024 MASK DEFH ST,4 Status mask.\    H 4 7
  788. 025 OK DEFH ST,5 Status test condx.\    H 5 7
  789. 026 MASK-OK DEFT ST,2 Above two combined.\    T 2 7
  790. 027 PERIOD DEFH 0,38 Timeout seconds.\    H 26 0
  791. 028 CT AR 9 Control Table reg.
  792. 029 CTSAVE EQU AFEND A safe place?
  793. 030 LASTIM EQU D9 Timer reset refer.
  794. 031 NOPRMPT DEFC TS,1\    C 1 D
  795. 032  B XCHNP 01F2 Exchange packets.] B: XCHNP\0001 1E04
  796. 033  B SENDP 11F2 Send a packet thru i/f.] B: SENDP\0003 1E50
  797. 034 XCHNP EQU *\0005
  798. 035  MOV TSBEG,TS Init reg. and\0005 E06EED
  799. 036  INC TS inc to MARK char.\0008 3D
  800. 037  MCC TS,SC2 Move MARKER char.\0009 D0050D
  801. 038  SRA R15,PRMPC EOL in there.\000C E0023F
  802. 039  MCC R15,TS Get prompt (EOL).\000F 6DF9
  803. 040  BBS MBIT,MODEM Brif 2610 i/o.\0011 908C0451
  804. 041  MCAL TS,5,11 Lock buffer frame.\0015 4D05AB
  805. 042  BCE NOPRMPT,C'1',Find-MARK Brif first packet.] SRA R15,NOPRMPT\0018 ED013F]
  806.      BCERNL R15,C'1',Find-MARK] BC: R15,C'1',Find-MARK,5\001B 4F310A20
  807. 043  WRITE TS Send EOL as prompt.\001F 6DDD
  808. 044 Find-MARK READ TS Get next char.] READ: TS\0021 6DD5] BCL TS,X'20',=L002] BC
  809.     : TS,X'20',=L002,3\0023 4D20062C] BBS NOECHO,=L002\0027 90FC042C] WRITE TS\0
  810.     02B 6DDD]=L002 EQUX *
  811. 045  BCU TS,SC2,Find-MARK No MARKER yet.] BC: TS,SC2,Find-MARK,2\002D B005D420
  812. 046 Next-char INC TS To next position.\0031 3D
  813. 047  READ TS Get next char.] READ: TS\0032 6DD5] BCL TS,X'20',=L003] BC: TS,X'20
  814.     ',=L003,3\0034 4D20063D] BBS NOECHO,=L003\0038 90FC043D] WRITE TS\003C 6DDD]
  815.     =L003 EQUX *
  816. 048  BCU TS,PRMPC,Next-char Brif not end.] BC: TS,PRMPC,Next-char,2\003E B002D43
  817.     0
  818. 049  MCAL TS,6,11 Unlock buffer.\0042 4D06AB
  819. 050  MCI SM,TS Terminate for CONV I/F.\0045 4DFF40
  820. 051  BSL STR-PAR Strip 8th bit.\0048 1852
  821. 052  DEC TS For return I/F.\004A 2D
  822. 053  MOV TS,TSEND I/F Requirement.\004B E071DD
  823. 054  ENT 1,CONV CONV Return.\004E 10105A
  824. 055 * * * * *Send a packet thru i/f only.* * * * *
  825. 056 SENDP EQU *\0051
  826. 057  RTN * To DATA/BASIC.\0051 14
  827. 058 * * * * * Modem i/f. * * * * *
  828. 059 MODEM EQU *\0052
  829. 060  RTN *\0052 14
  830. 061 * * * * * Strip parity * * * * *
  831. 062 STR-PAR EQU *\0053
  832. 063  MOV TSBEG,TS Init reg.\0053 E06EED
  833. 064 AGN? INC TS To next char.\0056 3D
  834. 065  BCE TS,SM,RTN All done.] BC: TS,SM,RTN,5\0057 4DFF0A5F
  835. 066  AND TS,X'7F' 8th bit = 0.\005B 4D7F70
  836. 067  B AGN? Loop.] B: AGN?\005E 1E55
  837. 068 * * * * * end new stuff * * * * *
  838. 069 RTN RTN * General return.\0060 14
  839. 070  END
  840. 071  B SEND-CHAR ADDRESSED BY CS REG.] B: SEND-CHAR\0061 1F4F
  841. 072  B READ-REC 2 PROMPT AND INPUT BLOCK (CONCURRENT)] B: READ-REC\0063 1E75
  842. 073 * * * * *GET STATUS OF 2610 I/F BOARD IN STATUS BYTES* * * * *
  843. 074 *
  844. 075 *ENTRY: R7 POINTS TO PRIMARY STATUS BYTE LOCATION
  845. 076 *EXIT:  ALT-STAT ZEROED IF TEST ALTERNATE STATUS BIT = 0
  846. 077 *
  847. 078 I/F-STAT EQU *\0065
  848. 079  IOI ST,1,DEV-ADDR Input 2610 status.\0065 472078
  849. 080  BBS TAS,TST-ALT Brif test alt. flagged\0068 9700046F
  850. 081  ZERO ALT-STAT else set alt.=X'00'\006C A70100
  851. 082  RTN * and return.\006F 14
  852. 083 TST-ALT INC ST To alternate byte.\0070 37
  853. 084  IOI ST,7,DEV-ADDR Input alt. status.\0071 47E078
  854. 085  DEC ST Back to proper position\0074 27
  855. 086   RTN * and return to caller.\0075 14
  856. 087 * * * * *
  857. 088 *ENTRY: OB POINTS TO RX# ADDR CHAR
  858. 089 *EXIT:   SBIT SET MEANS ERROR CONDITION IN STATUS BYTE(S)
  859. 090 *
  860. 091 IBENDDSP DEFT 0,231\    T E7 0
  861. 092 READ-REC EQU *\0076
  862. 093  BSL READY? CK OK.\0076 1958
  863. 094  BBS SBIT,SERR BRIF CANT CLEAR IT.\0078 909204B5
  864. 095  MOV OB,CS POINT TO ADDR CHAR TO\007C 16BC
  865. 096  BSL SEND-CHAR SEND OUT.\007E 194F
  866. 097  BBS SBIT,SERR BRIF SOMETHING WRONG.\0080 909204B5
  867. 098  IOO IB,2,DEV-ADDR START A CONCUR. INPUT.\0084 4A5078
  868. 099  MOV R1,CS POINT TO PROMPT.\0087 161C
  869. 100  BSL SEND-CHAR TO MICROMUX.\0089 194F
  870. 101  SRA R15,ALT-FUNC RAISE THE\008B E7033F
  871. 102  OR R15,X'02' RTS LINE TO\008E 4F0210
  872. 103  IOO R15,7,DEV-ADDR THE MICROMUX..\0091 4FF078
  873. 104  MOV X'0101',MASK-OK MASK NOT CCIO.] MOV =TX'0101',MASK-OK\0094 F70241CE
  874. 105  MOV 5,PERIOD SET 5 SECOND TIMER AND] MOV =T5,PERIOD] LOADT =T5\0098 A1D558]
  875.      STOREH PERIOD\009B A02619
  876. 106  BSL RDY-TIMER WAIT TILL DONE.\009E 18F2
  877. 107  SRA R15,ALT-FUNC TURN OFF\00A0 E7033F
  878. 108  AND R15,X'FD' THE RTS LINE\00A3 4FFD70
  879. 109  IOO R15,7,DEV-ADDR FOR GOOD MEASURE.\00A6 4FF078
  880. 110  BBZ SBIT,READ-DONE BRIF FINISHED.\00A9 90920AC4
  881. 111  IOO R15,4,DEV-ADDR DISCONNECT.\00AD 4F9078
  882. 112  MOV X'0101',MASK-OK NOT CONC. SET.] MOV =TX'0101',MASK-OK\00B0 F70241CE
  883. 113  BSL TIMER3 WAIT FOR DISCONNECT INTERUPT.\00B4 18EC
  884. 114 SERR EQU * OUTPUT STATUS ERROR MSG.\00B6
  885. 115  LOAD 1 STATUS ERR MSG #.] LOAD =T1\00B6 A1D258
  886. 116  BSL EMSGA SETUP MSG ID.\00B9 1944
  887. 117  MBXN 4,CMPSTAT,TS STATUS PARAMETER.] LOAD =TX'80'+4\00BB A1D758] MBX CMPSTA
  888.     T,TS\00BE D7007D
  889. 118  BSL EMSGZ COMPLETE MSG BODY & PRINT.\00C1 1945
  890. 119  B FAULT BACK TO CALLER.] B: FAULT\00C3 1ED6
  891. 120 READ-DONE EQU * DATA READ COMPLETE.\00C5
  892. 121  MOV IBBEG,IB RESTORE IB.\00C5 E0E4EA
  893. 122  MOV IBBEG,IBEND POINT IBEND TO\00C8 F0E7C0E4
  894. 123  MOV 511,IBENDDSP END OF FRAME.] MOV =T511,IBENDDSP\00CC F0E741D3
  895. 124 CRLOOP SCD IB,X'86' SCAN TO CR OR NUL.\00D0 6A0886
  896. 125  BCE IB,CR,CR1 BRIF CARRIAGE RETURN.] BC: IB,CR,CR1,5\00D3 4A0D0ADA
  897. 126 FAULT SB FBIT FLAG FAULT.\00D7 8085
  898. 127  B REC-DONE1 NO REC READ.] B: REC-DONE1\00D9 1EE5
  899. 128 CR1 BE IB,IBEND,REC-DONE BRIF END OF REC.] BR: IB,IBEND,REC-DONE,5\00DB C0E7
  900.     AAE3
  901. 129  MCC AM,IB OVERWRITE CR WITH AM\00DF 4AFE20
  902. 130  B CRLOOP AND CONTINUE.] B: CRLOOP\00E2 1ECF
  903. 131 REC-DONE ZB FBIT NO FAULT.\00E4 7085
  904. 132 REC-DONE1 MCC SM,IBEND TERMINATE FOR UPDITM.] MOVSR IBEND,R15\00E6 E0E7EF] M
  905.     CCNR SM,R15\00E9 4FFF20
  906. 133  RTN * TO CALLER.\00EC 14
  907. 134 * * * * *GET STATUS, MASK AND CHECK FOR READY WITH TIMER* * * * *
  908. 135 TIMER3 MOV 3,PERIOD SECONDS TO TIMEOUT.] MOV =T3,PERIOD] LOADT =T3\00ED A1D4
  909.     58] STOREH PERIOD\00F0 A02619
  910. 136 RDY-TIMER TIME * GET CURRENT TIME IN D0.\00F3 4000AA
  911. 137  ADD PERIOD FOR TOTAL TIMING PERIOD.\00F6 A02613
  912. 138  STORE D2 FOR CHECKING LATER.\00F9 A01899
  913. 139 SLOOP BSL I/F-STAT INPUT STATUS BYTE(S).\00FC 1864
  914. 140  MOV X'004F00E0',D1 SET UP] MOV =DX'004F00E0',D1\00FE F00481D0
  915. 141  MOV MASK,H5 AN 'AND' INSTR. IN\0102 F00A0704
  916. 142  LOAD R0FID D1 TO MASK STATUS.\0106 A08298
  917. 143  MCC X'14',R0;C12 SETUP A 'RTN' INSTR.] SRARC R15,R0;C12\0109 E00C3F] MCCNR
  918.     X'14',R15\010C 4F1420
  919. 144  SRA R15,H1 SET ENTRY POINT\010F E00E3F
  920. 145  AND R15,X'0F' IN UPPER HALF\0112 4F0F70
  921. 146  OR R15,X'40' OF H1 AS 4.\0115 4F4010
  922. 147  SRA R15,MASK-STAT MOVE THE LAST\0118 E7023F
  923. 148  MCC ST,R15 STATUS TO BUFFER.\011B 6F79
  924. 149  BSLI * MASK IT.\011D 13
  925. 150  BU MASK-STAT,OK,STIM BRIF DESIRED STATUS NOT UP.] BT: MASK-STAT,OK,STIM,2\0
  926.     11E F7021705\0122 5527
  927. 151  ZB SBIT CLEAR STATUS CHK FLG.\0124 7092
  928. 152  B TIMER-RTN ALL OK] B: TIMER-RTN\0126 1F43
  929. 153 STIM RQM * PAUSE.\0128 4000A9
  930. 154  TIME * GET CURRENT TIME INTO D0\012B 4000AA
  931. 155  BLE LASTIM,D0,CTIM CLOCK NOT RESET.] BT: LASTIM,D0,CTIM,4\012E F2399006\013
  932.     2 593B
  933. 156  MOV CT,CTSAVE SAVE CT REG.\0134 E0DBD9
  934. 157  MOV CTSAVE,CT RESTORE REG.\0137 E0DBE9
  935. 158  B RDY-TIMER NOW TRY IT AGAIN.] B: RDY-TIMER\013A 1EF2
  936. 159 CTIM BL D0,D2,SLOOP BRIF NOT YET TIMED OUT] BT: D0,D2,SLOOP,6\013C F0069018\
  937.     0140 5CFB
  938. 160  SB SBIT FLAG BAD STATUS\0142 8092
  939. 161 TIMER-RTN RTN * TO CALLER\0144 14
  940. 162 * * * * *STATUS ERROR PROCESSING* * * * *
  941. 163 EMSGA EQU * SETUP ERROR MSG ID.\0145
  942. 164  RTN * TO CALLER.\0145 14
  943. 165 * * * * *TERMINATE ERROR MSG BODY AND PRINT* * * * *
  944. 166 EMSGZ MCI SM,TS TERMINATOR.\0146 4DFF40
  945. 167  MOV TSBEG,TS FOR PRTERR I/F\0149 E06EED
  946. 168  BSL PRTERR PRINT MESSAGE.\014C 11000C
  947. 169  RTN * TO CALLER.\014F 14
  948. 170 * * * * *SEND SINGLE CHAR OUT TO 2610 BOARD* * * * *
  949. 171 SEND-CHAR EQU *\0150
  950. 172  IOO CS,0,DEV-ADDR START DATA OUT.\0150 4C1078
  951. 173  MOV X'0404',MASK-OK OUTPUT READY] MOV =TX'0404',MASK-OK\0153 F70241D6
  952. 174  B TIMER3 WAIT TILL FINISH.] B: TIMER3\0157 1EEC
  953. 175 * * * * *CHECK STATUS FOR READY TO SEND* * * * *
  954. 176 READY? EQU *\0159
  955. 177  BSL I/F-STAT Get status of i/f.\0159 1864
  956. 178  BBZ TAS,RR1 Brif alt. status OK.\015B 97000B68
  957. 179  MOV X'8000',MASK-OK Alt. status clear.] MOV =TX'8000',MASK-OK\015F F70241CF
  958.  
  959. 180  BSL TIMER3 Check if ready.\0163 18EC
  960. 181  BBS SBIT,RR9 Brif it won't come ready.\0165 90920597
  961. 182 RR1 BBS OUT-RDY,RR2 Brif OK for output.\0169 97050576
  962. 183  MOV X'0404',MASK-OK Output ready set.] MOV =TX'0404',MASK-OK\016D F70241D6
  963. 184  BSL TIMER3 Check if ready.\0171 18EC
  964. 185  BBS SBIT,RR9 Brif it won't come ready.\0173 90920597
  965. 186 RR2 BBS NCCIO,RR3 Brif not concurrent.\0177 97070587
  966. 187  IOO R15,4,DEV-ADDR Disconnect.\017B 4F9078
  967. 188  MOV X'0101',MASK-OK Not concurrent set.] MOV =TX'0101',MASK-OK\017E F70241C
  968.     E
  969. 189  BSL TIMER3 Check and loop.\0182 18EC
  970. 190  BBS SBIT,RR9 Brif it won't clear CCIO.\0184 90920597
  971. 191 RR3 BBZ INP-RDY,RR9 Brif no input waiting.\0188 97060B97
  972. 192  SRA R15,MASK Point to scratch area.\018C E7043F
  973. 193  IOI R15,0,DEV-ADDR Dummy character read to\018F 4F0078
  974. 194  MOV X'0200',MASK-OK clear input flag.] MOV =TX'0200',MASK-OK\0192 F70241CD
  975. 195  BSL TIMER3 Check it out.\0196 18EC
  976. 196 RR9 RTN * It's ready.\0198 14
  977. 197  END]=TX'0200' :T X'0200'\0199 00\019A 0200]=TX'0101' :T X'0101'\019C 0101]=
  978.     TX'8000' :T X'8000'\019E 8000]=DX'004F00E0' :D X'004F00E0'\01A0 004F00E0]=T1
  979.      :T 1\01A4 0001]=T511 :T 511\01A6 01FF]=T3 :T 3\01A8 0003]=T5 :T 5\01AA 0005
  980.     ]=TX'0404' :T X'0404'\01AC 0404]=TX'80'+4 :T X'80'+4\01AE 0084
  981.  
  982.     DK1P
  983. 001  FRAME 451] FRM: 451\0001 7FF001C3] ORG 1\0001
  984. 002 *USER*KERMIT
  985. 003 *20 APR 1987
  986. 004 *2.2
  987. 005 *21 APR 1987
  988. 006 *JF3
  989. 007 *For PICK on PC/AT
  990. 008  B PINIT Initialize for printfile] B: INIT\0001 1E0D
  991. 009  B PNXTPKT Next print data packet] B: NXTPKT\0003 1E3A
  992. 010  B ctl Controlify a char] B: ctl\0005 1E74
  993. 011  B CINIT Init. for catalog data.
  994. 012  B CNXTPKT Next catalog packet.
  995. 013 BEGQTAB DTLY X'1302'\0007 00\0008 000068E6
  996. 014 PF-BEG DEFD 9,6 Printfile beginning.\    D 6 9
  997. 015 PF-CUR DEFS 9,3 Printfile pointer.\    S 3 9
  998. 016 PFCURDSP DEFT 9,3 PF-CUR displacement.\    T 3 9
  999. 017 PFCURFID DEFD 9,4 PF-CUR Frame ID.\    D 4 9
  1000. 018 PKTLEN TLY 80\000C 0050
  1001. 019 PINIT EQU *\000E
  1002. 020  BSL GINPARG Input arg to T0.\000E 187D
  1003. 021  ZERO R9WA Detatch reg.\0010 A0A440
  1004. 022  DIV 10 Entries per frame.] DIV =T10\0013 A14351
  1005. 023  ADD BEGQTAB To proper FID. \0016 A10493
  1006. 024  STORE R9FID Point to Q table.\0019 A0A699
  1007. 025  MOV D1,D0 Get remainder.\001C F0068004
  1008. 026  MUL 50 Bytes per entry.] MUL =T50\0020 A14450
  1009. 027  INC T0 Byte 1; linked format.\0023 A00743
  1010. 028  STORE R9DSP Point to table entry.\0026 A0A559
  1011. 029  MOV R9,SR27 Save pointer.\0029 E2B5D9
  1012. 030  MOV PF-BEG,PFCURFID Initialize pointer FID\002C F9048906
  1013. 031  ONE PFCURDSP and displacement.\0030 A90341
  1014. 032  MOV TSBEG,TS Reinit.\0033 E06EED
  1015. 033  MCI C'1',TS Return OK.\0036 4D3140
  1016. 034  B CRTN Done.] B: CRTN\0039 1E6A
  1017. 035 PNXTPKT EQU *\003B
  1018. 036  BSL GINPARG Check for length.\003B 187D
  1019. 037  STORE CTR39 # of chars.\003D A22159
  1020. 038  MOV SR27,R9 Point at table entry.\0040 E2B5E9
  1021. 039  MOV TSBEG,TS Init.\0043 E06EED
  1022. 040  MCC X'00',SC1 Spooler job filler.] SRARC R15,SC1\0046 E0043F] MCCNR X'00',R
  1023.     15\0049 4F0020
  1024. 041  MCC LF,SC2 Spooler job line term.] SRARC R15,SC2\004C E0053F] MCCNR LF,R15\
  1025.     004F 4F0A20
  1026. 042  MOV PF-CUR,R15 Point at data.\0052 E903EF
  1027. 043  BNZ CTR39,FIXLEN Brif no terminators.\0055 A221745D
  1028. 044  MIID R15,TS,X'83' Move thru a NUL or LF.\0059 6FD083
  1029. 045  B PKTDONE That's it.] B: PKTDONE\005C 1E67
  1030. 046 FIXLEN MII R15,TS Move next char.\005E 6FD2
  1031. 047  BCE R15,X'00',PKTDONE NUL is last char.] BC: R15,X'00',PKTDONE,5\0060 4F000
  1032.     A67
  1033. 048  BDNZ CTR39,FIXLEN Loop for more.\0064 A221645D
  1034. 049 PKTDONE MOV R15,PF-CUR Save for next packet.\0068 E903DF
  1035. 050 CRTN MCI SM,TS Terminate for\006B 4DFF40
  1036. 051  DEC TS CONV interface\006E 2D
  1037. 052  MOV TS,TSEND to BASIC.\006F E071DD
  1038. 053  ENT 1,CONV Over and out!\0072 10105A
  1039. 054 *
  1040. 055 ctl EQU * See PROTOCOL Manual 2.4.\0075
  1041. 056  MOV TSBEG,TS Init reg.\0075 E06EED
  1042. 057  INC TS To the byte.\0078 3D
  1043. 058  XOR TS,64 Thats it!\0079 4D4050
  1044. 059  B CRTN Finish up.] B: CRTN\007C 1E6A
  1045. 060 GINPARG EQU *\007E
  1046. 061  MOV TSBEG,R15 Init.\007E E06EEF
  1047. 062  BSL CVDR15 Conv to T0\0081 114008
  1048. 063  RTN * To caller.\0084 14
  1049. 064  END]=T10 :T 10\0085 00\0086 000A]=T50 :T 50\0088 0032
  1050.  
  1051.     DK2X
  1052. 001  FRAME 498] FRM: 498\000 7FF001F2] ORG 1\001
  1053. 002 *KERMIT
  1054. 003 *05JUN86
  1055. 004 *04
  1056. 005 *02E
  1057. 006 *FISHER
  1058. 007 DEV-ADDR DEFN 2 2610 address.\    N 2 1
  1059. 008 ST AR 7 Status reg.
  1060. 009 STATUS DEFH ST,0 Status byte.\    H 0 7
  1061. 010 CMPSTAT DEFT ST,0 Complete - both bytes\    T 0 7
  1062. 011 TAS DEFB ST,0 Test alternate status.\    B 0 7
  1063. 012 PE DEFB ST,2 Parity error.\    B 2 7
  1064. 013 FE DEFB ST,3 Framing error.\    B 3 7
  1065. 014 OE DEFB ST,4 Overrun error.\    B 4 7
  1066. 015 OUT-RDY DEFB ST,5 Output ready.\    B 5 7
  1067. 016 INP-RDY DEFB ST,6 Input ready.\    B 6 7
  1068. 017 NCCIO DEFB ST,7 Not concurrent i/o.\    B 7 7
  1069. 018 ALT-STAT DEFH ST,1 Alternate status.\    H 1 7
  1070. 019 DSR DEFB ST,13 Data Set Ready.\    B D 7
  1071. 020 ALT-FUNC DEFC ST,3 Alternate function.\    C 3 7
  1072. 021 RTS DEFB ST,30 Request To Send.\    B 1E 7
  1073. 022 MASK-STAT DEFH ST,2 Masked status HTLY.\    H 2 7
  1074. 023 MASK DEFH ST,4 Status mask.\    H 4 7
  1075. 024 OK DEFH ST,5 Status test condx.\    H 5 7
  1076. 025 MASK-OK DEFT ST,2 Above two combined.\    T 2 7
  1077. 026 PERIOD DEFH 0,38 Timeout seconds.\    H 26 0
  1078. 027 CT AR 9 Control Table reg.
  1079. 028 CTSAVE EQU AFEND A safe place?
  1080. 029 LASTIM EQU D9 Timer reset refer.
  1081. 030 EOL EQU PRMPC
  1082. 031  B XCHNP 01F2 Exchange packets.] B: XCHNP\001 1E04
  1083. 032  B SENDP 11F2 Send a packet thru i/f.] B: SENDP\003 1E35
  1084. 033 XCHNP EQU *\005
  1085. 034  MOV TSBEG,TS Init reg. and\005 E06EED
  1086. 035  INC TS inc to MARK char.\008 3D
  1087. 036  MCC TS,SC2 Move MARKER char.\009 D0050D
  1088. 037  SRA R15,PRMPC EOL in there.\00C E0023F
  1089. 038  BBS MBIT,MODEM Brif 2610 i/o.\00F 928C0055
  1090. 039  MCC R15,TS Get prompt (EOL).\013 6DF9
  1091. 040  MCAL TS,5,11 Lock buffer frame.\015 4D057B
  1092. 041  WRITE TS Send EOL as prompt.\018 6DDD
  1093. 042 Find-MARK READ TS Get next char.\01A 6DD5
  1094. 043  BCU TS,SC2,Find-MARK No MARKER yet.] BC: TS,SC2,Find-MARK,0\01C B005D019
  1095. 044 Next-char INC TS To next position.\020 3D
  1096. 045  READ TS Get next char.\021 6DD5
  1097. 046  BCU TS,PRMPC,Next-char Brif not end.] BC: TS,PRMPC,Next-char,0\023 B002D01F
  1098.  
  1099. 047  MCAL TS,6,11 Unlock buffer.\027 4D067B
  1100. 048  MCI SM,TS Terminate for CONV I/F.\02A 4DFF40
  1101. 049  BSL STR-PAR Strip 8th bit.\02D 1836
  1102. 050  DEC TS For return I/F.\02F 2D
  1103. 051  MOV TS,TSEND I/F Requirement.\030 E071DD
  1104. 052  ENT 1,CONV CONV Return.\033 10105A
  1105. 053 * * * * *Send a packet thru i/f only.* * * * *
  1106. 054 SENDP EQU *\036
  1107. 055  RTN * To DATA/BASIC.\036 14
  1108. 056 * * * * * Strip parity * * * * *
  1109. 057 STR-PAR EQU *\037
  1110. 058  MOV TSBEG,TS Init reg.\037 E06EED
  1111. 059 AGN? INC TS To next char.\03A 3D
  1112. 060  BCE TS,SM,RTN All done.] BC: TS,SM,RTN,2\03B 4DFF0843
  1113. 061  AND TS,X'7F' 8th bit = 0.\03F 4D7FE0
  1114. 062  B AGN? Loop.] B: AGN?\042 1E39
  1115. 063 RTN RTN * General return.\044 14
  1116. 064 * * * * *GET STATUS OF 2610 I/F BOARD IN STATUS BYTES* * * * *
  1117. 065 *
  1118. 066 *ENTRY: R7 POINTS TO PRIMARY STATUS BYTE LOCATION
  1119. 067 *EXIT:  ALT-STAT ZEROED IF TEST ALTERNATE STATUS BIT = 0
  1120. 068 *
  1121. 069 I/F-STAT EQU *\045
  1122. 070  IOI ST,1,DEV-ADDR Input 2610 status.\045 472078
  1123. 071  BBS TAS,TST-ALT Brif test alt. flagged\048 9700004F
  1124. 072  ZERO ALT-STAT else set alt.=X'00'\04C A70100
  1125. 073  RTN * and return.\04F 14
  1126. 074 TST-ALT INC ST To alternate byte.\050 37
  1127. 075  IOI ST,7,DEV-ADDR Input alt. status.\051 47E078
  1128. 076  DEC ST Back to proper position\054 27
  1129. 077   RTN * and return to caller.\055 14
  1130. 078 * * * * *
  1131. 079 *ENTRY: OB POINTS TO RX# ADDR CHAR
  1132. 080 *EXIT:   SBIT set means error condx in status byte(s).
  1133. 081 *
  1134. 082 IBENDDSP DEFT 0,231\    T E7 0
  1135. 083 MODEM EQU * Talk to 2610 board.\056
  1136. 084  BSL READY? Check for all OK.\056 191D
  1137. 085  BBS SBIT,SERR Brif can't clear it.\058 92920083
  1138. 086  IOO IB,2,DEV-ADDR Start a concurrent input.\05C 4A5078
  1139. 087  SRA R15,EOL Point your register.\05F E0023F
  1140. 088  IOO R15,0,DEV-ADDR Fire!\062 4F1078
  1141. 089  MOV X'0404',MASK-OK OUTPUT READY] MOV =TX'0404',MASK-OK\065 F70241B6
  1142. 090  B TIMER3 WAIT TILL FINISH.] B: TIMER3\069 1EBA
  1143. 091  MOV X'0101',MASK-OK MASK NOT CCIO.] MOV =TX'0101',MASK-OK\06B F70241B2
  1144. 092  MOV 5,PERIOD SET 5 SECOND TIMER AND] MOV =T5,PERIOD] LOADT =T5\06F A1B758]
  1145.     STOREH PERIOD\072 A02619
  1146. 093  BSL RDY-TIMER WAIT TILL DONE.\075 18C0
  1147. 094  BBZ SBIT,READ-DONE BRIF FINISHED.\077 92920892
  1148. 095  IOO R15,4,DEV-ADDR DISCONNECT.\07B 4F9078
  1149. 096  MOV X'0101',MASK-OK NOT CONC. SET.] MOV =TX'0101',MASK-OK\07E F70241B2
  1150. 097  BSL TIMER3 WAIT FOR DISCONNECT INTERUPT.\082 18BA
  1151. 098 SERR EQU * OUTPUT STATUS ERROR MSG.\084
  1152. 099  LOAD 1 STATUS ERR MSG #.] LOAD =T1\084 A1B458
  1153. 100  BSL EMSGA SETUP MSG ID.\087 1912
  1154. 101  MBXN 4,CMPSTAT,TS STATUS PARAMETER.] LOAD =TX'80'+4\089 A1B958] MBX CMPSTAT
  1155.     ,TS\08C D7007D
  1156. 102  BSL EMSGZ COMPLETE MSG BODY & PRINT.\08F 1913
  1157. 103  B FAULT BACK TO CALLER.] B: FAULT\091 1EA4
  1158. 104 READ-DONE EQU * DATA READ COMPLETE.\093
  1159. 105  MOV IBBEG,IB RESTORE IB.\093 E0E4EA
  1160. 106  MOV IBBEG,IBEND POINT IBEND TO\096 F0E7C0E4
  1161. 107  MOV 511,IBENDDSP END OF FRAME.] MOV =T511,IBENDDSP\09A F0E741B8
  1162. 108 EOL-LOOP SCD IB,X'86' Scan to EOL or NUL.\09E 6A0886
  1163. 109  BCE IB,EOL,EOL1 Brif EOL character.
  1164. 110 FAULT SB FBIT Flag an uh-oh.
  1165. 111  B PKT-DONE1 No good packet.
  1166. 112 EOL1 BE IB,IBEND,REC-DONE BRIF END OF REC.] BT: IB,IBEND,REC-DONE,2] BR:2 IB
  1167.     ,IBEND,REC-DONE\0A9 C0E7A8B1
  1168. 113  MCI SM,IB OVERWRITE CR WITH AM\0AD 4AFE20
  1169. 114  B EOL-LOOP and continue.] B: EOL-LOOP\0B0 1E9D
  1170. 115 REC-DONE ZB FBIT NO FAULT.\0B2 7285
  1171. 116 REC-DONE1 MCC SM,IBEND TERMINATE FOR UPDITM.] MOVSR IBEND,R15\0B4 E0E7EF] MC
  1172.     CNR SM,R15\0B7 4FFF20
  1173. 117  RTN * TO CALLER.\0BA 14
  1174. 118 * * * * *GET STATUS, MASK AND CHECK FOR READY WITH TIMER* * * * *
  1175. 119 TIMER3 MOV 3,PERIOD Seconds to timeout.] MOV =T3,PERIOD] LOADT =T3\0BB A1B55
  1176.     8] STOREH PERIOD\0BE A02619
  1177. 120 RDY-TIMER TIME * Get time into D0.\0C1 40007A
  1178. 121  ADD PERIOD To figure wakeup time\0C4 A02613
  1179. 122  STORE D2 and save it.\0C7 A01899
  1180. 123 SLOOP BSL I/F-STAT Get status byte(s).\0CA 1844
  1181. 124  MOV X'004F00E0',D1 Set up] MOV =DX'004F00E0',D1\0CC F00481AF
  1182. 125  MOV MASK,H5 an 'AND' instr. in\0D0 F00A0704
  1183. 126  LOAD R0FID D1 to mask status.\0D4 A08298
  1184. 127  MCC X'14',R0;C12 Set up a 'RTN' instr.] SRARC R15,R0;C12\0D7 E00C3F] MCCNR
  1185.     X'14',R15\0DA 4F1420
  1186. 128  SRA R15,H1 Set entry point\0DD E00E3F
  1187. 129  AND R15,X'0F' in upper half\0E0 4F0FE0
  1188. 130  OR R15,X'40' of H1 as 4.\0E3 4F40C0
  1189. 131  SRA R15,MASK-STAT Move the last\0E6 E7023F
  1190. 132  MCC ST,R15 status to buffer.\0E9 6F79
  1191. 133  BSLI * Mask it.\0EB 13
  1192. 134  BU MASK-STAT,OK,STIM Brif not OK.] BT: MASK-STAT,OK,STIM,0\0EC F7021705\0F0
  1193.      50F5
  1194. 135  ZB SBIT Clear status check flag.\0F2 7292
  1195. 136  B TIMER-RTN All is OK.] B: TIMER-RTN\0F4 1F11
  1196. 137 STIM RQM * Pause for awhile.\0F6 400079
  1197. 138  TIME * Check the time.\0F9 40007A
  1198. 139  BLE LASTIM,D0,CTIM Clock not reset.] BT: LASTIM,D0,CTIM,3\0FC F2399006\100
  1199.     5D09
  1200. 140  MOV CT,CTSAVE Save for later.\102 E0DBD9
  1201. 141  MOV CTSAVE,CT Restroe register.\105 E0DBE9
  1202. 142  B RDY-TIMER Now try again.] B: RDY-TIMER\108 1EC0
  1203. 143 CTIM BL D0,D2,SLOOP Brif not yet timed out.] BT: D0,D2,SLOOP,1\10A F0069018\
  1204.     10E 54C9
  1205. 144  SB SBIT Flag bad status.\110 8292
  1206. 145 TIMER-RTN RTN * To caller.\112 14
  1207. 146 * * * * *STATUS ERROR PROCESSING* * * * *
  1208. 147 EMSGA EQU * SETUP ERROR MSG ID.\113
  1209. 148  RTN * TO CALLER.\113 14
  1210. 149 * * * * *TERMINATE ERROR MSG BODY AND PRINT* * * * *
  1211. 150 EMSGZ MCI SM,TS TERMINATOR.\114 4DFF40
  1212. 151  MOV TSBEG,TS FOR PRTERR I/F\117 E06EED
  1213. 152  BSL PRTERR PRINT MESSAGE.\11A 11000C
  1214. 153  RTN * TO CALLER.\11D 14
  1215. 154 * * * * *CHECK STATUS FOR READY TO SEND* * * * *
  1216. 155 READY? EQU *\11E
  1217. 156  BSL I/F-STAT Get status of i/f.\11E 1844
  1218. 157  BBZ TAS,RR1 Brif alt. status OK.\120 9700092D
  1219. 158  MOV X'8000',MASK-OK Alt. status clear.] MOV =TX'8000',MASK-OK\124 F70241B1
  1220. 159  BSL TIMER3 Check if ready.\128 18BA
  1221. 160  BBS SBIT,RR9 Brif it won't come ready.\12A 9292015C
  1222. 161 RR1 BBS OUT-RDY,RR2 Brif OK for output.\12E 9705013B
  1223. 162  MOV X'0404',MASK-OK Output ready set.] MOV =TX'0404',MASK-OK\132 F70241B6
  1224. 163  BSL TIMER3 Check if ready.\136 18BA
  1225. 164  BBS SBIT,RR9 Brif it won't come ready.\138 9292015C
  1226. 165 RR2 BBS NCCIO,RR3 Brif not concurrent.\13C 9707014C
  1227. 166  IOO R15,4,DEV-ADDR Disconnect.\140 4F9078
  1228. 167  MOV X'0101',MASK-OK Not concurrent set.] MOV =TX'0101',MASK-OK\143 F70241B2
  1229.  
  1230. 168  BSL TIMER3 Check and loop.\147 18BA
  1231. 169  BBS SBIT,RR9 Brif it won't clear CCIO.\149 9292015C
  1232. 170 RR3 BBZ INP-RDY,RR9 Brif no input waiting.\14D 9706095C
  1233. 171  SRA R15,MASK Point to scratch area.\151 E7043F
  1234. 172  IOI R15,0,DEV-ADDR Dummy character read to\154 4F0078
  1235. 173  MOV X'0200',MASK-OK clear input flag.] MOV =TX'0200',MASK-OK\157 F70241B3
  1236. 174  BSL TIMER3 Check it out.\15B 18BA
  1237. 175 RR9 RTN * It's ready.\15D 14
  1238. 176  END]=DX'004F00E0' :D X'004F00E0'\15E 004F00E0]=TX'8000' :T X'8000'\162 8000
  1239.     ]=TX'0101' :T X'0101'\164 0101]=TX'0200' :T X'0200'\166 0200]=T1 :T 1\168 00
  1240.     01]=T3 :T 3\16A 0003]=TX'0404' :T X'0404'\16C 0404]=T5 :T 5\16E 0005]=T511 :
  1241.     T 511\170 01FF]=TX'80'+4 :T X'80'+4\172 0084\FFE 9D31
  1242.  
  1243.