Created
April 15, 2015 19:06
-
-
Save unsynchronized/c29c2e2b5a5f8535e860 to your computer and use it in GitHub Desktop.
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
| DECLARE SUB disp (d) | |
| DEFINT A-Z | |
| DECLARE SUB Filter (InString$) | |
| ON ERROR GOTO auntieem | |
| COLOR 7, 0 ' Set screen color. | |
| CLS | |
| mmode = 0 'mmode=client mode: 0-terminal 1-dosirc | |
| mor = 0 | |
| Quit$ = CHR$(0) + CHR$(16) ' Value returned by INKEY$ | |
| tmkey$ = CHR$(0) + CHR$(20) | |
| CLS : disp (mmode) | |
| OPEN "COM1:2400,N,8,1" FOR RANDOM AS #1 LEN = 10000 | |
| DO | |
| keyinput$ = INKEY$ | |
| IF keyinput$ = tmkey$ THEN | |
| IF mmode = 0 THEN mmode = 1: GOTO tmk | |
| IF mmode = 1 THEN mmode = 0: GOTO tmk | |
| tmk: | |
| disp (mmode) | |
| GOTO ei | |
| END IF | |
| IF keyinput$ = Quit$ THEN | |
| EXIT DO | |
| ELSEIF keyinput$ <> "" THEN | |
| IF mmode = 0 THEN PRINT #1, keyinput$; | |
| ei: | |
| END IF | |
| IF NOT EOF(1) THEN | |
| modeminput$ = INPUT$(LOC(1), #1) | |
| Filter modeminput$ ' Filter out line feeds and | |
| IF mmode = 0 THEN PRINT modeminput$; ' backspaces, then print. | |
| IF mmode = 1 THEN GOTO textsep | |
| END IF | |
| el: | |
| LOOP | |
| CLOSE ' End communications. | |
| CLS | |
| END | |
| textsep: | |
| IF mor = 1 THEN LET outline$ = outline$ + modeminput$ | |
| IF mor = 0 THEN LET outline$ = modeminput$ | |
| IF INSTR(outline$, CHR$(13)) = 0 THEN LET mor = 1: GOTO el | |
| mor = 0 | |
| process: | |
| server = 0 | |
| dc = 0 | |
| comcode$ = "" | |
| cmd$ = "" | |
| text$ = "" | |
| IF MID$(outline$, 1, 1) <> ":" THEN COLOR 4, 0: PRINT outline$: COLOR 7, 0: GOTO el | |
| outline$ = MID$(outline$, 2) | |
| spos = INSTR(outline$, " ") 'either user@host or server name' | |
| subject$ = MID$(outline$, 1, spos - 1) | |
| IF INSTR(subject$, "!") = 0 THEN LET server = 1 | |
| LET outline$ = MID$(outline$, spos + 1) | |
| spos = INSTR(outline$, " ") 'first parameter - either server command code or, if a user, the command' | |
| nparam$ = MID$(outline$, 1, spos - 1) | |
| IF server THEN LET comcode$ = nparam$ ELSE LET cmd$ = nparam$ | |
| LET outline$ = MID$(outline$, spos + 1) | |
| IF server = 0 THEN IF INSTR(cmd$, "QUIT") <> 0 THEN GOTO texmex | |
| nparam$ = "" 'second parameter - destination parameter' | |
| spos = INSTR(outline$, " ") | |
| nparam$ = MID$(outline$, 1, spos - 1) | |
| LET dest$ = nparam$ | |
| IF MID$(dest$, 1, 1) = "#" THEN LET dc = 1 | |
| LET outline$ = MID$(outline$, spos + 1) | |
| texmex: | |
| text$ = MID$(outline$, 2) 'rest of the line is text sent' | |
| IF server = 1 THEN GOTO svrcmd | |
| IF INSTR(cmd$, "PRIVMSG") <> 0 THEN | |
| IF dc = 1 THEN COLOR 0, 7: PRINT "["; subject$; "] "; : COLOR 7, 0: PRINT text$: GOTO el | |
| IF dc = 0 THEN COLOR 7, 0: PRINT "<"; MID$(subject$, 1, (INSTR(subject$, "!") - 1)); ":"; dest$; ">"; text$: GOTO el | |
| END IF | |
| IF INSTR(cmd$, "QUIT") <> 0 THEN | |
| PRINT "*** Signoff: "; subject$; " ("; text$; ")" | |
| GOTO el | |
| END IF | |
| IF INSTR(cmd$, "JOIN") <> 0 THEN | |
| LET nck$ = MID$(subject$, 1, (INSTR(subject$, "!") - 1)) | |
| LET uah$ = MID$(subject$, 1, (INSTR(subject$, "!") + 1)) | |
| PRINT "*** "; nck$; " ("; uah$; ") has joined "; dest$ | |
| GOTO el | |
| END IF | |
| IF INSTR(cmd$, "PART") <> 0 THEN | |
| LET nck$ = MID$(subject$, 1, (INSTR(subject$, "!") - 1)) | |
| PRINT "*** "; nck$; " has left "; dest$ | |
| GOTO el | |
| END IF | |
| COLOR 2, 0: PRINT subject$; " "; cmd$; " "; dest$; " :"; text$: COLOR 7, 0 | |
| svrcmd: | |
| PRINT "*** "; text$ | |
| GOTO el | |
| GOTO el | |
| auntieem: | |
| BEEP: GOTO el | |
| oldcode: | |
| IF INSTR(modeminput$, CHR$(13)) <> 0 THEN | |
| COLOR 5, 0: PRINT INSTR(modeminput$, CHR$(13)): COLOR 7, 0 | |
| 'COLOR 0, 7: PRINT modeminput$: COLOR 7, 0 | |
| length = INSTR(modeminput$, CHR$(13)) - 1 | |
| COLOR 5, 0: PRINT INSTR(modeminput$, CHR$(13)): COLOR 7, 0 | |
| COLOR 3, 0: PRINT INSTR(modeminput$, CHR$(13)) - 1, length: COLOR 7, 0 | |
| IF it = 1 THEN LET outline$ = outline$ + MID$(modeminput$, 1, length): it = 0 | |
| IF it = 0 THEN LET outline$ = MID$(modeminput$, 1, length) | |
| END IF | |
| IF INSTR(modeminput$, CHR$(13)) <> 0 THEN | |
| loca = INSTR(modeminput$, CHR$(13)) | |
| outline$ = MID$(modeminput$, 1, loca - 1) | |
| IF more THEN outline$ = more$ + outline$: more = 0: more$ = "" | |
| more$ = MID$(modeminput$, loca + 1) | |
| IF LEN(more$) > 18 THEN more = 1 ELSE more$ = "" | |
| GOTO process | |
| END IF | |
| IF INSTR(modeminput$, CHR$(13)) = 0 THEN BEEP: BEEP: BEEP: BEEP: BEEP'COLOR 4, 0: PRINT modeminput$: COLOR 7, 0: GOTO el | |
| DEFSNG A-Z | |
| SUB disp (mmode) | |
| IF mmode = 0 THEN termm$ = "DOSIRC Terminal Mode" | |
| IF mmode = 1 THEN termm$ = " dosirc by cstone" | |
| VIEW PRINT 23 TO 23 | |
| LOCATE 23, 1, 1 | |
| COLOR 0, 7 | |
| PRINT STRING$(80, " "); | |
| LOCATE 23, 1 | |
| PRINT STRING$(56, " "); termm$; | |
| LOCATE 23, 1 | |
| PRINT " "; | |
| PRINT STRING$(10, " "); | |
| PRINT nick$; " on "; cchan$; | |
| COLOR 7, 0 | |
| VIEW PRINT 1 TO 22 ' Print between lines 1 & 23. | |
| CLS | |
| END SUB | |
| DEFINT A-Z | |
| ' | |
| ' ========================= FILTER ========================== | |
| ' Filters characters in an input string. | |
| ' ============================================================ | |
| ' | |
| SUB Filter (InString$) STATIC | |
| ' Look for backspace characters and recode them to | |
| ' CHR$(29) (the LEFT cursor key): | |
| DO | |
| BackSpace = INSTR(InString$, CHR$(8)) | |
| IF BackSpace THEN | |
| MID$(InString$, BackSpace) = CHR$(29) | |
| END IF | |
| LOOP WHILE BackSpace | |
| ' Look for line-feed characters and remove any found: | |
| DO | |
| LineFeed = INSTR(InString$, CHR$(10)) | |
| IF LineFeed THEN | |
| InString$ = LEFT$(InString$, LineFeed - 1) + MID$(InString$, LineFeed + 1) | |
| END IF | |
| LOOP WHILE LineFeed | |
| END SUB | |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment