home *** CD-ROM | disk | FTP | other *** search
/ RBBS in a Box Volume 1 #3.1 / RBBSIABOX31.cdr / kba1 / jr_modem.bas < prev    next >
BASIC Source File  |  1990-10-01  |  16KB  |  328 lines

  1. 10 '                   JR-MODEM.BAS     Jody Donaldson  9/7/84
  2. 20 '             Communications Program For IBM-PC jr. and Hayes Smartmodem
  3. 30 '
  4. 40 '    Based on Russ Lane's IBMODEM.BAS
  5. 45 '
  6. 50 '    You can added your own long distance service (MCI, etc.) prefix
  7. 51 '    codes in Line 6520 -- Be sure to include the commas for the pauses
  8. 52 '    on the SmartModem.
  9. 60 '
  10. 62 '    BE SURE TO RUN THIS PROGRAM IN THIS MANNER ONLY:
  11. 64 '    A>BASIC JR-MODEM /C:2048
  12. 66 '    At 1200 baud the normal buffer of 128 overflows quickly.
  13. 70 '                 In order for the hang-up command to work,
  14. 80 '                 you MUST flip switch #1 on the modem UP.
  15. 85 '                      (You should have it up anyway.)
  16. 87 '
  17. 90 SCREEN 0,0,0,0 : LOCATE ,,1 : WIDTH 80 : KEY OFF : CLOSE
  18. 95 ON ERROR GOTO 1000
  19. 100        ' Set Variable Defaults ---------------------------------------
  20. 110 DEFINT A-Z              ' All Variables Are Integers
  21. 120 ONLINE = -1           ' Start On-Line
  22. 130 EVEN   = -1           ' Even Parity, 7 Bit Word Structure
  23. 140 PRINTER=  0           ' Printer Off
  24. 150 DISK   =  0           ' Disk(s) Off
  25. 160 LOCAL  =  0 : HOST=0      ' Echoes  Off
  26. 170 BK$=CHR$(29)+CHR$(32)+CHR$(29)' Clean Backspace For Local PC
  27. 180 SOH$=CHR$(1)  :  EOT$=CHR$(4)  : ACK$=CHR$(6)
  28. 190 XON$=CHR$(17) : XOFF$=CHR$(19) : NAK$=CHR$(21) : CAN$=CHR$(24)
  29. 200        ' Define Funtion Keys -----------------------------------------
  30. 210 KEY(1)ON:ON KEY(1)GOSUB 3100
  31. 220 KEY(2)ON:ON KEY(2)GOSUB 3200
  32. 230 KEY(3)ON:ON KEY(3)GOSUB 3300
  33. 240 KEY(4)ON:ON KEY(4)GOSUB 3400
  34. 250 KEY(5)ON:ON KEY(5)GOSUB 3500
  35. 260 KEY(6)ON:ON KEY(6)GOSUB 3600
  36. 270 KEY(7)ON:ON KEY(7)GOSUB 3700
  37. 280 KEY(8)ON:ON KEY(8)GOSUB 3800
  38. 290 KEY(9)ON:ON KEY(9)GOSUB 3900
  39. 295 KEY(10)ON:ON KEY(10)GOSUB 4000
  40. 297 DEF SEG:POKE 106,0
  41. 299 GOSUB 60000 ' Sign on screen
  42. 300        ' Define I/O Channels -----------------------------------------
  43. 302 BAUD$="1200": PARITY$="N": LNGTH$="8": STP$="1": SETTING$=",RS,CS,DS"
  44. 310 GOSUB 50010
  45. 330 PRINT #1,"ATE1QTS11=50"  ' Un-REM to init modem for tone dialing
  46. 340 FOR X=1 TO 1000 : NEXT : GOSUB 25000 : GOSUB 800
  47. 350 GOSUB 6320:GOSUB 3940:EVEN=0 ' Default 300 Baud, No Parity, 8 Data Bits
  48. 400        ' Keyboard Driven Terminal Loop -------------------------------
  49. 410 WHILE ONLINE
  50. 420    X$=INKEY$:IF X$<>"" THEN LOCATE ,,1:PRINT #1,X$;:IF LOCAL THEN GOSUB 470
  51. 430    GOSUB 500
  52. 440 WEND
  53. 450 IF NOT ONLINE THEN 450  ' Off-Line Wait Loop
  54. 460 GOTO 410
  55. 470 IF POS(0)>1 AND X$=CHR$(8) THEN PRINT BK$; ELSE PRINT X$;
  56. 480 RETURN
  57. 500        ' Main Communication Loop -------------------------------------
  58. 510 WHILE NOT EOF(1)
  59. 520    X$=INKEY$ : IF X$<>"" THEN LOCATE ,,1 : PRINT #1,X$;
  60. 530    Y$=INPUT$(LOC(1),#1) : IF DISK THEN PRINT #3,Y$;
  61. 540    FOR I=1 TO LEN(Y$)
  62. 550      J=ASC(MID$(Y$,I,1)) : IF J=10 THEN 590 ELSE IF J=8 THEN 595
  63. 560      PRINT CHR$(J); : IF HOST THEN PRINT #1,CHR$(J);
  64. 570    NEXT : IF PRINTER THEN PRINT #2,Y$;
  65. 580 WEND : RETURN
  66. 590 MID$(Y$,I,1)=" " : GOTO 570
  67. 595 IF POS(0)>1 THEN PRINT BK$; : IF HOST THEN PRINT #1,CHR$(J);
  68. 597 GOTO 570
  69. 800        ' Function Key Display Menu -----------------------------------
  70. 810 CLS : PRINT TAB(15);"MENU FOR FUNCTION KEYS" : PRINT
  71. 820 PRINT TAB(10)"Key 1 . . . . . . To Toggle Modem Online/Offline
  72. 830 PRINT TAB(10)"Key 2 . . . . . . To Toggle On/Off LOCAL Echo
  73. 840 PRINT TAB(10)"Key 3 . . . . . . To Toggle On/Off HOST  Echo
  74. 850 PRINT TAB(10)"Key 4 . . . . . . To Dial A Number
  75. 860 PRINT TAB(10)"Key 5 . . . . . . To Display This Menu
  76. 870 PRINT TAB(10)"Key 6 . . . . . . To Toggle Printer On/Off
  77. 880 PRINT TAB(10)"Key 7 . . . . . . To Write To Disk From Modem
  78. 890 PRINT TAB(10)"Key 8 . . . . . . To Write To Modem From Disk
  79. 900 PRINT TAB(10)"Key 9 . . . . . . To Toggle Between E,7,1 and N,8,1 words
  80. 910 PRINT TAB(10)"Key 10. . . . . . To Return To Basic  Without Hanging-Up
  81. 920 PRINT
  82. 930 PRINT TAB(10)"Alt + Key 3 . . . To Change To 300 Baud
  83. 940 PRINT TAB(10)"Alt + Key 4 . . . To Continuously Dial A Number
  84. 950 PRINT TAB(10)"Alt + Key 5 . . . Long Distance Dialing Service Prefix
  85. 960 PRINT TAB(10)"Alt + Key 6 . . . To Change To 1200 Baud
  86. 970 PRINT TAB(10)"Alt + Key 7 . . . To Write To Disk With Xmodem Protocol
  87. 975 PRINT TAB(10)"Alt + Key 8 . . . To Write To Modem From Disk With Xmodem
  88. 980 PRINT TAB(10)"Alt + Key 10. . . To Hang-Up
  89. 985 LOCATE 25,1: PRINT "f4=DIAL  f5=MENU  alt+f5=LONG DISTANCE  alt+f7=XMODEM RCV  alt+f10=HANG-UP";
  90. 990 LOCATE 22,1: RETURN
  91. 1000        ' Error Vector Table -----------------------------------------
  92. 1010 PRINT
  93. 1020 IF ERR=24 THEN PRINT "Device Timeout" : PRINT : RESUME 400
  94. 1030 IF ERR=27 THEN PRINT "Printer"       : PRINT : RESUME 400
  95. 1040 IF ERR=57 THEN PRINT "Device I/O"       : PRINT : RESUME 400
  96. 1050 IF ERR=52 THEN PRINT "Bad Filename"       : GOTO 1150
  97. 1060 IF ERR=61 THEN PRINT "Disk Full"           : GOTO 1150
  98. 1070 IF ERR=67 THEN PRINT "Directory Full"       : GOTO 1150
  99. 1080 IF ERR=70 THEN PRINT "Disk Write Protected"   : GOTO 1150
  100. 1090 IF ERR=71 THEN PRINT "Drive Not Ready"       : GOTO 1150
  101. 1100 IF ERR=72 THEN PRINT "Disk Media Error"       : GOTO 1150
  102. 1105 IF ERR=53 AND ERL=3770 THEN RESUME 3780
  103. 1110 IF ERR=53 THEN PRINT "File Not Found" : PRINT : FILES : GOTO 1150
  104. 1120 IF ERR=58 THEN PRINT "File Already Exists" : PRINT : FILES : GOTO 1150
  105. 1130 ON ERROR GOTO 0
  106. 1150 PRINT : DISK=0 : CLOSE #3 : IF NOT ONLINE THEN GOSUB 3120
  107. 1160 LOCATE ,,1 : RESUME 400
  108. 3100        ' Service Function Key #1 -------------------------------------
  109. 3110 GOSUB 5000 : KEY(1)ON : ON S GOTO 6100,7100,8100
  110. 3120 ONLINE=NOT ONLINE : IF NOT ONLINE THEN 3140
  111. 3130 PRINT #1, XON$ : PRINT "Status :  ON  Line" : RETURN
  112. 3140 PRINT #1, XOFF$: PRINT "Status :  OFF Line" : RETURN
  113. 3200        ' Service Function Key #2 -------------------------------------
  114. 3210 GOSUB 5000 : KEY(2) ON : ON S GOTO 6200,7200,8200
  115. 3220 LOCAL=NOT LOCAL
  116. 3230 PRINT "Local Echo "; : IF LOCAL THEN PRINT "ON" ELSE PRINT "OFF"
  117. 3240 RETURN
  118. 3300        ' Service Function Key #3 -------------------------------------
  119. 3310 GOSUB 5000 : KEY(3)ON : ON S GOTO 6300,7300,8300
  120. 3320 HOST=NOT HOST
  121. 3330 PRINT "Host Echo "; : IF HOST THEN PRINT "ON" ELSE PRINT "OFF"
  122. 3340 RETURN
  123. 3400        ' Service Function Key #4 -------------------------------------
  124. 3410 GOSUB 5000 : KEY(4)ON : ON S GOTO 6400,7400,8400
  125. 3420 GOSUB 10000 : PRINT
  126. 3430 PRINT #1,"AT M1 D "+X$
  127. 3440 RETURN
  128. 3500        ' Service Function Key #5 -------------------------------------
  129. 3510 GOSUB 5000 : KEY(5)ON : ON S GOTO 6500,7500,8500
  130. 3520 GOTO 800
  131. 3600        ' Service Function Key #6  ------------------------------------
  132. 3610 GOSUB 5000 : KEY(6)ON : ON S GOTO 6600,7600,8600
  133. 3620 PRINTER=NOT PRINTER
  134. 3630 IF PRINTER THEN PRINT "Printer ON" ELSE PRINT "Printer OFF"
  135. 3640 RETURN
  136. 3700        ' Service Function Key #7 -------------------------------------
  137. 3710 GOSUB 5000 : KEY(7)ON : ON S GOTO 22000,7700,8700
  138. 3720 DISK=NOT DISK
  139. 3730 IF NOT DISK THEN CLOSE #3 : PRINT "File Closed" : RETURN
  140. 3740 GOSUB 3120
  141. 3750 PRINT "Modem   ====>>   Disk" : PRINT
  142. 3760 INPUT "ENTER FILENAME  : ",X$ : IF X$="" THEN 3790
  143. 3770 CLOSE #3 : OPEN "I",#3,X$ : ERROR 58
  144. 3780 CLOSE #3 : OPEN "O",#3,X$ : GOSUB 3120 : RETURN
  145. 3790 PRINT "Aborted" : PRINT : CLOSE #3 : GOSUB 3120 : DISK=0 : RETURN
  146. 3800        ' Service Function Key #8 -------------------------------------
  147. 3810 GOSUB 5000 : KEY(8)ON : ON S GOTO 30000,7800,8800
  148. 3820 PRINT "Disk   ====>>   Modem" : PRINT
  149. 3830 INPUT "ENTER FILENAME  : ",X$ : IF X$="" THEN 3790
  150. 3840 OPEN "I",#3,X$
  151. 3850 PRINT "Proceed With File  ";X$;
  152. 3860 INPUT "  (Y/N)  ";Y$ : Y$=LEFT$(Y$,1)
  153. 3870 IF Y$<>"Y" AND Y$<>"y" THEN 3896
  154. 3875 IF XX THEN XX=0 : RETURN 30040
  155. 3880 WHILE NOT EOF(3)
  156. 3885   LINE INPUT #3,X$
  157. 3890   PRINT #1,X$
  158. 3892   FOR I=1 TO 1500:NEXT
  159. 3894 WEND
  160. 3896 CLOSE #3 : DISK=0 : PRINT "File Closed" : PRINT : RETURN
  161. 3900        ' Service Function Key #9 -------------------------------------
  162. 3910 GOSUB 5000 : KEY(9)ON : ON S GOTO 6900,7900,8900
  163. 3920 EVEN=NOT EVEN : IF NOT EVEN THEN 3940
  164. 3930 PRINT "Changed to Even Parity, With 7 Data Bits" : PARITY$="E": LNGTH$ = "7": GOSUB 50000: RETURN
  165. 3940 PRINT "Changed to No Parity With 8 Data Bits."   : PARITY$="N": LNGTH$="8": GOSUB 50000: RETURN
  166. 4000        ' Service Function Key #10 ------------------------------------
  167. 4005 REM Error exits 8000 and 9000 missing from original code. We will replace
  168. 4006 REM this code when we get a better orig. from somebody. DCC/Dallas RCP/M
  169. 4010 GOSUB 5000 : KEY(10)ON : ON S GOTO 7000,8000,9000
  170. 4020 PRINT "Pressing Key #5 will continue without hanging up."
  171. 4030 PRINT:STOP : LOCATE ,,1
  172. 5000        '  Functin Keys 1-10 Router  ----------------------------------
  173. 5010 PRINT
  174. 5020 DEF SEG=&H40:A=PEEK(&H17)
  175. 5030 IF (A AND 8)=8 THEN S=1 : DEF SEG : RETURN      'Alternate
  176. 5040 IF (A AND 2)=2 THEN S=2 : DEF SEG : RETURN      'Left Shift
  177. 5050 IF (A AND 4)=4 THEN S=3 : DEF SEG : RETURN      'Control
  178. 5060             S=0 : DEF SEG : RETURN
  179. 6300 '-------------------------------------------------- Alt + F3 -------------
  180. 6310 PRINT "Switch to 300 Baud."
  181. 6320 ON ERROR GOTO 0
  182. 6330 BAUD$="300": GOSUB 50000
  183. 6390 ON ERROR GOTO 1000 : RETURN
  184. 6400 'Continuous Dialing ------------------------------- Alt + F4 -------------
  185. 6405 IF NOT EVEN THEN GOSUB 3940
  186. 6410 GOSUB 10000 : PRINT : PRINT "Continuously Dialing ";X$
  187. 6420 PRINT "Press ESC twice to abort."
  188. 6430 T=0 : PRINT : PRINT "Number of calls attempted so far : ";
  189. 6440 T=T+1 : LOCATE ,36 : PRINT T; : PRINT #1,"AT M0 D "+X$
  190. 6450 IF CHR$(27)=INKEY$ THEN 6497 ELSE WHILE NOT EOF(1)
  191. 6460 INPUT #1,Y$ : FOR X=1 TO 1000 : NEXT
  192. 6470 IF INSTR (Y$,"NO CARRIER") THEN 6440
  193. 6480 IF INSTR (Y$,"CONNECT") THEN 6490
  194. 6485 WEND  : GOTO 6450
  195. 6490 PRINT : PRINT "Connection Established."
  196. 6495 WHILE INKEY$="" : SOUND 1000,10 : SOUND 735,8 : WEND
  197. 6497 PRINT : RETURN
  198. 6500 '------------------------------------------------- Alt + F5 ------------
  199. 6510 LINE INPUT "Long Distance Service Number to Dial? "; X$
  200. 6520 X$ = "999-9999,,999999," + X$   ' INSERT YOUR LONG DISTANCE NUMBERS HERE
  201. 6530 GOTO 3430
  202. 6590 ON ERROR GOTO 1000 : RETURN
  203. 6600 '-------------------------------------------------- Alt + F6 -------------
  204. 6610 PRINT "Switch to 1200 Baud"
  205. 6620 ON ERROR GOTO 0
  206. 6630 BAUD$="1200": GOSUB 50000
  207. 6690 ON ERROR GOTO 1000 : RETURN
  208. 7000 '-------------------------------------------------- Alt + F10 ------------
  209. 7010 PRINT "Hanging-Up" : RUN
  210. 10000        ' Directory  --------------------------------------------------
  211. 10010 PRINT "+------------- Directory -------------+"
  212. 10020 PRINT "|  A>  931-8073    Dallas RCP/M\CBBS  |" : D$(1)="931-8073"
  213. 10030 PRINT "|  B>  239-5842    Eclectic           |" : D$(2)="239-5842"
  214. 10040 PRINT "|  C>  761-9040    Compuserve         |" : D$(3)="761-9040"
  215. 10050 PRINT "|  D>  --------    ---------          |" : D$(4)="--------"
  216. 10060 PRINT "|  E>  --------    ---------          |" : D$(5)="--------"
  217. 10070 PRINT "|  F>  --------    ---------          |" : D$(6)="--------"
  218. 10080 PRINT "+-------------------------------------+"
  219. 10090 PRINT "   Enter the corresponding letter"
  220. 10100 PRINT "   or type in any phone number."          : PRINT
  221. 10110 LINE INPUT "Number to Dial ? ";X$
  222. 10120 IF LEN(X$)=1 AND X$=>"A" AND X$<="F" THEN X$=D$(ASC(X$)-64) : RETURN
  223. 10130 IF LEN(X$)=1 AND X$=>"a" AND X$<="f" THEN X$=D$(ASC(X$)-96) : RETURN
  224. 10140 IF LEN(X$)<7 THEN LOCATE ,,1 : RETURN 400 ELSE RETURN
  225. 20000        ' Get Character -----------------------------------------
  226. 20010 Y$=""
  227. 20020 FOR A=1 TO 420
  228. 20030 IF NOT EOF(1) THEN Y$=INPUT$(LOC(1),#1) : RETURN
  229. 20040 NEXT A : Y$="" : RETURN
  230. 21000        ' Timeout -----------------------------------------------
  231. 21010 FOR B = 1 TO 10
  232. 21020 GOSUB 20000
  233. 21030 IF MID$(Y$,1,1)=SOH$ THEN RETURN
  234. 21040 IF MID$(Y$,1,1)=EOT$ THEN 22350
  235. 21050 IF MID$(Y$,1,1)=CAN$ THEN 22360
  236. 21060 IF Y$<>"" THEN GOSUB 25000 : GOTO 21000
  237. 21070 NEXT B
  238. 21080 IF Y$="" THEN PRINT #1,NAK$;
  239. 21090 GOTO 21000
  240. 22000        ' Receive With Xmodem Protocol ---------------------------
  241. 22010 PRINT "Receive File With XMODEM Protocol" : PRINT
  242. 22020 IF EVEN THEN GOSUB 3940       ' Set Word Structure To 8-N-1
  243. 22030 GOSUB 3740           ' Open File
  244. 22040 GOSUB 25000           ' Purge Buffer
  245. 22050 X$="" : SEC=1
  246. 22060 PRINT #1,NAK$;
  247. 22070 GOSUB 21000           ' Timeout
  248. 22080 GOSUB 20000           ' Get Char
  249. 22090 IF Y$="" THEN PRINT "Timeout" : GOTO 22120
  250. 22100 X$=X$+Y$
  251. 22110 IF LEN(X$)<=131 THEN 22080
  252. 22120 IF LEN(X$)= 132 THEN Z$=MID$(X$,4,128) : N=132 : GOTO 22200
  253. 22130 IF LEN(X$)= 131 THEN Z$=MID$(X$,3,128) : N=131 : GOTO 22200
  254. 22140 IF LEN(X$)> 132 THEN 22310
  255. 22150 IF X$=EOT$      THEN 22350
  256. 22160 IF X$=CAN$      THEN 22360
  257. 22170 GOTO 22300
  258. 22180 IF SEC<> VAL(MID$(X$,2,1) THEN 22330
  259. 22190 IF (SEC XOR 255) <> VAL(MID$(X$,3,1) THEN 22340
  260. 22200 FOR Q=1 TO 128 : CK=CK+ASC(MID$(Z$,Q,1)) : NEXT
  261. 22210 IF (CK AND 255) <> (ASC(MID$(X$,N,1))) THEN 22320
  262. 22220 PRINT "   Received #";SEC; "     ";CHR$(13) CHR$(30);: SEC=SEC+1
  263. 22230 PRINT #3,Z$;
  264. 22240 PRINT #1,ACK$;
  265. 22250 X$="" : CK=0 : GOTO 22080
  266. 22300 PRINT "Short Block in #"     ;SEC : PRINT #1,NAK$; : GOTO 22250
  267. 22310 PRINT "Long  Block in #"     ;SEC : PRINT #1,NAK$; : GOTO 22250
  268. 22320 PRINT "Checksum Error in #";SEC : PRINT #1,NAK$; : GOTO 22250
  269. 22330 PRINT "Block #  Error in #";SEC : PRINT #1,NAK$; : GOTO 22250
  270. 22340 PRINT "Complement Error in #";SEC:PRINT #1,NAK$; : GOTO 22250
  271. 22350 PRINT "File Closed." : PRINT #1,ACK$; : CLOSE #3 : RETURN 400
  272. 22360 PRINT "Transfer Aborted at Receiver"  : CLOSE #3 : RETURN 400
  273. 25000        'Purge Buffer ------------------------------------------
  274. 25010 WHILE NOT EOF(1) : DUMMY$=INPUT$(LOC(1),#1) : WEND : RETURN
  275. 30000        ' Send with Xmodem Protocol -----------------------------------
  276. 30010 PRINT "Send File With XMODEM Protocol" : PRINT
  277. 30020 IF EVEN THEN GOSUB 3940 'Set To N-8-1 Word Structure
  278. 30030 XX=-1 : GOSUB 3820      'Open File
  279. 30040 SEC=0 : GOSUB 25000      'Purge Buffer
  280. 30050 EOT=0 : Y$="" : X$=""
  281. 30100 WHILE NOT EOF(1)          'Wait for NAK
  282. 30110     Y$=INPUT$(1,#1)
  283. 30120     IF Y$=CAN$ THEN 30510
  284. 30130     IF Y$=NAK$ THEN 30310
  285. 30140 WEND  : GOTO 30100
  286. 30150 '
  287. 30200 WHILE NOT EOF (1)       ' Wait for ACK
  288. 30210     Y$=INPUT$(1,#1)
  289. 30220     IF Y$=ACK$ THEN CK=0 : Y$="" : GOTO 30360
  290. 30230     IF Y$=NAK$ THEN 30460
  291. 30240     IF Y$=CAN$ THEN 30510
  292. 30250 WEND : GOTO 30200
  293. 30260 '
  294. 30300 IF EOT THEN 30500       ' Build and Send Block
  295. 30310 CK=0 : Y$=""
  296. 30320 IF EOF(3) THEN 30490
  297. 30330 LINE INPUT #3,Z$
  298. 30340 Z$=Z$+CHR$(13)+CHR$(10)
  299. 30360 IF EOT THEN 30500
  300. 30365 FOR X=1 TO LEN(Z$)
  301. 30370    Y$=Y$+MID$(Z$,X,1)
  302. 30380    CK=CK+ASC(MID$(Z$,X,1))
  303. 30390    IF LEN(Y$)=128 THEN 30410
  304. 30400 NEXT : GOTO 30320
  305. 30410 Z$=MID$(Z$,X+1)
  306. 30420 CK=(CK AND 255)
  307. 30430 IF CK>256 THEN CK=CK-256 : GOTO 30430
  308. 30440 SEC=255 AND (SEC+1)
  309. 30450 A$=SOH$+CHR$(SEC)+CHR$(SEC XOR 255)+Y$+CHR$(CK)
  310. 30460 PRINT "   Send #";SEC; "       "; CHR$(13) CHR$(30)
  311. 30470 PRINT #1,A$;
  312. 30480 GOTO 30200
  313. 30490 CK=CK+ASC(" ")*(128-LEN(Y$)):Y$=Y$+SPACE$(128-LEN(Y$)):EOT=-1: GOTO 30420
  314. 30500 PRINT "Transmission Ended." : PRINT #1,EOT$; : CLOSE #3 : RETURN 400
  315. 30510 PRINT "Transmission Canceled Before Completion" : CLOSE #3 : RETURN 400
  316. 50000 CLOSE #1
  317. 50010 FL$ = "COM1:"+BAUD$+","+PARITY$+","+LNGTH$+","+STP$+SETTING$
  318. 50020 OPEN FL$ AS #1: RETURN
  319. 60000 CLS
  320. 60010 PRINT "------------------------------------"
  321. 60020 PRINT "JR-MODEM.BAS  9-7-84  JODY DONALDSON"
  322. 60030 PRINT "for the IBM(R) PC JR.   Version 1.01"
  323. 60040 PRINT "Based upon  IBMODEM.BAS by Russ Lane"
  324. 60045 PRINT "Run only as A>BASIC JR-MODEM /C:2048"
  325. 60050 PRINT "------------------------------------"
  326. 60060 PRINT: PRINT: PRINT: LINE INPUT "Press <RETURN> to continue ... "; DUMMY$
  327. 60070 RETURN
  328.