.MAIN. RT-11 MACRO VM02-09 22-NOV-78 21:34:41 PAGE 1 1 ;TSTE.MAC - TIME SHARE TERMINAL EMULATOR UNDER RT-11 2 ;VERSION 1.0 31-OCT-78 3 ;BY T.L.STARR AND L.T.NIEH 4 ;GENERAL ELECTRIC CO 5 ;APPLIANCE PARK 35-1101 6 ;LOUISVILLE, KENTUCKY 40225 7 ;CTRL T = TRANSMIT RK0:OUT.DAT FILE 8 ;CTRL R = OPEN RECEIVER RK0:IN.DAT FILE 9 ;CTRL D = CLOSE RECEIVER RK0:IN.DAT FILE 10 ;CTRL K = BREAK 11 ;CTRL N = CONTROL SHIFT CHARACTER 12 000340 RVEC=340 ;DL11-E VECTOR ADDRESS 13 175610 RCSR=175610 ;DL11-E RECEIVE STATUS ADDRESS 14 175612 RBUF=175612 ;DL11-E RECEIVE BUFFER ADDRESS 15 175614 XCSR=175614 ;DL11-E TRANSMIT STATUS ADDRESS 16 175616 XBUF=175616 ;DL11-E TRANSMIT BUFFER ADDRESS 17 000024 CTRLT=24 ;CONTROL T 18 000022 CTRLR=22 ;CONTROL R 19 000004 CTRLD=4 ;CONTROL D 20 000013 CTRLK=13 ;CONTROL K 21 000016 CTRLN=16 ;CONTROL N 22 000377 RUBOUT=377 ;RUBOUT 23 000052 ERRWD=52 ;ERROR WORD 24 000044 JSW=44 ;JOB STATUS WORD 25 000002 OUTCHN=2 ;TRANSMIT CHANNEL NO. 26 000003 INCHN=3 ;RECIEVE CHANNEL NO. 27 000015 CR=15 ;CARRAGE RETURN 28 000012 LF=12 ;LINE FEED 29 ;***************************************************** 30 .MCALL ..V2..,.REGDEF,.PRINT,.EXIT,.INTEN,.SYNCH 31 .MCALL .ENTER,.LOOKUP,.READ,.WRITE,.FETCH,.GTJB 32 .MCALL .TTINR,.TTYOUT,.WAIT,.WRITW,.CLOSE,.READW 33 00000 ..V2.. 34 00000 .REGDEF 35 ;***************************************************** 36 00000 012737 START: MOV #RINT,@#RVEC ;LOAD DL11-E INT VECTOR 001350' 000340 37 00006 012737 MOV #200,@#RVEC+2 ;BR4 000200 000342 38 00014 012737 MOV #100,@#RCSR ;ENABLE INTERRUPT 000100 175610 39 00022 012705 MOV #JOB,R5 001532' 40 00026 .GTJB #AREA,R5 ;GET JOB NUMBER 41 00044 011567 MOV (R5),AREA2+2 001530 42 00050 .FETCH #FREE,#IN ;GET RK DISK HANDLER 43 00062 103002 BCC 1$ 44 00064 004767 JSR PC,FERR ;FETCH ERROR 001322 45 00070 012767 1$: MOV #BUFA,ADDR ;RING BUFFER ADR PTR 002246' 001422 46 00076 012767 MOV #10000,CNT ;RING BUFFER CHAR COUNT .MAIN. RT-11 MACRO VM02-09 22-NOV-78 21:34:41 PAGE 1+ 010000 001416 47 00104 005067 CLR BCOUNT ;ACTIVE CHAR COUNT 001420 48 00110 012767 MOV #BUFA,ADDR2 ;PROCESS ADR POINTER 002246' 001406 49 00116 012767 MOV #10000,CNT2 ;PROCESS CHAR COUNT 010000 001402 50 00124 .PRINT #MSGA ;READY TO LOOP 51 ;***************************************************** 52 ;MAIN PROGRAM LOOP 53 00132 004767 READY: JSR PC,PRINT ;CHECK PRINT BUFFER 000752 54 00136 052737 BIS #10000,@#JSW ;KEYBOARD IN SPECIAL MODE 010000 000044 55 00144 .TTINR ;KEYBOARD INPUT ? 56 00146 103771 BCS READY ;NO KEYBORAD INPUT, SKIP 57 00150 120027 CMPB R0,#12 ;LF ? 000012 58 00154 001766 BEQ READY ;YES, SKIP 59 00156 120027 CMPB R0,#CTRLT ;TRANSMIT FILE ? 000024 60 00162 001003 BNE 1$ 61 00164 004767 JSR PC,TRANS 000072 62 00170 000760 BR READY 63 00172 120027 1$: CMPB R0,#CTRLR ;OPEN RECEIVER FILE ? 000022 64 00176 001003 BNE 2$ 65 00200 004767 JSR PC,OPEN 000270 66 00204 000752 BR READY 67 00206 120027 2$: CMPB R0,#CTRLD ;CLOSE RECEIVER FILE ? 000004 68 00212 001003 BNE 3$ 69 00214 004767 JSR PC,CLOSE 000372 70 00220 000744 BR READY 71 00222 120027 3$: CMPB R0,#CTRLK ;BREAK CHARACTER ? 000013 72 00226 001003 BNE 4$ 73 00230 004767 JSR PC,BREAK 000524 74 00234 000736 BR READY 75 00236 120027 4$: CMPB R0,#CTRLN ;CONTROL SHIFT ? 000016 76 00242 001004 BNE 9$ 77 00244 152767 BISB #100,SHIFT ;SET SHIFT MASK 000100 001350 78 00252 000727 BR READY 79 00254 004767 9$: JSR PC,SEND ;SEND ALL OTHER CHAR 000544 80 00260 000724 BR READY .MAIN. RT-11 MACRO VM02-09 22-NOV-78 21:34:41 PAGE 1+ 81 ;***************************************************** 82 ;TRANSMIT RK0:OUT.DAT FILE TO REMOTE COMPUTER 83 00262 TRANS: .PRINT #MSGD 84 00270 .LOOKUP #AREA,#OUTCHN, #OUT ;OPEN OUT.DAT FILE 85 00320 103002 BCC 11$ 86 00322 004767 JSR PC,FLERR ;OPEN ERROR 001074 87 00326 005002 11$: CLR R2 ;BLOCK NO 88 00330 1$: .READW #AREA,#OUTCHN,#BUFC,#256.,R2 ;READ A BLOCK 89 00374 103417 BCS 4$ ;READ ERROR OR EOF ? 90 00376 012704 MOV #512.,R4 ;NO, CHAR COUNT 001000 91 00402 012705 MOV #BUFC,R5 ;POINT TO BUFFER 013246' 92 00406 112500 2$: MOVB (R5)+,R0 ;GET CHAR 93 00410 105700 TSTB R0 ;NULL ? 94 00412 001404 BEQ 3$ ;YES, SKIP 95 00414 004767 JSR PC,SEND ;SEND CHARACTER 000404 96 00420 004767 JSR PC,PRINT ;CHECK ECHO 000464 97 00424 005304 3$: DEC R4 ;DEC CHAR COUNT 98 00426 001367 BNE 2$ ;BLOCK DONE ? 99 00430 005202 INC R2 ;YES, NEXT BLOCK 100 0432 000736 BR 1$ ;AGAIN 101 0434 105737 4$: TSTB @#ERRWD ;EOF ? 000052 102 0440 001402 BEQ 9$ ;YES, DONE 103 0442 004767 JSR PC,RDERR ;READ ERROR 000774 104 0446 9$: .CLOSE #OUTCHN ;CLOSE FILE 105 0460 004767 JSR PC,PRINT ;CHECK PRINT 000424 106 0464 .PRINT #MSGC ;FILE TRANSMITTED 107 0472 000207 RTS PC 108 ;***************************************************** 109 ;OPEN IN.DAT FILE 110 0474 OPEN: .PRINT #MSGE 111 0502 .WAIT #INCHN ;CHANNEL ACTIVE ? 112 0514 103404 BCS 1$ ;NO, CHANNEL AVAILABLE 113 0516 .PRINT #OPNERR ;FILE ALREADY OPEN, SKIP 114 0524 000431 BR 9$ 115 0526 1$: .ENTER #INAREA,#INCHN,#IN ;OPEN RECEIVER FILE 116 0562 103002 BCC 2$ ;ERROR ? 117 0564 004767 JSR PC,FLERR ;YES, OPEN ERROR 000632 118 0570 012767 2$: MOV #BUFB,INPNT ;BUFFER POINTER 012246' 000714 119 0576 005067 CLR INBLK ;BLOCK COUNT 000712 120 0602 012767 MOV #512.,INCHR ;CHARACTER COUNT 001000 000706 121 0610 000207 9$: RTS PC 122 ;***************************************************** 123 0612 CLOSE: .WAIT #INCHN ;CHANNEL ACTIVE ? .MAIN. RT-11 MACRO VM02-09 22-NOV-78 21:34:41 PAGE 1+ 124 0624 103004 BCC 1$ ;YES, CAN CLOSE 125 0626 .PRINT #CLSERR ;NO, ALREADY CLOSED 126 0634 000450 BR 9$ 127 0636 112777 1$: MOVB #0,@INPNT ;PAD BUFFER WITH NULLS 000000 000646 128 0644 005267 INC INPNT 000642 129 0650 005367 DEC INCHR 000642 130 0654 001370 BNE 1$ 131 0656 012701 MOV #BUFB,R1 ;WRITE LAST BLOCK 012246' 132 0662 016703 MOV INBLK,R3 000626 133 0666 .WRITW #AREA,#INCHN,R1,#256.,R3 134 0730 103002 BCC 2$ ;ERROR ? 135 0732 004767 JSR PC,WRTERR ;WRITE ERROR 000474 136 0736 2$: .CLOSE #INCHN ;CLOSE FILE 137 0750 .PRINT #MSGB ;FILE CLOSED 138 0756 000207 9$: RTS PC 139 ;***************************************************** 140 0760 005000 BREAK: CLR R0 141 0762 004767 JSR PC,SEND1 ;SEND A NULL 000076 142 0766 012700 MOV #30.,R0 000036 143 0772 052737 1$: BIS #1,@#XCSR ;SET BREAK BIT 000001 175614 144 1000 004767 JSR PC,SEND1 ;SEND A NULL, 30 TIMES 000060 145 1004 005300 DEC R0 146 1006 001371 BNE 1$ 147 1010 004767 JSR PC,SEND1 ;SEND A NULL 000050 148 1014 042737 BIC #1,@#XCSR ;CLEAR BREAK BIT 000001 175614 149 1022 000207 RTS PC 150 ;***************************************************** 151 ;TRANSMIT A CHARACTER TO REMOTE 152 1024 004767 SEND: JSR PC,SEND1 ;SEND CHARACTER 000034 153 1030 120027 CMPB R0,#12 ;WAS IT A LF ? 000012 154 1034 001012 BNE 9$ ;NO, SKIP 155 1036 016767 MOV FILL,FILL1 ;SET NO. OF FILL CHAR 000554 000554 156 1044 112700 MOVB #RUBOUT,R0 000377 157 1050 004767 1$: JSR PC,SEND1 ;SEND RUBOUTS 000010 158 1054 005367 DEC FILL1 000540 .MAIN. RT-11 MACRO VM02-09 22-NOV-78 21:34:41 PAGE 1+ 159 1060 001373 BNE 1$ 160 1062 000207 9$: RTS PC 161 1064 105737 SEND1: TSTB @#XCSR ;BUSY ? 175614 162 1070 100375 BPL SEND1 ;AGAIN 163 1072 146700 BICB SHIFT,R0 ;NO, MASK CONTROL SHIFT 000524 164 1076 110037 MOVB R0,@#XBUF ;SEND CHAR 175616 165 1102 105067 CLRB SHIFT ;CLEAR CONTROL SHIFT BYTE 000514 166 1106 000207 RTS PC 167 ;***************************************************** 168 ;PRINT REMOTE INPUTS AND TRANSMISSION ECHOS 169 1110 005767 PRINT: TST BCOUNT ;ANY THING IN BUFFER ? 000414 170 1114 001514 BEQ 9$ ;NO, SKIP 171 1116 010046 MOV R0,-(SP) ;SAVE REG R0 172 1120 117700 1$: MOVB @ADDR2,R0 ;GET CHARACTER 000400 173 1124 142700 BICB #200,R0 ;STRIP PARITY BIT 000200 174 1130 005267 INC ADDR2 ;ADVENCE PROC ADR PTR 000370 175 1134 005367 DEC BCOUNT ;DEC ACTIVE CHAR COUNT 000370 176 1140 005367 DEC CNT2 ;DEC PROC CHAR COUNT 000362 177 1144 001006 BNE 4$ ;END OF REC. BUFFER ? 178 1146 012767 MOV #BUFA,ADDR2 ;YES, RESET PROC ADR PTR 002246' 000350 179 1154 012767 MOV #10000,CNT2 ;RESET PROC CHAR COUNT 010000 000344 180 1162 110067 4$: MOVB R0,CHRSAV ;SAVE CHARACTER 000426 181 1166 .TTYOUT ;PRINT IT 182 1172 .WAIT #INCHN ;RECEIVER FILE ACTIVE ? 183 1204 103454 BCS 3$ ;NO, SKIP 184 1206 126727 CMPB CHRSAV,#177 ;RUBOUT ? 000402 000177 185 1214 001450 BEQ 3$ ;YES, SKIP 186 1216 116777 MOVB CHRSAV,@INPNT ;MOVE CHAR TO IN BUFFER 000372 000266 187 1224 005267 INC INPNT ;ADVANCE POINTER 000262 188 1230 005367 DEC INCHR ;BLOCK FULL? 000262 189 1234 001040 BNE 3$ ;NO, SKIP 190 1236 012701 MOV #BUFB,R1 ;YES, WRITE A BLOCK 012246' 191 1242 016703 MOV INBLK,R3 000246 192 1246 .WRITE #AREA,#INCHN,R1,#256.,R3 .MAIN. RT-11 MACRO VM02-09 22-NOV-78 21:34:41 PAGE 1+ 193 1310 103002 BCC 2$ 194 1312 004767 JSR PC,WRTERR ;WRITE ERROR 000114 195 1316 005267 2$: INC INBLK ;RESET POINTERS 000172 196 1322 012767 MOV #512.,INCHR 001000 000166 197 1330 012767 MOV #BUFB,INPNT 012246' 000154 198 1336 005767 3$: TST BCOUNT ;DONE ? 000166 199 1342 001266 BNE 1$ ;NO, AGAIN 200 1344 012600 MOV (SP)+,R0 201 1346 000207 9$: RTS PC 202 ;***************************************************** 203 ;INTERRUPT SERVICE ROUTINE 204 1350 005267 RINT: INC BCOUNT ;INC ACTIVE CHAR COUNT 000154 205 1354 113777 MOVB @#RBUF,@ADDR ;MOVE TO RING BUFFER 175612 000136 206 1362 005267 INC ADDR ;ADVANCE ADR POINTER 000132 207 1366 005367 DEC CNT ;DEC RING BUFFER CHAR CNT 000130 208 1372 001006 BNE 9$ ;END OF BUFFER ? 209 1374 012767 MOV #BUFA,ADDR ;YES, RESET POINTERS 002246' 000116 210 1402 012767 MOV #10000,CNT 010000 000112 211 1410 000002 9$: RTI 212 ;***************************************************** 213 ;FATAL ERRORS - ABNORMAL TERMINATION 214 1412 FERR: .PRINT #MSG1 ;FETCH ERROR 215 1420 .EXIT 216 1422 FLERR: .PRINT #MSG2 ;OPEN FILE ERROR 217 1430 .EXIT 218 1432 WRTERR: .PRINT #MSG5 ;WRITE ERROR 219 1440 .EXIT 220 1442 RDERR: .PRINT #MSG3 ;READ ERROR 221 1450 .EXIT 222 ;***************************************************** 223 1452 071070 OUT: .RAD50 "RK " ;TRANSMIT FILE 224 1454 060434 .RAD50 "OUT" 225 1456 000000 .RAD50 " " 226 1460 014474 .RAD50 "DAT" 227 1462 071070 IN: .RAD50 "RK " ;RECEIVE FILE 228 1464 035160 .RAD50 "IN " 229 1466 000000 .RAD50 " " 230 1470 014474 .RAD50 "DAT" 231 1472 INAREA: .BLKW 10 232 1512 000000 INPNT: .WORD 0 ;RECEIVE BUFFER POINTER 233 1514 000000 INBLK: .WORD 0 ;RECEIVE BLOCK COUNT .MAIN. RT-11 MACRO VM02-09 22-NOV-78 21:34:41 PAGE 1+ 234 1516 000000 INCHR: .WORD 0 ;RECEIVE CHAR COUNT 235 1520 000000 ADDR: .WORD 0 ;RING BUFFER ADR PTR 236 1522 000000 CNT: .WORD 0 ;RING BUFFER CHAR COUNT 237 1524 000000 ADDR2: .WORD 0 ;PROCESS ADR PTR 238 1526 000000 CNT2: .WORD 0 ;PROCESS CHAR COUNT 239 1530 000000 BCOUNT: .WORD 0 ;ACTIVE CHAR COUNT 240 1532 JOB: .BLKW 12 241 1556 AREA: .BLKW 10 242 1576 AREA2: .BLKW 5 243 1610 177777 .WORD -1 244 1612 000000 .WORD 0 245 1614 000000 CHRSAV: .WORD 0 246 1616 000004 FILL: .WORD 4 ;FILL CHAR COUNT 247 1620 000000 FILL1: .WORD 0 ;TEMP. FILL CHAR CNT 248 1622 000 SHIFT: .BYTE 0,0 ;CONTROL SHIFT MASK 1623 000 249 1624 015 MSGA: .ASCIZ "# READY FOR REMOTE COMPUTER" 1625 012 1626 043 1627 040 1630 040 1631 122 1632 105 1633 101 1634 104 1635 131 1636 040 1637 106 1640 117 1641 122 1642 040 1643 122 1644 105 1645 115 1646 117 1647 124 1650 105 1651 040 1652 103 1653 117 1654 115 1655 120 1656 125 1657 124 1660 105 1661 122 1662 000 250 1663 015 MSGB: .ASCIZ "# IN.DAT CLOSED" 1664 012 1665 043 1666 040 1667 040 1670 111 1671 116 1672 056 1673 104 1674 101 .MAIN. RT-11 MACRO VM02-09 22-NOV-78 21:34:41 PAGE 1+ 1675 124 1676 040 1677 103 1700 114 1701 117 1702 123 1703 105 1704 104 1705 000 251 1706 015 MSGD: .ASCIZ "# TRANSMIT OUT.DAT FILE" 1707 012 1710 043 1711 040 1712 040 1713 124 1714 122 1715 101 1716 116 1717 123 1720 115 1721 111 1722 124 1723 040 1724 117 1725 125 1726 124 1727 056 1730 104 1731 101 1732 124 1733 040 1734 106 1735 111 1736 114 1737 105 1740 000 252 1741 015 MSGC: .ASCIZ "# OUT.DAT FILE TRANSMITTED" 1742 012 1743 043 1744 040 1745 040 1746 117 1747 125 1750 124 1751 056 1752 104 1753 101 1754 124 1755 040 1756 106 1757 111 1760 114 1761 105 1762 040 1763 124 1764 122 1765 101 .MAIN. RT-11 MACRO VM02-09 22-NOV-78 21:34:41 PAGE 1+ 1766 116 1767 123 1770 115 1771 111 1772 124 1773 124 1774 105 1775 104 1776 000 253 1777 015 MSGE: .ASCIZ "# OPEN IN.DAT FILE FOR INPUT" 2000 012 2001 043 2002 040 2003 040 2004 117 2005 120 2006 105 2007 116 2010 040 2011 111 2012 116 2013 056 2014 104 2015 101 2016 124 2017 040 2020 106 2021 111 2022 114 2023 105 2024 040 2025 106 2026 117 2027 122 2030 040 2031 111 2032 116 2033 120 2034 125 2035 124 2036 000 254 2037 015 MSG1: .ASCIZ "# DEVICE NOT FOUND" 2040 012 2041 043 2042 040 2043 040 2044 104 2045 105 2046 126 2047 111 2050 103 2051 105 2052 040 2053 116 2054 117 2055 124 2056 040 .MAIN. RT-11 MACRO VM02-09 22-NOV-78 21:34:41 PAGE 1+ 2057 106 2060 117 2061 125 2062 116 2063 104 2064 000 255 2065 015 MSG2: .ASCIZ "# FILE OPEN ERROR" 2066 012 2067 043 2070 040 2071 040 2072 106 2073 111 2074 114 2075 105 2076 040 2077 117 2100 120 2101 105 2102 116 2103 040 2104 105 2105 122 2106 122 2107 117 2110 122 2111 000 256 2112 015 MSG3: .ASCIZ "# FILE READ ERROR" 2113 012 2114 043 2115 040 2116 040 2117 106 2120 111 2121 114 2122 105 2123 040 2124 122 2125 105 2126 101 2127 104 2130 040 2131 105 2132 122 2133 122 2134 117 2135 122 2136 000 257 2137 015 MSG5: .ASCIZ "# FILE WRITE ERROR" 2140 012 2141 043 2142 040 2143 040 2144 106 2145 111 2146 114 2147 105 .MAIN. RT-11 MACRO VM02-09 22-NOV-78 21:34:41 PAGE 1+ 2150 040 2151 127 2152 122 2153 111 2154 124 2155 105 2156 040 2157 105 2160 122 2161 122 2162 117 2163 122 2164 000 258 2165 015 OPNERR: .ASCIZ "# FILE ALREADY OPEN" 2166 012 2167 043 2170 040 2171 040 2172 106 2173 111 2174 114 2175 105 2176 040 2177 101 2200 114 2201 122 2202 105 2203 101 2204 104 2205 131 2206 040 2207 117 2210 120 2211 105 2212 116 2213 000 259 2214 015 CLSERR: .ASCIZ "# FILE ALREADY CLOSED" 2215 012 2216 043 2217 040 2220 040 2221 106 2222 111 2223 114 2224 105 2225 040 2226 101 2227 114 2230 122 2231 105 2232 101 2233 104 2234 131 2235 040 2236 103 2237 114 2240 117 .MAIN. RT-11 MACRO VM02-09 22-NOV-78 21:34:41 PAGE 1+ 2241 123 2242 105 2243 104 2244 000 260 .EVEN 261 2246 BUFA: .BLKW 4000 ;RING BUFFER 262 2246 BUFB: .BLKW 256. ;RECIEVE BUFFER 263 3246 BUFC: .BLKW 256. ;TRANSMIT BUFFER 264 4246 014250'FREE: .+2 ;START OF FREE CORE 265 000000' .END START .MAIN. RT-11 MACRO VM02-09 22-NOV-78 21:34:41 PAGE 1+ SYMBOL TABLE ADDR 001520R ADDR2 001524R AREA 001556R AREA2 001576R BCOUNT 001530R BREAK 000760R BUFA 002246R BUFB 012246R BUFC 013246R CHRSAV 001614R CLOSE 000612R CLSERR 002214R CNT 001522R CNT2 001526R CR = 000015 CTRLD = 000004 CTRLK = 000013 CTRLN = 000016 CTRLR = 000022 CTRLT = 000024 ERRWD = 000052 FERR 001412R FILL 001616R FILL1 001620R FLERR 001422R FREE 014246R IN 001462R INAREA 001472R INBLK 001514R INCHN = 000003 INCHR 001516R INPNT 001512R JOB 001532R JSW = 000044 LF = 000012 MSGA 001624R MSGB 001663R MSGC 001741R MSGD 001706R MSGE 001777R MSG1 002037R MSG2 002065R MSG3 002112R MSG5 002137R OPEN 000474R OPNERR 002165R OUT 001452R OUTCHN= 000002 PC =%000007 PRINT 001110R RBUF = 175612 RCSR = 175610 RDERR 001442R READY 000132R RINT 001350R RUBOUT= 000377 RVEC = 000340 R0 =%000000 R1 =%000001 R2 =%000002 R3 =%000003 R4 =%000004 R5 =%000005 SEND 001024R SEND1 001064R SHIFT 001622R SP =%000006 START 000000R TRANS 000262R WRTERR 001432R XBUF = 175616 XCSR = 175614 ...V2 = 000001 . ABS. 000000 000 014250 001 ERRORS DETECTED: 0 FREE CORE: 16506. WORDS TSTE.OBJ,TSTE.LST=TSTE.MAC,SYSMAC.SML RT-11 LINK V03-01 LOAD MAP TSTE .SAV 22-NOV-78 SECTION ADDR SIZE ENTRY ADDR ENTRY ADDR ENTRY ADDR . ABS. 000000 001000 001000 014250 TRANSFER ADDRESS = 001000 HIGH LIMIT = 015250