home *** CD-ROM | disk | FTP | other *** search
GW-BASIC | 1985-05-09 | 5.3 KB | 235 lines |
- 5 'initialize
- 10 CLEAR: CLS: DEFINT A-Z: KEY OFF: FALSE=0: TRUE=NOT FALSE: OPTION BASE 0: DIM S$(50): XX=1: LN=0
- 15 FOR I=1 TO 10: KEY I ,"": NEXT
- 17 XX=1:LN=0
- 19 REM **********************************************************************
- 20 REM *** This is a version of the TTY program which transmits and ***
- 30 REM *** receives 110 baud ascii, 7 data bits, parity always space, ***
- 40 REM *** two stop bits. It is intended to be called by the tty ***
- 50 REM *** program by a "chain" instruction. ***
- 60 REM *** AA4L 2/14/83 ***
- 70 REM **********************************************************************
- 999 '*** main program
- 1020 GOTO 13000
- 9997 END
- 9998 '
- 11998 '
- 11999 REM *** open comm file for receive
- 12000 OPEN "COM1:110,S,7,2,RS,CS0,DS0,CD0" AS #1:WIDTH #1,255
- 12040 RETURN
- 12498 '
- 12499 REM *** open comm file for transmit
- 12500 OPEN "COM1:110,S,7,2,CS0,DS0,CD0" AS #1:WIDTH #1,255
- 12540 RETURN
- 12998 '
- 12999 REM *** MENU
- 13000 CLS
- 13010 PRINT " *** Function Menu ***"
- 13020 PRINT
- 13050 PRINT "<2> Exit to BASIC.": PRINT
- 13060 PRINT "<3> Exit to DOS.": PRINT
- 13065 PRINT"<4> Switch to Murray Code": PRINT
- 13070 PRINT "<"+CHR$(24)+"> Receive": PRINT
- 13080 PRINT "<"+CHR$(25)+"> Transmit": PRINT
- 13085 DEF SEG=0: POKE 1050,PEEK (1052): DEF SEG
- 13090 BEEP: PRINT "Enter Choice: "
- 13100 CHOICE$=INKEY$
- 13105 IF CHOICE$="" THEN 13100
- 13106 CLS
- 13110 IF LEN(CHOICE$)=2 THEN IF RIGHT$(CHOICE$,1)="P" THEN 15000 ELSE IF RIGHT$(CHOICE$,1)="H" THEN 14000 ELSE GOTO 13010
- 13120 IF VAL(CHOICE$)=2 OR VAL(CHOICE$)=3 THEN 13700 ELSE IF VAL(CHOICE$)=4 THEN CHAIN "tty22" ELSE 13010
- 13130 STOP
- 13498 '
- 13698 '
- 13699 REM *** Exit to BASIC
- 13700 PRINT : PRINT : PRINT "Off at ";DATE$;" ";TIME$
- 13710 IF PRN THEN PRINT#2,: PRINT#2,"Off at ";DATE$;" ";TIME$
- 13720 CLOSE
- 13730 IF VAL(CHOICE$)=3 THEN 13750
- 13740 END
- 13750 SYSTEM
- 13800 STOP
- 13998 '
- 13999 REM *** Receive Routine
- 14000 PRINT :PRINT :PRINT DATE$ SPC(5) TIME$
- 14003 Y=CSRLIN
- 14005 SHFT=0
- 14010 LOCATE 25,1: COLOR 0,7
- 14020 PRINT" F1=> cr & lf on/off ... F2=> printer on/off ... F10=> menu ... <"+CHR$(25)+">=> transmit ";: COLOR 7,0:LOCATE Y,1
- 14025 DEF SEG =0: POKE 1050, PEEK(1052): DEF SEG
- 14030 ON KEY(1) GOSUB 14900: KEY(1) ON
- 14040 ON KEY(2) GOSUB 14920: KEY(2) ON
- 14050 ON KEY(10) GOSUB 14940: KEY(10) ON
- 14060 ON KEY(14) GOSUB 14960: KEY(14) ON
- 14065 GOSUB 12000
- 14066 ON ERROR GOTO 14800
- 14070 IF MENU.RET OR XMT.FL THEN 14080 ELSE 14100
- 14080 KEY(1) OFF: KEY(2) OFF: KEY(10) OFF: KEY(14) OFF: ON ERROR GOTO 0: CLOSE #1
- 14090 IF MENU.RET THEN MENU.RET = FALSE: GOTO 13000
- 14095 IF XMT.FL THEN XMT.FL=FALSE: GOTO 15000
- 14099 '
- 14100 IF EOF(1) THEN 14400
- 14110 X$=INPUT$(LOC(1),#1)
- 14120 FOR I=1 TO LEN(X$)
- 14130 AS$=MID$(X$,I,1)
- 14150 IF AS$=CHR$(10) THEN IF CRLF THEN PRINT CHR$(13);: IF PRN THEN PRINT#2,CHR$(13);
- 14160 IF AS$=CHR$(7) THEN BEEP: GOTO 14210
- 14190 IF ASC(AS$)<32 OR ASC(AS$)>127 THEN 14210
- 14200 PRINT AS$;: IF PRN THEN PRINT #2,AS$;
- 14210 NEXT
- 14220 GOTO 14070
- 14399 '
- 14400 K$=INKEY$: IF K$="" THEN 14070
- 14410 Y=CSRLIN: X=POS(0)
- 14420 S$(LN)=S$(LN)+K$
- 14425 IF K$=CHR$(13) THEN LN =LN+1: XX=1: GOTO 14070
- 14430 LOCATE 25,XX,1
- 14440 PRINT K$+" CSRLIN";
- 14450 XX=XX+1
- 14460 IF XX=>75 THEN S$(LN)=S$(LN)+CHR$(13): XX=1: LN=LN+1
- 14470 LOCATE Y,X
- 14480 GOTO 14070
- 14799 '
- 14800 IF ERR=25 OR ERR=27 THEN 14810 ELSE 14820
- 14810 PRINT: PRINT "check printer": BEEP: PRINT: RESUME
- 14820 IF ERR=57 THEN RESUME NEXT
- 14830 ON ERROR GOTO 0
- 14840 '
- 14899 '
- 14900 IF CRLF THEN CRLF=FALSE ELSE CRLF=TRUE
- 14905 RETURN
- 14910 '
- 14920 IF NOT PRN THEN OPEN "lpt1:" FOR OUTPUT AS #2: PRN=TRUE: WIDTH #2,255: RETURN
- 14925 CLOSE #2: PRN=FALSE: RETURN
- 14930 '
- 14940 MENU.RET=TRUE: RETURN
- 14950 '
- 14960 XMT.FL=TRUE: RETURN
- 14970 '
- 14998 '
- 14999 '*** transmit
- 15000 PRINT: PRINT: PRINT DATE$ SPC(5) TIME$
- 15010 Y=CSRLIN
- 15030 COLOR 0,7: LOCATE 25,1
- 15040 PRINT" F1-F3=>Msg1-3 \ F4=>CQ \ F5=>de \ F6=>Test \ F7=>id \ F10=>Menu \ "+CHR$(24)+"=>Receive ";
- 15050 COLOR 7,0: LOCATE Y,1,1
- 15060 GOSUB 12500
- 15070 DEF SEG=0: POKE 1050,PEEK(1052): DEF SEG
- 15080 X$=INKEY$: IF X$="" THEN 15080
- 15090 IF LEN(X$)>1 THEN 15200
- 15092 GOSUB 15100
- 15093 GOTO 15080
- 15098 '
- 15099 '*** this subroutine transmits an ascii character
- 15100 IF X$="\" THEN PRINT#1,CHR$(7);: PRINT X$;: GOTO 15160
- 15150 PRINT #1,X$;: PRINT X$;
- 15160 RETURN
- 15199 '
- 15200 Z=INSTR(";<=>?@ADHC",RIGHT$(X$,1))
- 15210 ON Z GOTO 16000,16100,16200,16300,16400,16500,16600,16700,16800,16900
- 15220 GOTO 15080
- 15998 '
- 15999 '*** routines to handle function keys
- 16000 FILENM$="msg1"
- 16010 GOSUB 17000
- 16020 GOTO 15080
- 16099 '
- 16100 FILENM$="msg2"
- 16110 GOSUB 17000
- 16120 GOTO 15080
- 16199 '
- 16200 FILENM$="msg3"
- 16210 GOSUB 17000
- 16220 GOTO 15080
- 16299 '
- 16300 MSG$=CHR$(13)+"cq cq cq cq cq cq cq de aa4l aa4l aa4l bob in raleigh nc"
- 16310 GOSUB 17500
- 16320 GOTO 15080
- 16399 '
- 16400 MSG$=CHR$(13)+"de aa4l aa4l bob in raleigh nc"
- 16410 GOSUB 17500
- 16420 GOTO 15080
- 16499 '
- 16500 MSG$=CHR$(13)+"the quick brown fox jumped over the lazy dog's back"+CHR$(13)+"U*U*U*U*U*U*U*U*U*U*U*U*U*U*U*U*U*U*U*U*U*U*U*U*U*U*U*U*"+CHR$(13)+"1 2 3 4 5 6 7 8 9 0 \ "
- 16510 GOSUB 17500
- 16520 GOTO 15080
- 16599 '
- 16600 MSG$=CHR$(13)+"cw id:"
- 16610 GOSUB 17500
- 16620 CLOSE #1 'close file to purge buffer
- 16625 GOSUB 12500 'reopen file to key transmitter
- 16630 GOSUB 18000
- 16640 GOTO 15080
- 16699 '
- 16700 CLOSE: LOCATE 25,1: PRINT SPACE$(79): GOTO 13000
- 16799 '
- 16800 CLOSE: GOTO 14000
- 16888 '
- 16889 '***transmit keybd buffer
- 16900 FOR II = 0 TO LN-1
- 16910 MSG$=S$(II)
- 16920 GOSUB 17500
- 16925 S$(II)=""
- 16930 NEXT II
- 16940 LN=0: XX=1
- 16950 GOTO 15080
- 16998 '
- 16999 '*** subroutine to get a message from disk and transmit it
- 17000 ON ERROR GOTO 17300
- 17010 OPEN FILENM$ FOR INPUT AS #2
- 17020 WHILE NOT EOF(2)
- 17030 LINE INPUT #2,M$
- 17040 MSG$=CHR$(13)+M$
- 17050 GOSUB 17500
- 17060 WEND
- 17070 CLOSE #2
- 17075 ON ERROR GOTO 0
- 17080 GOTO 15080
- 17298 '
- 17299 '*** disk error
- 17300 IF ERR=53 OR ERR=71 OR ERR=72 THEN PRINT"***Can't read file for ";FILENM$;"***";:CLOSE #3: RESUME 15080
- 17310 ON ERROR GOTO 0
- 17498 '
- 17499 '*** subroutine to transmit a msg
- 17500 FOR I=1 TO LEN(MSG$)
- 17510 X$=MID$(MSG$,I,1)
- 17520 GOSUB 15100
- 17530 NEXT
- 17540 RETURN
- 17998 '
- 17999 '*** cwid
- 18000 SOUND 32767,20
- 18010 GOSUB 18500
- 18020 GOSUB 18600
- 18030 GOSUB 18700 'A
- 18040 GOSUB 18500
- 18050 GOSUB 18600
- 18060 GOSUB 18700 'A
- 18070 GOSUB 18500
- 18080 GOSUB 18500
- 18090 GOSUB 18500
- 18100 GOSUB 18500
- 18110 GOSUB 18600
- 18120 GOSUB 18700 '4
- 18130 GOSUB 18500
- 18140 GOSUB 18600
- 18150 GOSUB 18500
- 18160 GOSUB 18500
- 18170 SOUND 32767,20 'L
- 18180 SOUND 32767,1
- 18190 RETURN
- 18498 '
- 18499 '***DIT SUBROUTINE
- 18500 SOUND 800,1.5: MOTOR 1
- 18510 SOUND 32767,1.5: MOTOR 0
- 18520 RETURN
- 18598 '
- 18599 '***dah subroutine
- 18600 SOUND 800,4.5: MOTOR 1
- 18610 SOUND 32767,1.5: MOTOR 0
- 18620 RETURN
- 18698 '
- 18699 '***inter-character space subroutine
- 18700 SOUND 32767,3
- 18710 RETURN
-