Skip to content

Instantly share code, notes, and snippets.

@unsynchronized
Created April 15, 2015 19:06
Show Gist options
  • Select an option

  • Save unsynchronized/c29c2e2b5a5f8535e860 to your computer and use it in GitHub Desktop.

Select an option

Save unsynchronized/c29c2e2b5a5f8535e860 to your computer and use it in GitHub Desktop.
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