'$DYNAMIC DECLARE SUB changesys (a!, b!) DECLARE SUB box (row!, col!, height!, wide!) DECLARE SUB send (a$) DECLARE SUB PRINTentry (whichone!) DECLARE SUB message (mess$) DECLARE SUB printchar (a$, a!) ' $INCLUDE: 'QBSERIAL.DEC' year = 1900 ON ERROR GOTO rrr: 'debug CLOSE rrr: IF errormess THEN PRINT "Error:"; ERR RESUME NEXT ON UEVENT GOSUB CarrierLoss UEVENT ON DIM bbot AS DOUBLE bbot = 100000000 CONST false = 0, true = -1 IF COMMAND$ = "" THEN config$ = "QBTERM.CNF" ELSE config$ = COMMAND$ OPEN config$ FOR BINARY AS #1 IF LOF(1) = 0 THEN PRINT "Error: Config file not specified or does not exist. Run INSTALL." END END IF CLOSE #1 CLOSE #10 OPEN "\qb45\web2.dic" FOR INPUT AS #10'debug DO INPUT #10, temp$ LOOP UNTIL temp$ = "alipata" CLOSE #1 OPEN config$ FOR INPUT AS #1 DIM entrie$(12) DO LINE INPUT #1, tmp$ tmp = INSTR(tmp$, ":") IF tmp <> 0 THEN entrie$(blah) = LTRIM$(MID$(tmp$, tmp + 1)) blah = blah + 1 END IF LOOP UNTIL blah = 13 phone$ = entrie$(0) pad$ = entrie$(1) Port% = VAL(entrie$(2)) IRQ% = VAL(entrie$(3)) rate& = VAL(entrie$(4)) length% = VAL(entrie$(5)) Parity% = VAL(entrie$(6)) HS% = VAL(entrie$(7)) init$ = entrie$(8) prefix$ = entrie$(9) map$ = entrie$(10) DIM SHARED tabs(80) AS INTEGER, mmusic, showbad, doorway, wrapping, status, allowcls, homeline, Lines, rlines, columns, abuse, n$, e$, fclr, bclr, bold, blink, rlinesm1, rlinesm2, split, musicseq rlines = VAL(entrie$(11)) columns = 80 FOR tmp = 0 TO 7 READ sc$(tmp) NEXT DATA k,r,g,y,b,m,c,w DIM SHARED clr!(30 TO 37) DIM sys$(49), number$(49), xlate$(49), cap$(49), misc$(49) DIM noteline(100) AS STRING * 80 FOR s = 8 TO 72 STEP 8 tabs(s) = true NEXT s = 0 'DIM SHARED lines, columns, abuse, n$, e$, fclr, bclr, inquotes, es, follow$, escape$ DIM SHARED preserve(1 TO 50, 1 TO 80, 0 TO 1) AS INTEGER wrapping = true allowcls = true status = true rts = true ansi = true mmusic = true FOR cclr! = 30 TO 37 INPUT #1, clr(cclr!) NEXT CLOSE #1 SELECT CASE rlines CASE IS > 50: PLAY "t128l20d": PRINT "Lines > 50. Clipping at 50.": rlines = 50 CASE IS > 43: rlines = 50 CASE IS > 25: rlines = 25 CASE ELSE: rlines = 25 END SELECT WIDTH columns, rlines rlinesm1 = rlines - 1 rlinesm2 = rlines - 2 Lines = rlinesm1 DIM SHARED bcps AS INTEGER bcps = 500 DIM SHARED ups AS LONG t# = TIMER FOR delay = 1 TO 30000: NEXT ups = 30000 / (TIMER - t#) homeline = 1 LOCATE , , 1 GOSUB loadphone fclr = 7 bclr = 0 n$ = CHR$(0) e$ = CHR$(27) CRLF$ = CHR$(13) + CHR$(10) DIM SHARED A1$(0 TO 255) DIM SHARED A2$(0 TO 255) DIM SHARED ra1$(0 TO 255) DIM SHARED ra2$(0 TO 255) OPEN "\blahh" FOR APPEND AS #33'debug FOR tmp = 0 TO 255 A1$(tmp) = CHR$(tmp) A2$(tmp) = CHR$(0) + CHR$(tmp) ra1$(tmp) = CHR$(tmp) ra2$(tmp) = CHR$(0) + CHR$(tmp) NEXT IF sstring THEN A1$(27) = "$" SCREEN , , 2, 2 CLS X& = DriverCopyright WHILE (PEEK(X&)) CP$ = CP$ + CHR$(PEEK(X&)) X& = X& + 1 WEND PRINT CP$ PRINT ttmp = 0 a$ = "QߍݎQ_^hXcܔHklIQjrnUۙi͑La،rrqaܓܓ" + CHR$(1) + "FՁݎՆqߛN@p؅ӏ㔄ٓ;]atKKzzᒈܞ" ttmp = 0 FOR s = 1 TO LEN(a$) ltmp = ttmp tmp = ASC(MID$(a$, s, 1)) ttmp = tmp - ltmp IF ttmp < 0 THEN ttmp = 256 + ttmp PRINT CHR$(ttmp); NEXT tmp$ = "$[1;4;1;1;80;135b" FOR tmp = 1 TO LEN(tmp$) printchar MID$(tmp$, tmp, 1), ASC(MID$(tmp$, tmp, 1)) NEXT tmp = 0: ttmp = 0: s = 0: ltmp = 0: tmp$ = "" PRINT PRINT CarrierDetect 1 OpenComm Port%, IRQ%, length%, Parity%, rate&, HS% ' OpenComm Port%, IRQ%, 7, 1, rate&, HS% 'LINE INPUT "Word: ", abcd$'debug abcd$ = UCASE$(abcd$) t = LEN(abcd$) 40 IF CarrierLost THEN send init$ + CHR$(13) ELSE message "Carrier detected. Init string not sent." CarrierDetect 2 END IF IF map$ <> "" THEN xlate$(lastdialed) = map$: GOSUB loadkeyboardmap 1 DO a$ = INKEY$ IF a$ = "" THEN 12 IF a$ = n$ + "" THEN 'alt+o doorway = NOT doorway IF doorway THEN message "Doorway mode on" ELSE message "Doorway mode off" ELSE IF doorway THEN send a$ ELSE IF a$ = A1$(ASC(RIGHT$(a$, 1))) AND a$ <> CHR$(13) AND a$ <> "" AND (a$ <> " " OR coloritb) THEN 'totest IF funkey AND a$ = LCASE$(a$) THEN IF RND > .8 THEN a$ = UCASE$(a$) IF colorit AND a$ <> "'" THEN ' IF a$ <> " " AND a$ <> "'" THEN ' a$ = "=+f" + sc$(INT(RND * 8)) + "+" + a$ ' ' END IF cebg = 8 DO cefg = INT(RND * 16) IF coloritb THEN cebg = INT(RND * 8) LOOP UNTIL cefg <> cebg IF a$ <> " " THEN a$ = LTRIM$(RTRIM$(STR$(cefg MOD 8 + 1))) + a$ IF cefg < 7 THEN a$ = "0" + a$ a$ = "\" + a$ END IF IF coloritb THEN IF a$ <> " " THEN a$ = "\b" + RTRIM$(LTRIM$(STR$(cebg + 1))) + a$ ELSE a$ = "\b8" + a$ END IF END IF END IF ELSE IF LEN(a$) = 2 THEN a$ = A2$(ASC(RIGHT$(a$, 1))) ELSE IF LEN(a$) = 1 THEN a$ = A1$(ASC(a$)) END IF SELECT CASE a$ CASE n$ + "-": GOTO ND 'alt+x CASE n$ + "" 'alt+p colorit = NOT colorit IF colorit THEN message "Colorit typing enabled. Use background colors? (y/N)" coloritb = false IF INKEY$ = "y" OR INKEY$ = "Y" THEN coloritb = true ELSE message "Colorit typing disabled" END IF CASE n$ + "" 'alt+t send TIME$ + CHR$(13) CASE n$ + "#" 'alt+h 'tofix 'send "+++" 'SLEEP 1 'send "ath0" + CHR$(13) CarrierDetect 1 DTRcontrol 0 message "Terminating connection..." IF CarrierLost THEN message "Connection terminated." CloseComm OpenComm Port%, IRQ%, length%, Parity%, rate&, HS% CarrierDetect 1 RTScontrol 1 DTRcontrol 1 ELSE message "Could not hang up." CarrierDetect 2 END IF CASE n$ + "," 'alt+z RTScontrol 0 LOCATE , , 0 SCREEN , , 1, 1 CLS PRINT "INSERT - M00f" PRINT "PAGE UP - Upload file (ASCII)" PRINT "ALT + 4 - Toggle remapping of ESC to $ (outgoing)" PRINT "ALT + A - Note pad" PRINT "ALT + B - Toggle ANSI status report (" + CHR$(27) + "[6n -> " + CHR$(27) + "[##;##R, " + CHR$(27) + "[5n -> " + CHR$(27) + "[0n)" PRINT "ALT + C - Toggle screen clearing" PRINT "ALT + D - Dialing directory" PRINT "ALT + E - Toggle ANSI emulation" PRINT "ALT + F - Toggle FUnKey tYPiNG ALT + P - Toggle Colorit typing" PRINT "ALT + G - View an ANSI file " PRINT "ALT + H - Hang up (lower DTR)" PRINT "ALT + I - Toggle line input mode " PRINT " (Lets you type in Teleconference and see what's going on simultaneously)" PRINT "ALT + J - Set RTS low and shell to OS" PRINT "ALT + K - Toggle showing of unrecognized ANSI" PRINT "ALT + L - Log to file/close log" PRINT "ALT + M - Alternate between " + CHR$(27) + "[M = music and " + CHR$(27) + "[M = delete line" PRINT "ALT + O - Toggle doorway mode " PRINT "ALT + R - Toggle RTScontrol" rtemp = CSRLIN PRINT PRINT PRINT "ALT + U - DTR high (may be needed for auto-answer)" PRINT "ALT + W - Load keyboard map ALT + V - Toggle error messages" PRINT "ALT + X - Exit QBTerm "; LOCATE 25, 1 PRINT "ALT + Z - Apparently you've fingered this one out already."; WHILE INKEY$ = "" LOCATE rtemp, 1 PRINT "ALT + S - Send time + CR with Colorit coding (\2" + LEFT$(TIME$, 2) + "\9:\9" + MID$(TIME$, 4, 2) + ") ("; : COLOR 2: PRINT LEFT$(TIME$, 2); : COLOR 18: PRINT ":"; : COLOR 2: PRINT MID$(TIME$, 4, 2); : COLOR 7: PRINT ")" PRINT "ALT + T - Send time + CR (" + TIME$ + ")" WEND GOSUB terminal RTScontrol 1 CASE ""'debug anl = 0 INPUT "Word: ", word$ OPEN "\qb45\words.txt" FOR INPUT AS #17 lword = LEN(word$) DO INPUT #17, owrd$ wrd$ = UCASE$(owrd$) lwrd = LEN(wrd$) IF lwrd > lword OR lwrd < 3 THEN 33 tmp$ = UCASE$(word$) FOR s = 1 TO lwrd tmp2$ = MID$(wrd$, s, 1) tmp = INSTR(tmp$, tmp2$) IF tmp = 0 THEN 33 ELSE MID$(tmp$, tmp, 1) = " " NEXT 'transmit owrd$ + " " send owrd$ + " " anl = anl + lwrd + 1 IF anl > 100 THEN transmit CHR$(13): anl = 0 33 LOOP UNTIL EOF(17) transmit CHR$(13) CLOSE #17 CASE n$ + CHR$(34) 'alt+g SCREEN , , 1, 1 COLOR 7, 0 CLS INPUT "File to view: ", file$ IF file$ = "" THEN GOTO 43 OPEN file$ FOR BINARY AS #8 ransi = ansi ansi = true LOCATE , , 0 printchar CHR$(27), 27 printchar "c", ASC("c") t = TIMER FOR tmp = 1 TO LOF(8) \ 1000 temp$ = INPUT$(1000, 8) FOR tmp2 = 1 TO 1000 tmp$ = MID$(temp$, tmp2, 1) printchar tmp$, ASC(tmp$) NEXT IF INKEY$ = CHR$(27) THEN GOTO 41 NEXT temp$ = INPUT$(LOF(8) MOD 1000, 8) FOR tmp2 = 1 TO LOF(8) MOD 1000 tmp$ = MID$(temp$, tmp2, 1) printchar tmp$, ASC(tmp$) NEXT 41 CLOSE #8 PRINT (tmp * 1000 + tmp2) / (TIMER - t); "CPS" PLAY "t128l20d" LOCATE , , 1 WHILE INKEY$ = "": WEND printchar CHR$(27), 27 printchar "c", ASC("c") ansi = ransi 43 GOSUB terminal CASE n$ + "2" 'alt+m mmusic = NOT mmusic IF mmusic THEN message CHR$(27) + "[M = music" ELSE message CHR$(27) + "[M = delete line" CASE n$ + "" 'alt+e ansi = NOT ansi IF ansi THEN message "ANSI enabled" ELSE message "ANSI disabled" CASE n$ + "R" 'insert 'RTScontrol 0 message "M00fing.. Press any key to end." DO transmit STRING$(8000, 8) LOOP UNTIL INKEY$ <> "" OR CarrierLost message "No longer m00fing. " RTScontrol 1 CASE n$ + "I" 'pageup COLOR 7, 0 SCREEN , , 1, 1 LOCATE , , 0 RTScontrol 0 CLS INPUT "File to upload: ", file$ checkforcarrier = false IF CarrierLost = 0 THEN checkforcarrier = true CLOSE #7 OPEN file$ FOR BINARY AS #7 PRINT "CPS: ("; LTRIM$(RTRIM$(STR$(bcps))); "): "; INPUT "", cps IF cps = 0 THEN cps = bcps PRINT "Uploading " + file$ + "..." t# = TIMER FOR blah = 1 TO LOF(7) FOR delay = 1 TO ups / cps: NEXT transmit INPUT$(1, 7) IF blah MOD cps = 0 THEN PRINT blah; "/"; LOF(7); PRINT USING "(###.##%)"; blah / LOF(7) * 100 PRINT "CPS:"; cps / (TIMER - t#) LOCATE CSRLIN - 2 t# = TIMER IF INKEY$ = CHR$(27) THEN message "Transfer aborted": EXIT FOR IF checkforcarrier AND CarrierLost THEN message "NO CARRIER": EXIT FOR END IF NEXT GOSUB terminal CASE n$ + "" 'alt+r rts = NOT rts IF rts THEN message "RTS on" RTScontrol 1 ELSE message "RTS off" RTScontrol 0 END IF CASE n$ + "$" 'alt+j RTScontrol 0 SCREEN , , 0, 0 SHELL GOSUB terminal RTScontrol 1 CASE n$ + "%" 'alt+k showbad = NOT showbad IF showbad THEN message "Unrecognized ANSI commands will be shown (like this)." ELSE message "Unrecognized ANSI commands will not be shown." CASE n$ + "" 'alt+w RTScontrol 0 SCREEN , , 1, 1 CLS INPUT "Load keyboard map: ", xlate$(lastdialed) GOSUB terminal GOSUB loadkeyboardmap CASE n$ + "" 'alt+a SCREEN , , 1, 1 COLOR 7, 0 CLS GOSUB loadpad DO 'PRINT offset 'WHILE INKEY$ = "": WEND LOCATE , , 0, -(NOT insert) * 7, 7 LOCATE 1, 1 FOR nline = 1 TO rlines - 2 IF nline + offset <= 100 THEN PRINT noteline$(nline + offset) ELSE PRINT STRING$(80, 32) NEXT IF nline + offset <= 100 THEN PRINT noteline$(rlinesm1 + offset); ELSE PRINT STRING$(80, 32); LOCATE rlines, 1 PRINT " ALT + Load ALT + Save as ALT + Find text ALT + Next"; LOCATE csrli, po, 1 DO: a$ = INKEY$: LOOP UNTIL a$ <> "" SELECT CASE a$ CASE "" IF POS(0) > 1 THEN MID$(noteline$(CSRLIN + offset), POS(0) - 1) = MID$(noteline$(CSRLIN + offset), POS(0)) po = POS(0) - 1 END IF CASE n$ + "H" IF csrli = 1 THEN IF offset > 0 THEN offset = offset - 1 ELSE csrli = csrli - 1 END IF CASE n$ + "M" IF po < 80 THEN po = po + 1 CASE n$ + "P" IF csrli + offset < 100 THEN IF csrli = rlinesm1 THEN offset = offset + 1 ELSE csrli = csrli + 1 END IF CASE n$ + "K" IF po > 1 THEN po = po - 1 CASE n$ + "I" 'pageup IF offset - (rlinesm1) >= 0 THEN offset = offset - (rlinesm1) ELSE IF offset > 0 THEN offset = 0: csrli = 1 CASE n$ + "Q" 'pagedown IF offset + rlinesm1 < 100 THEN offset = offset + (rlinesm1) IF offset + CSRLIN > 100 THEN csrli = 100 - offset CASE n$ + "G" 'home tmp = 80 - LEN(LTRIM$(noteline$(CSRLIN + offset))) + 1 IF POS(0) = tmp THEN po = 1 ELSE IF tmp <= 80 THEN po = tmp CASE n$ + "O" 'end tmp = LEN(RTRIM$(noteline$(CSRLIN + offset))) + 1 IF POS(0) = tmp THEN po = 80 ELSE IF tmp < 80 THEN po = tmp ELSE po = 80 CASE n$ + "S" 'delete IF RTRIM$(MID$(noteline$(CSRLIN + offset), POS(0))) <> "" THEN noteline$(CSRLIN + offset) = LEFT$(noteline$(CSRLIN + offset), POS(0) - 1) + MID$(noteline$(CSRLIN + offset), POS(0) + 1) ELSE IF CSRLIN + offset < 100 THEN IF LEN(RTRIM$(noteline$(CSRLIN + offset + 1))) <= 80 - POS(0) THEN noteline$(CSRLIN + offset) = LEFT$(noteline$(CSRLIN + offset), POS(0) - 1) + noteline$(CSRLIN + offset + 1) FOR nline = CSRLIN + 1 + offset TO 99 noteline$(nline) = noteline$(nline + 1) NEXT noteline$(100) = "" END IF END IF END IF CASE n$ + "R" 'insert LOCATE , , 1, -insert * 7, 7 insert = NOT insert CASE CHR$(13) IF CSRLIN + offset < 100 THEN IF insert THEN IF RTRIM$(noteline$(100)) = "" THEN FOR nline = 100 TO CSRLIN + offset + 2 STEP -1 noteline$(nline) = noteline$(nline - 1) NEXT noteline$(CSRLIN + offset + 1) = MID$(noteline$(CSRLIN + offset), POS(0)) noteline$(CSRLIN + offset) = LEFT$(noteline$(CSRLIN + offset), POS(0) - 1) END IF END IF IF csrli = rlinesm1 THEN offset = offset + 1 ELSE csrli = CSRLIN + 1 po = 1 END IF CASE n$ + "&" 'alt+l CLS PRINT "File to load (" + pad$ + "): "; INPUT "", file$ IF file$ <> "" THEN pad$ = file$ GOSUB loadpad CASE n$ + "" 'alt+s CLS PRINT "File to save as (" + pad$ + "): "; INPUT "", file$ IF file$ <> "" THEN pad$ = file$ GOSUB savepad CASE n$ + "!", n$ + "1"'alt+f, alt+n csrli = CSRLIN po = POS(0) IF a$ = n$ + "!" THEN CLS PRINT "Text to find (" + text$ + "): "; LINE INPUT "", txt$ IF txt$ <> "" THEN text$ = txt$ END IF IF text$ = "" THEN GOTO 25 IF a$ = n$ + "!" THEN PRINT "Finding text..." ELSE LOCATE rlines, 1: PRINT "Finding..." + STRING$(70, 32); lt = LEN(text$) templine$ = LCASE$(noteline$(csrli + offset)) FOR tmp = po + lt TO 80 - lt IF MID$(templine$, tmp, lt) = text$ THEN GOSUB foundtext: GOTO 25 NEXT nline = csrli + offset + 1 checked = false DO nline = nline + 1 IF nline = 101 THEN nline = 1 IF nline = csrli + offset + 1 THEN IF checked THEN GOTO 25 ELSE checked = true END IF templine$ = LCASE$(noteline$(nline)) FOR tmp = 1 TO 80 - lt IF MID$(templine$, tmp, lt) = text$ THEN GOSUB foundtext: GOTO 25 NEXT LOOP 25 CASE CHR$(27) CASE ELSE IF po < 80 OR CSRLIN + offset + 1 <= 100 THEN IF insert THEN IF RTRIM$(RIGHT$(noteline$(CSRLIN + offset), 1)) = "" THEN noteline$(CSRLIN + offset) = LEFT$(noteline$(CSRLIN + offset), POS(0) - 1) + a$ + MID$(noteline$(CSRLIN + offset), POS(0)) po = po + 1 IF po = 81 THEN po = 1 IF CSRLIN = rlinesm1 THEN offset = offset + 1 ELSE csrli = CSRLIN + 1 END IF END IF ELSE noteline$(CSRLIN + offset) = LEFT$(noteline$(CSRLIN + offset), POS(0) - 1) + a$ + MID$(noteline$(CSRLIN + offset), POS(0) + 1) po = po + 1 IF po = 81 THEN po = 1 IF CSRLIN = rlinesm1 THEN offset = offset + 1 ELSE csrli = CSRLIN + 1 END IF END IF END IF END SELECT LOOP UNTIL a$ = CHR$(27) GOSUB savepad LOCATE , , , 7, 7 GOSUB terminal CASE n$ + "." 'alt+c allowcls = NOT allowcls IF allowcls THEN message "Screen clearing enabled." ELSE message "Screen sclearing disabled." CASE n$ + "/" 'alt+v errormess = NOT errormess IF errormess THEN message "Error messages will be shown." ELSE message "Error messages will not be shown." CASE n$ + "&" 'alt+l cap = NOT cap IF NOT cap THEN message "Capture file closed." CLOSE #1 ELSE SCREEN , , 1, 1 CLS PRINT "Capture file "; IF RTRIM$(cap$(lastdialed)) <> "" THEN PRINT "(" + cap$(lastdialed) + ")"; PRINT ": "; INPUT "", file$ IF file$ = "" THEN IF RTRIM$(cap$(lastdialed)) <> "" THEN file$ = cap$(lastdialed) ELSE cap = false END IF END IF GOSUB terminal END IF IF cap THEN OPEN file$ FOR APPEND AS #1 LEN = 16000 CASE n$ + "" 'alt+u DTRcontrol 1 message "DTR high" CASE n$ + "" 'alt+i split = NOT split rrow = CSRLIN rcol = POS(0) IF split THEN message "Split mode on" split$ = "" IF rrow > rlinesm2 THEN rrow = rlinesm2: rcol = 1 srow = rlinesm1 scol = 1 Lines = rlinesm2 LOCATE rlinesm1, 1 PRINT STRING$(columns, 32); LOCATE rlines, 1 PRINT STRING$(columns, 32); VIEW PRINT 1 TO rlinesm1 - 1 LOCATE rrow, rcol ELSE message "Split mode off" Lines = rlines VIEW PRINT 1 TO rlinesm1 LOCATE rrow, rcol END IF CASE n$ + "" 'alt+s send "\2" + LEFT$(TIME$, 2) + "\9:\9\2" + MID$(TIME$, 4, 2) + CHR$(13) CASE n$ + "0" 'alt+b status = NOT status IF status THEN message "ANSI status report enabled" ELSE message "ANSI status report disabled" CASE n$ + "{" 'alt+4 sstring = NOT sstring IF sstring THEN FOR tmp = 0 TO 255 FOR tmp2 = 1 TO LEN(A1$(tmp)) IF MID$(A1$(tmp), tmp2, 1) = CHR$(27) THEN MID$(A1$(tmp), tmp2, 1) = "$" NEXT FOR tmp2 = 1 TO LEN(A2$(tmp)) IF MID$(A2$(tmp), tmp2, 1) = CHR$(27) THEN MID$(A2$(tmp), tmp2, 1) = "$" NEXT NEXT message "ESC remapped to $" ELSE FOR tmp = 0 TO 255 A1$(tmp) = ra1$(tmp) A1$(tmp) = ra1$(tmp) NEXT message "ESC remapped to ESC" END IF CASE n$ + "!" 'alt+f funkey = NOT funkey IF funkey THEN message "Funkey on" ELSE message "Funkey off" CASE n$ + " " 'alt+d RTScontrol 0 IF fonplace = 0 THEN fonplace = 1 IF lfonplace = 0 THEN lfonplace = 1 6 SCREEN , , 1, 1 LOCATE , , 0 CLS LOCATE rlines, 1 PRINT " CR/Dial DELete INSert Edit Other Save Load ESCape"; 7 COLOR 7, 0 FOR blah = 1 TO rlinesm1 LOCATE blah, 1 PRINTentry blah + poffset NEXT DO tmp = lfonplace - poffset IF tmp >= 1 AND tmp <= rlinesm1 THEN LOCATE tmp, 1 COLOR 7, 0 PRINTentry lfonplace END IF lfonplace = fonplace LOCATE fonplace - poffset, 1 COLOR 0, 7 PRINTentry fonplace DO: a$ = INKEY$: LOOP UNTIL a$ <> "" SELECT CASE a$ CASE n$ + "H" IF fonplace > 1 THEN fonplace = fonplace - 1 IF fonplace - poffset < 1 THEN poffset = poffset - 1: GOTO 7 CASE n$ + "P" IF fonplace < 49 THEN fonplace = fonplace + 1 IF fonplace - poffset > rlinesm1 THEN poffset = poffset + 1: GOTO 7 CASE n$ + "I"'pageup fonplace = fonplace - rlinesm1 IF fonplace < 1 THEN fonplace = 1 poffset = poffset - rlinesm1 IF poffset < 0 THEN poffset = 0 GOTO 7 CASE n$ + "Q"'pagedown fonplace = fonplace + rlinesm1 IF fonplace > 49 THEN fonplace = 49 poffset = poffset + rlinesm1 IF poffset + rlinesm1 > 49 THEN poffset = 49 - rlinesm1 GOTO 7 CASE n$ + "G" 'home fonplace = 1 poffset = 0 GOTO 7 CASE n$ + "O" 'end fonplace = 49 poffset = 49 - rlinesm1 GOTO 7 CASE "S", "s" COLOR 7, 0 CLS PRINT "File to save as (" + phone$ + "): "; INPUT "", file$ IF file$ <> "" THEN phone$ = file$ GOSUB savephone GOTO 7 CASE "L", "l" COLOR 7, 0 CLS PRINT "File to load (" + phone$ + "): "; INPUT "", file$ IF file$ <> "" THEN phone$ = file$ COLOR 7, 0 GOSUB loadphone CLS GOTO 7 CASE "O", "o" message LEFT$(misc$(fonplace), 74) CASE CHR$(13) 'IF CarrierLost = 0 THEN play "t128l20d: message "Cannot dial while carrier detected": GOTO 112'totest 5 ClearInputBuffer CLS 109 send CHR$(27) + CHR$(27) send prefix$ + number$(fonplace) + CHR$(13) m$ = "" DO IF DataWaiting THEN tmp = ReadChar tmp$ = CHR$(tmp) PRINT tmp$; m$ = m$ + tmp$ IF tmp = 10 OR tmp = 13 THEN m$ = "" IF LEFT$(m$, 1) = "B" THEN GOTO 109 IF m$ = "NO CARRIER" THEN GOTO 109 END IF SELECT CASE INKEY$ CASE "" CASE " ": GOTO 5 CASE CHR$(27): GOTO 6 CASE CHR$(13): GOTO 111 END SELECT LOOP UNTIL CarrierLost = 0 111 lastdialed = fonplace CarrierDetect 2 CLOSE #1 IF RTRIM$(cap$(fonplace)) <> "" THEN OPEN cap$(fonplace) FOR APPEND AS #1 LEN = 16000: cap = true GOSUB loadkeyboardmap GOSUB terminal DO: BEEP: LOOP UNTIL INKEY$ <> ""'debug GOTO 1 112 CASE n$ + "S" 'delete'totest COLOR 7, 0 IF sys$(fonplace) <> "" OR number$(fonplace) <> "" OR xlate$(fonplace) <> "" OR cap$(fonplace) <> "" THEN message "Are you sure? (Y/n)" tmp$ = INKEY$ IF LCASE$(tmp$) <> "y" AND tmp$ <> CHR$(13) THEN GOTO 7 END IF FOR tmp = fonplace TO 48 changesys tmp, tmp + 1 NEXT changesys 49, 0 GOTO 7 CASE "e", "E" COLOR 7, 0 CLS PRINT "Name of system (" + sys$(fonplace) + "): "; LINE INPUT name$ IF name$ <> "" THEN sys$(fonplace) = name$ PRINT " Phone Number (" + number$(fonplace) + "): "; LINE INPUT number$ IF number$ <> "" THEN number$(fonplace) = number$ PRINT " Keyboard map (" + xlate$(fonplace) + "): "; LINE INPUT xlate$ IF xlate$ <> "" THEN xlate$(fonplace) = xlate$ PRINT " Capture file (" + cap$(fonplace) + "): "; LINE INPUT cap$ IF cap$ <> "" THEN cap$(fonplace) = cap$ PRINT " Other info (" + misc$(fonplace) + "): "; LINE INPUT misc$ IF misc$ <> "" THEN misc$(fonplace) = misc$ GOTO 6 CASE n$ + "R" 'insert'totest IF sys$(49) = "" AND xlate$(49) = "" AND cap$(49) = "" AND misc$(49) = "" AND number$(49) = "" THEN FOR tmp = 49 TO fonplace + 1 STEP -1 changesys tmp, tmp - 1 NEXT changesys fonplace, 0 END IF GOTO 7 15 CASE CHR$(27) RTScontrol 1 EXIT DO CASE n$ + "-": GOTO ND END SELECT LOOP GOSUB terminal CASE ELSE IF split THEN blah$ = a$ rcol = POS(0) rrow = CSRLIN VIEW PRINT 1 TO rlines FOR ttttmp = 1 TO LEN(a$) a$ = MID$(blah$, ttttmp, 1) SELECT CASE a$ CASE CHR$(13) '",.?! /word1, word2 if word1=p send split$ + CHR$(13) split$ = "" LOCATE rlinesm1, 1 PRINT STRING$(columns, 32) PRINT STRING$(columns, 32); scol = 1 srow = rlinesm1 CASE "" IF scol = 1 THEN IF srow = rlines THEN srow = rlinesm1 scol = columns ELSE LOCATE rrow, rcol GOTO 12 END IF ELSE scol = scol - 1 END IF LOCATE srow, scol PRINT " "; LOCATE srow, scol split$ = LEFT$(split$, LEN(split$) - 1) CASE ELSE LOCATE srow, scol IF scol = columns AND srow = rlines THEN PLAY "t128l20d" LOCATE rrow, rcol GOTO 12 ELSE PRINT a$; scol = POS(0) srow = CSRLIN split$ = split$ + a$ END IF END SELECT NEXT ttttmp VIEW PRINT 1 TO rlinesm2 IF rrow > rlinesm2 THEN rrow = rlinesm2: rcol = 1 LOCATE rrow, rcol ELSE send a$' + CHR$(13) 'debug PRINT #33, a$; 'debug END IF END SELECT END IF END IF 12 IF DataWaiting THEN 'SOUND 2000, .05'debug12 a! = ReadChar a$ = CHR$(a!) IF cap THEN PRINT #1, a$; inputbuffer$ = RIGHT$(inputbuffer$ + a$, 100) 'IF INSTR(inputbuffer$, "Sophie") THEN transmit "invite sophie" + CHR$(13): inputbuffer$ = "" IF INSTR(inputbuffer$, "chat mode") THEN transmit "x" + CHR$(13): inputbuffer$ = "" 'debug 'IF INSTR(inputbuffer$, "nigger") THEN Transmit "blah" + CHR$(13): inputbuffer$ = "" 'debug 'aaa = INSTR(inputbuffer$, "hehehe"): mssg$ = "hahahhhehee ehahaha hehe hehahahah, " 'IF aaa = 0 THEN aaa = INSTR(inputbuffer$, " just joined"): mssg$ = "High, " 'IF aaa = 0 THEN aaa = INSTR(inputbuffer$, " has just arrived"): mssg$ = "High, " 'IF aaa = 0 THEN aaa = INSTR(inputbuffer$, " has just gone"): mssg$ = "Bigh, " 'IF aaa = 0 THEN aaa = INSTR(inputbuffer$, " just left"): mssg$ = "Bigh, " IF aaa = 0 THEN aaa = INSTR(inputbuffer$, " just vanished"): mssg$ = "Bigh, " 'IF aaa THEN ' transmit mssg$ ' FOR aa = aaa - 1 TO 1 STEP -1 ' IF MID$(inputbuffer$, aa, 1) = CHR$(13) THEN ' transmit MID$(inputbuffer$, aa + 1, aaa - aa - 1) + CHR$(13) ' EXIT FOR ' END IF ' NEXT ' inputbuffer$ = "" 'debug 'END IF IF ansi THEN printchar a$, a! ELSE PRINT a$; END IF 13 IF TIMER > t AND abcd$ <> "" THEN FOR word& = 1 TO 500 INPUT #10, b$ b$ = UCASE$(b$) tmp = LEN(b$) IF tmp <> t THEN 11 FOR s = 1 TO tmp tmp$ = MID$(abcd$, s, 1) IF tmp$ <> "_" AND MID$(b$, s, 1) <> tmp$ THEN 11 NEXT transmit "/p bri " + b$ + CHR$(13) BEEP PRINT b$ GOTO 42 11 NEXT 42 ps = POS(0) cs = CSRLIN LOCATE 1, 1 PRINT USING "###.#%"; word& / 234936 * 100; PRINT STRING$(40, 32); LOCATE , POS(0) - 35 PRINT b$; LOCATE cs, ps t = TIMER + .1 IF EOF(10) THEN abcd$ = "" END IF IF TIMER > t OR TIMER < t - 600 THEN ' t = TIMER + 600 ' transmit "/p inhahe" + CHR$(13) ' t = TIMER + .12 ' Transmit LTRIM$(STR$(year)) + CHR$(13) 'year = year + 1 ' DO ' INPUT #10, word$ ' LOOP UNTIL LEFT$(word$, 5) = "osteo" ' ' transmit word$ + CHR$(13) ' transmit "/sophie " + word$ + CHR$(13)'debug ' t = TIMER + 1 ' bbo = NOT bbo ' IF bbo THEN ' transmit "sing " + STR$(bbot) + " bottles of beer on the wall, " + STR$(bbot) + " bottles of beer.." + CHR$(13) ' ELSE ' bbot = bbot - 1.3213 ' transmit "sing Take 1.32130003 down, pass 'em around," + STR$(bbot) + " bottles of beer on the wall. " + CHR$(13) END IF 'END IF ' IF TIMER > t THEN '' blah = blah - 1 ' t = TIMER + .2 ' ' blaah = blaah + 10 ' INPUT #10, word$ ' send "link " + word$ + " " + "I_rule" + CHR$(13) 'send "/un " + STR$((600 - blaah) \ 60) + ":" + STR$((600 - blaah) MOD 60) + CHR$(13) ' END IF LOOP ' Your code ends here '**************************************************************************** ND: CloseComm GOSUB savephone END CarrierLoss: message "NO CARRIER" CarrierDetect 1 ' rtscontrol 1 DTRcontrol 1 RETURN loadphone: CLOSE #3 OPEN phone$ FOR INPUT AS #3 FOR sys = 1 TO 49 LINE INPUT #3, sys$(sys) LINE INPUT #3, number$(sys) LINE INPUT #3, xlate$(sys) LINE INPUT #3, cap$(sys) LINE INPUT #3, misc$(sys) NEXT CLOSE #3 RETURN savephone: CLOSE #4 OPEN phone$ FOR OUTPUT AS #4 FOR sys = 1 TO 49 PRINT #4, sys$(sys) PRINT #4, number$(sys) PRINT #4, xlate$(sys) PRINT #4, cap$(sys) PRINT #4, misc$(sys) NEXT CLOSE #4 RETURN loadpad: CLOSE #3 OPEN pad$ FOR INPUT AS #3 nline = 0 IF EOF(3) THEN id$ = "" ELSE INPUT #3, id$ IF UCASE$(id$) <> "QBTERM NOTEPAD" THEN message "Warning: File is not a QBterm notepad" offset = 0 csrli = 1 po = 1 ELSE INPUT #3, offset INPUT #3, csrli, po INPUT #3, insert END IF DO nline = nline + 1 IF EOF(3) THEN noteline$(nline) = "" ELSE LINE INPUT #3, noteline$(nline) LOOP UNTIL nline = 100 IF NOT EOF(3) THEN message "Notepad clipped at 100 entries" CLOSE #3 RETURN savepad: CLOSE #4 OPEN pad$ FOR OUTPUT AS #4 PRINT #4, " QBterm notepad" PRINT #4, offset PRINT #4, csrli; ","; po PRINT #4, insert FOR nline = 1 TO 100 PRINT #4, noteline$(nline) NEXT CLOSE #4 RETURN foundtext: ltfl = nline ltfc = tmp offset = nline - rlines \ 2 IF offset < 0 THEN offset = 0 csrli = nline - offset po = tmp RETURN loadkeyboardmap: IF RTRIM$(xlate$(lastdialed)) = "" THEN GOTO 55 CLOSE #2 OPEN xlate$(lastdialed) FOR INPUT AS #2 FOR tmp = 0 TO 255 ra1$(tmp) = CHR$(tmp) ra2$(tmp) = CHR$(0) + CHR$(tmp) A1$(tmp) = CHR$(tmp) A2$(tmp) = CHR$(0) + CHR$(tmp) NEXT IF sstring THEN FOR tmp = 0 TO 255 FOR tmp2 = 1 TO LEN(A1$(tmp)) IF MID$(A1$, tmp2, 1) = CHR$(27) THEN MID$(A1$, tmp2, 1) = "$" NEXT FOR tmp2 = 1 TO LEN(A2$(tmp)) IF MID$(A2$, tmp2, 1) = CHR$(27) THEN MID$(A2$, tmp2, 1) = "$" NEXT NEXT END IF DO LINE INPUT #2, change$ IF RTRIM$(change$) = "" THEN 3 printchar CHR$(27), 27 printchar "[", ASC("[") FOR tmp = 1 TO LEN(change$) printchar MID$(change$, tmp, 1), ASC(MID$(change$, tmp, 1)) NEXT printchar "p", ASC("p") 3 LOOP UNTIL EOF(2) 55 xlate$(0) = "" RETURN terminal: SCREEN , , 2, 2 trow = CSRLIN tcol = POS(0) VIEW PRINT 1 TO Lines LOCATE trow, tcol, 1 RTScontrol 1 RETURN REM $STATIC SUB box (row, col, height, wide) rrow = CSRLIN rcol = POS(0) LOCATE row, col PRINT ""; STRING$(wide - 2, 205) + ""; FOR trow = row + 1 TO row + height - 1 LOCATE trow, col PRINT ""; LOCATE , col + wide - 1 PRINT ""; NEXT LOCATE row + height - 1, col PRINT "" + STRING$(wide - 2, 205) + ""; LOCATE rrow, rcol END SUB SUB changesys (a, b) SHARED sys$(), cap$(), xlate$(), number$(), misc$() sys$(a) = sys$(b) xlate$(a) = xlate$(b) cap$(a) = cap$(b) number$(a) = number$(b) misc$(a) = misc$(b) END SUB SUB message (mess$) SHARED rlines, rlinesm1, columns, fclr, bclr, bold, blink rrow = CSRLIN rcol = POS(0) lm = LEN(mess$) IF lm > 74 THEN mess$ = LEFT$(mess$, 74): lm = 74 row = rlines \ 2 col = (columns - lm) \ 2 - 2 DIM char(row - 1 TO row + 1, col TO col + lm + 4, 0 TO 1) AS INTEGER FOR rw = row - 1 TO row + 1 FOR cl = col TO col + lm + 4 FOR blah = 0 TO 1 char(rw, cl, blah) = SCREEN(rw, cl, blah) NEXT NEXT NEXT COLOR 7, 0 box row - 1, col, 3, LEN(mess$) + 4 LOCATE row, col + 1 PRINT " " + mess$ + " "; tim = LEN(mess$) \ 20 + 1 LOCATE rrow, rcol SLEEP tim FOR rw = row - 1 TO row + 1 LOCATE rw, col FOR cl = col TO col + lm + 4 COLOR ((char(rw, cl, 1) AND 128) \ 8) + (char(rw, cl, 1) AND 8) + (char(rw, cl, 1) AND 7), (char(rw, cl, 1) AND 112) \ (2 ^ 4) PRINT CHR$(char(rw, cl, 0)); NEXT NEXT COLOR fclr - 8 * bold - 16 * blink, bclr LOCATE rrow, rcol END SUB SUB printchar (a$, a!) STATIC IF lastnul THEN 'totest 'play "t128l20d: PRINT "Lastnul"'totest IF a! > 0 THEN lastnul = false: PRINT a$; GOTO 30 ELSE GOTO 30 END IF END IF IF es = 2 AND ((a! >= 48 AND a! <= 57) OR a! = 59) THEN follow$ = follow$ + a$: GOTO 30 END IF SELECT CASE a! CASE 27, 36'"$" SELECT CASE es CASE 0 es = 1 escape$ = a$ CASE 1 IF escape$ = "$" THEN PRINT escape$; escape$ = a$ GOTO 95 CASE 2 es = 1 IF escape$ = "$" THEN PRINT "$["; follow$; ELSE IF showbad THEN message escape$ + "[" + follow$ escape$ = a$ GOTO 30 END SELECT CASE 91' "[" SELECT CASE es CASE 1 es = 2 CASE 0 PRINT "["; CASE 2 IF inquotes THEN follow$ = follow$ + "[" ELSE GOTO 10 END SELECT CASE 13 IF es = 1 THEN PRINT escape$; IF es = 2 AND escape$ = "$" THEN PRINT "$["; LOCATE , 1 CASE 10 IF es = 1 THEN PRINT escape$; IF es = 2 AND escape$ = "$" THEN PRINT "$["; tcol = POS(0) PRINT LOCATE , tcol CASE 8 IF es = 1 THEN PRINT escape$; IF es = 2 AND escape$ = "$" THEN PRINT "$["; IF POS(0) > 1 THEN LOCATE , POS(0) - 1 PRINT " "; LOCATE , POS(0) - 1 END IF CASE 9 'totest IF es = 1 THEN PRINT escape$; IF es = 2 AND escape$ = "$" THEN PRINT "$["; FOR tmp = POS(0) + 1 TO 80 IF tabs(tmp) THEN LOCATE , tmp GOTO 56 END IF NEXT LOCATE , 80 56 CASE 12 IF es = 1 THEN PRINT escape$; IF es = 2 AND escape$ = "$" THEN PRINT "$["; IF allowcls THEN CLS CASE 0 IF es = 1 THEN PRINT escape$; IF es = 2 AND escape$ = "$" THEN PRINT "$["; IF doorway THEN lastnul = true CASE 7 'PLAY "t128l20d"'debug CASE ELSE SELECT CASE es CASE 0: PRINT a$; CASE 2 IF musicseq THEN IF a$ = CHR$(14) THEN PLAY "MB " + follow$ 'debug 'PRINT follow$; 'debug musicseq = false GOTO 14 ELSE follow$ = follow$ + a$ IF LEN(follow$) > 300 THEN GOTO 10 END IF GOTO 20 END IF IF inquotes THEN follow$ = follow$ + a$ IF LEN(follow$) > 300 THEN GOTO 10 IF a! = 34 THEN inquotes = false GOTO 30 END IF SELECT CASE a$ CASE "m" follow$ = follow$ + ";" DO tmp = VAL(follow$) SELECT CASE tmp CASE 0 bold = false blink = false fclr = 7 bclr = 0 CASE 1: bold = true CASE 2: bold = false CASE 5, 6: blink = true CASE 7: fclr = 0: bclr = 7 CASE 8 bold = false fclr = bclr bclr = 0 CASE IS > 47: GOTO 8 CASE IS >= 40 bclr = clr(tmp - 10) CASE IS > 37: GOTO 8 CASE IS >= 30 fclr = clr(tmp) END SELECT follow$ = MID$(follow$, INSTR(follow$, ";") + 1) LOOP UNTIL follow$ = "" COLOR fclr - 8 * bold - 16 * blink, bclr CASE "H", "f" ffollow$ = follow$ + ";" tmps = 0 tmp(2) = 0 DO tmps = tmps + 1 IF tmps = 3 THEN GOTO 10 tmp(tmps) = VAL(ffollow$) ffollow$ = MID$(ffollow$, INSTR(ffollow$, ";") + 1) LOOP UNTIL ffollow$ = "" IF tmp(1) = 0 THEN tmp(1) = 1 IF tmp(1) > Lines THEN tmp(1) = Lines IF tmp(2) = 0 THEN tmp(2) = 1 IF tmp(2) > 80 THEN tmp(2) = 80 LOCATE tmp(1), tmp(2) CASE "A" tmp = VAL(follow$) IF tmp = 0 THEN tmp = 1 tmp = CSRLIN - tmp IF tmp < 1 THEN tmp = 1 LOCATE tmp CASE "B" tmp = VAL(follow$) IF tmp = 0 THEN tmp = 1 tmp = CSRLIN + tmp IF tmp > Lines THEN tmp = Lines LOCATE tmp CASE "D" tmp = VAL(follow$) IF tmp = 0 THEN tmp = 1 tmp = POS(0) - tmp IF tmp < 1 THEN tmp = 1 LOCATE , tmp CASE "C" tmp = VAL(follow$) IF tmp = 0 THEN tmp = 1 tmp = POS(0) + tmp IF tmp > columns THEN tmp = columns LOCATE , tmp CASE "s" IF follow$ <> "" THEN 10 scol = POS(0) srow = CSRLIN CASE "u" IF follow$ = "" THEN LOCATE srow, scol ELSE GOTO 10 CASE "@" icol = POS(0) tmp = VAL(follow$) IF tmp = 0 THEN tmp = 1 FOR ttmp = columns TO icol + tmp STEP -1 LOCATE , ttmp tmpc = SCREEN(CSRLIN, ttmp - tmp, 1) COLOR ((tmpc AND 128) \ 8) + (tmpc AND 8) + (tmpc AND 7), (tmpc AND 112) \ (2 ^ 4) PRINT CHR$(SCREEN(CSRLIN, ttmp - tmp)); NEXT LOCATE , icol PRINT STRING$(tmp, " "); LOCATE , icol CASE "n" 'PRINT status SELECT CASE follow$ CASE "?15": send "13n" CASE "6", "": IF status THEN send CHR$(27) + "[" + LTRIM$(RTRIM$(STR$(CSRLIN))) + ";" + RTRIM$(LTRIM$(STR$(POS(0)))) + "R" CASE "5": IF status THEN send CHR$(27) + "[0n" CASE "255": IF status THEN send CHR$(27) + RTRIM$(LTRIM$(STR$(Lines))) + ";" + RTRIM$(LTRIM$(STR$(columns))) + "R" CASE ELSE: GOTO 10 END SELECT follow$ = "" CASE "c" IF follow$ <> "" THEN GOTO 10 IF status THEN send CHR$(27) + "[?1;21c" CASE "J" ccol = POS(0) crow = CSRLIN SELECT CASE follow$ 'in pansi "2" = "" in dcterm "0" = "" CASE "2": IF allowcls THEN CLS ELSE GOTO 10 CASE "1" LOCATE 1, 1 FOR YY = 2 TO crow PRINT STRING$(columns, 32); NEXT PRINT STRING$(ccol, 32); CASE "0", "" PRINT STRING$(columns - ccol + 1, 32); FOR YY = crow + 1 TO Lines LOCATE YY, 1 PRINT STRING$(columns, 32); NEXT LOCATE crow, ccol CASE ELSE: GOTO 10 END SELECT CASE "K" kcol = POS(0) krow = CSRLIN SELECT CASE follow$ CASE "", "0" PRINT STRING$(columns - kcol, " "); LOCATE , kcol CASE "1" LOCATE , 1 PRINT STRING$(kcol, 32); LOCATE , kcol CASE "2" LOCATE , 1 PRINT STRING$(columns, 32); LOCATE krow, kcol CASE ELSE GOTO 10 END SELECT CASE "h", "l" SELECT CASE MID$(follow$, 2) CASE "7", "7" IF a$ = "l" THEN wrapping = false ELSE wrapping = true 'IF wrapping THEN message "Line character wrapping enabled" ELSE message "Command to disable line character wrapping ignored." CASE "6" IF a$ = "l" THEN Lines = rlinesm1 VIEW PRINT 1 TO rlinesm1 IF split THEN message "Split mode off" split = false END IF CASE "255" IF a$ = "h" THEN message "Doorway mode on" doorway = true ELSE doorway = false message "Doorway mode off" END IF CASE ELSE: GOTO 10 END SELECT CASE "" 'torevise'debug entry = 0 wordtemp$ = "" tochangeto$ = "" follow$ = follow$ + ";" inquotes = 0 FOR ttmp = 1 TO LEN(follow$) tmp$ = MID$(follow$, ttmp, 1) SELECT CASE ASC(tmp$) CASE 59 AND NOT inquotes entry = entry + 1 IF RIGHT$(wordtemp$, 1) = CHR$(34) AND LEFT$(wordtemp$, 1) = CHR$(34) THEN wordtemp$ = MID$(wordtemp$, 2, LEN(wordtemp$) - 2) ELSE FOR tttmp = 1 TO LEN(wordtemp$) tmp = ASC(MID$(wordtemp$, tttmp, 1)) IF tmp < 48 OR tmp > 57 THEN PRINT wordtemp$ + "": : GOTO 8 NEXT IF VAL(wordtemp$) > 255 THEN GOTO 8 ELSE wordtemp$ = CHR$(VAL(wordtemp$)) END IF IF entry = 1 THEN IF wordtemp$ = n$ THEN aa = 2 tochange = -1 ELSE IF LEN(wordtemp$) = 2 AND LEFT$(wordtemp$, 1) = n$ THEN aa = 2 tochange = ASC(RIGHT$(wordtemp$, 1)) ELSE IF LEN(wordtemp$) = 1 THEN aa = 1 tochange = ASC(wordtemp$) ELSE GOTO 8 END IF END IF END IF ELSE IF tochange = -1 THEN IF LEN(wordtemp$) > 1 THEN GOTO 8 ELSE tochange = ASC(wordtemp$) ELSE tochangeto$ = tochangeto$ + wordtemp$ END IF END IF wordtemp$ = "" CASE ELSE wordtemp$ = wordtemp$ + tmp$ IF tmp$ = CHR$(34) THEN inquotes = NOT inquotes END SELECT NEXT ttmp IF aa = 1 THEN PRINT 'debug PRINT CHR$(tochange); "-----"; tochangeto$'debug IF NOT INSTR(tochangeto$, "=x") THEN 'debug A1$(tochange) = tochangeto$ ra1$(tochange) = tochangeto$ END IF ELSE IF tochange = -1 THEN GOTO 8 ELSE PRINT 'debug PRINT CHR$(tochange); "-----"; tochangeto$'debug IF NOT INSTR(tochangeto$, "=x") THEN 'debug A2$(tochange) = tochangeto$ ra2$(tochange) = tochangeto$ END IF END IF END IF CASE "P" 'totest ffollow$ = follow$ + ";" tmps = 0 tmp(2) = 0 DO tmps = tmps + 1 IF tmps = 3 THEN GOTO 10 tmp(tmps) = VAL(ffollow$) ffollow$ = MID$(ffollow$, INSTR(ffollow$, ";") + 1) LOOP UNTIL ffollow$ = "" IF tmp(2) = 0 THEN icol = POS(0) word1 = tmp(1) IF word1 = 0 THEN word1 = 1 IF word1 > columns - icol + 1 THEN word1 = columns - icol + 1 FOR ttmp = icol TO columns - word1 tmpc = SCREEN(CSRLIN, ttmp + word1, 1) COLOR ((tmpc AND 128) \ 8) + (tmpc AND 8) + (tmpc AND 7), (tmpc AND 112) \ (2 ^ 4) PRINT CHR$(SCREEN(CSRLIN, ttmp + word1)); NEXT LOCATE , columns - word1 + 1 PRINT STRING$(word1, " "); LOCATE , icol ELSE message "Request to print" + STR$(word1) + " characters to LPT" + STR$(word2) + " ignored." END IF CASE "r" ffollow$ = follow$ + ";" tmps = 0 tmp(2) = 0 DO tmps = tmps + 1 IF tmps = 3 THEN GOTO 10 tmp(tmps) = VAL(ffollow$) ffollow$ = MID$(ffollow$, INSTR(ffollow$, ";") + 1) LOOP UNTIL ffollow$ = "" IF tmp(0) = 0 THEN tmp(0) = 1 IF tmp(2) = 0 THEN tmp(2) = rlines first = tmp(1) second = tmp(2) IF first > 1 THEN first = 1 message "Upper bound of viewport not yet supported"'todo END IF IF second >= rlinesm1 THEN IF second > rlines THEN second = rlines IF split THEN message "Split mode off" split = false END IF IF second - first < 2 THEN GOTO 10 VIEW PRINT first TO second Lines = second IF Lines = rlines THEN Lines = rlinesm1 CASE "S" 'totest trow = CSRLIN tcol = POS(0) LOCATE Lines PRINT LOCATE trow, tcol CASE "T" IF follow$ <> "" THEN GOTO 10 IF CSRLIN > 1 THEN LOCATE CSRLIN - 1 ELSE icol = POS(0) LOCATE , , 0 FOR trow = Lines TO 2 STEP -1 LOCATE trow, 1 FOR tcol = 1 TO 80 tmpc = SCREEN(trow - 1, tcol, 1) COLOR ((tmpc AND 128) \ 8) + (tmpc AND 8) + (tmpc AND 7), (tmpc AND 112) \ (2 ^ 4) PRINT CHR$(SCREEN(trow - 1, tcol)); NEXT NEXT LOCATE 1, 1 PRINT STRING$(80, 32) LOCATE 1, icol, 1 END IF CASE "!" 'totest SELECT CASE follow$ CASE "", "0" 'message "RIPscrip terminal inquiry ignored" CASE "1" 'message "Request to disable RIPscrip processing ignored" CASE "2" 'message "Request to enable RIPcrip processing ignored" CASE ELSE GOTO 10 END SELECT CASE "L" tmp = VAL(follow$) LOCATE , , 0 IF tmp = 0 THEN tmp = 1 IF tmp > Lines - irow + 1 THEN tmp = Lines - irow + 1 icol = POS(0) irow = CSRLIN FOR trow = Lines TO irow + tmp STEP -1 LOCATE trow, 1 FOR tcol = 1 TO 80 tmpc = SCREEN(trow - tmp, tcol, 1) COLOR ((tmpc AND 128) \ 8) + (tmpc AND 8) + (tmpc AND 7), (tmpc AND 112) \ (2 ^ 4) PRINT CHR$(SCREEN(trow - tmp, tcol)); NEXT NEXT LOCATE irow, 1 FOR trow = irow TO irow + tmp - 1 PRINT STRING$(80, 32); NEXT LOCATE irow, icol, 1 CASE "M", "Y" IF mmusic AND a$ = "M" THEN musicseq = true: GOTO 30 tmp = VAL(follow$) LOCATE , , 0 IF tmp = 0 THEN tmp = 1 IF tmp > Lines - irow + 1 THEN tmp = Lines - irow + 1 icol = POS(0) irow = CSRLIN FOR trow = irow TO Lines - tmp LOCATE trow, 1 FOR tcol = 1 TO 80 tmpc = SCREEN(trow + tmp, tcol, 1) COLOR ((tmpc AND 128) \ 8) + (tmpc AND 8) + (tmpc AND 7), (tmpc AND 112) \ (2 ^ 4) PRINT CHR$(SCREEN(trow + tmp, tcol)); NEXT NEXT LOCATE Lines - tmp + 1, 1 FOR trow = Lines - tmp + 1 TO Lines PRINT STRING$(80, 32); NEXT LOCATE irow, icol, 1 follow$ = "" CASE "U" 'totest IF follow$ <> "" THEN GOTO 10 IF allowcls THEN LOCATE 1, 1 PRINT "A" tmpc = SCREEN(1, 1, 1) COLOR 7, 0 CLS COLOR ((tmpc AND 128) \ 8) + (tmpc AND 8) + (tmpc AND 7), (tmpc AND 112) \ (2 ^ 4) END IF CASE "Z"'totest tmp = VAL(follow$) tabs = 0 IF tmp = 0 THEN tmp = 1 FOR xx = POS(0) - 1 TO 1 STEP -1 IF tabs(xx) THEN tabs = tabs + 1 IF tabs = tmp THEN LOCATE , xx: GOTO 14 END IF NEXT LOCATE , 1 CASE "g" 'totest SELECT CASE follow$ CASE "", "0" tabs(POS(0)) = false CASE "3" FOR tmp = 1 TO 80 tabs(tmp) = false NEXT CASE ELSE GOTO 10 END SELECT CASE "z" IF follow$ <> "" THEN GOTO 10 GOSUB rst CASE "b" ffollow$ = follow$ + ";" FOR tmp = 0 TO 10 tmp(tmp) = 0 NEXT tmps = 0 DO IF tmps = 6 THEN GOTO 10 tmps = tmps + 1 tmp(tmps) = VAL(ffollow$) ffollow$ = MID$(ffollow$, INSTR(ffollow$, ";") + 1) LOOP UNTIL ffollow$ = "" SELECT CASE tmp(1) CASE 0 IF tmps = 1 THEN send "003" IF mmusic THEN message CHR$(27) + "[M = delete line for Banana ANSI" mmusic = false END IF ELSE GOTO 10 END IF CASE 1, 2 rrow = CSRLIN rcol = POS(0) trow = tmp(2) IF trow = 0 THEN trow = 1 IF trow > Lines THEN trow = Lines tcol = tmp(3) IF tcol = 0 THEN tcol = 1 IF tcol > 80 THEN GOTO 10 height = tmp(4) IF height = 0 THEN height = Lines - trow + 1 trow2 = trow + height - 1 IF trow2 > Lines THEN trow2 = Lines: height = Lines - trow + 1 wide = tmp(5) IF wide = 0 THEN wide = 80 IF wide = 1 THEN wide = 2 tcol2 = tcol + wide - 1 IF tcol2 > 80 THEN GOTO 10 clr = tmp(6) IF tmps = 6 THEN COLOR ((clr AND 128) \ 8) + (clr AND 8) + (clr AND 7), (clr AND 112) \ (2 ^ 4) IF tmp(1) = 1 THEN LOCATE , , 0 FOR ttrow = trow TO trow2 LOCATE ttrow, tcol FOR ttcol = tcol TO tcol2 PRINT CHR$(SCREEN(ttrow, ttcol)); NEXT NEXT LOCATE , , 1 ELSE box trow, tcol, height, wide END IF COLOR fclr - 8 * bold - 16 * blink, bclr LOCATE rrow, rcol CASE 3 LOCATE , , 0 FOR trow = 1 TO Lines FOR tcol = 1 TO 80 FOR blah = 0 TO 1 preserve(trow, tcol, blah) = SCREEN(trow, tcol, blah) NEXT NEXT NEXT LOCATE , , 1 CASE 4 rrow = CSRLIN rcol = POS(0) LOCATE 1, 1, 0 FOR trow = 1 TO Lines FOR tcol = 1 TO 80 tmpc = preserve(trow, tcol, 1) COLOR ((tmpc AND 128) \ 8) + (tmpc AND 8) + (tmpc AND 7), (tmpc AND 112) \ (2 ^ 4) PRINT CHR$(preserve(trow, tcol, 0)); NEXT NEXT LOCATE rrow, rcol, 1 COLOR fclr - 8 * bold - 16 * blink, bclr END SELECT CASE CHR$(34) inquotes = true follow$ = follow$ + a$ IF LEN(follow$) > 300 THEN GOTO 10 GOTO 30 CASE "=", "?" IF follow$ = "" THEN follow$ = a$: GOTO 30 ELSE GOTO 10 CASE ">" message LEFT$(MID$(follow$, 2, LEN(follow$) - 2), 74) CASE ELSE GOTO 10 END SELECT follow$ = "" es = 0 CASE 1 IF escape$ = "$" THEN GOTO 9 SELECT CASE a$ 'totest CASE "7" row78 = CSRLIN col78 = POS(0) CASE "8" LOCATE row78, col78 CASE "c" GOSUB rst CASE "D", "E" IF CSRLIN < Lines THEN LOCATE CSRLIN + 1 ELSE PRINT IF a$ = "E" THEN LOCATE , 1 CASE "M" IF CSRLIN > 1 THEN LOCATE CSRLIN - 1 ELSE icol = POS(0) LOCATE , , 0 FOR trow = Lines TO 2 STEP -1 LOCATE trow, 1 FOR tcol = 1 TO 80 tmpc = SCREEN(trow - 1, tcol, 1) COLOR ((tmpc AND 128) \ 8) + (tmpc AND 8) + (tmpc AND 7), (tmpc AND 112) \ (2 ^ 4) PRINT CHR$(SCREEN(trow - 1, tcol)); NEXT NEXT LOCATE 1, 1 PRINT STRING$(80, 32) LOCATE 1, icol, 1 END IF CASE "H" tabs(POS(0)) = true CASE ELSE GOTO 10 END SELECT es = 0 END SELECT END SELECT GOTO 20 8 IF escape$ = "$" THEN PRINT escape$ + "[" + LEFT$(follow$, LEN(follow$) - 1) + a$; ELSE IF showbad THEN message escape$ + "[" + LEFT$(follow$, LEN(follow$) - 1) + a$ GOTO 14 9 IF escape$ = "$" THEN PRINT escape$ + a$; ELSE IF showbad THEN message escape$ + a$ GOTO 14 10 IF escape$ = "$" THEN PRINT escape$ + "[" + follow$ + a$; ELSE IF showbad THEN message escape$ + "[" + follow$ + a$ 14 es = 0 95 inquotes = false follow$ = "" 20 entries = 0 wordtemp$ = "" GOTO 30 rst: VIEW PRINT 1 TO rlinesm1 Lines = rlinesm1 IF split THEN message "Split mode off" split = false COLOR 7, 0 FOR tmp = 1 TO 80 IF tmp MOD 8 = 0 THEN tabs(tmp) = true ELSE tabs(tmp) = false NEXT IF allowcls THEN CLS IF doorway THEN message "Doorway mode off" doorway = false 'IF NOT wrapping THEN PRINT "Line character wrapping enabled" wrapping = true RETURN 30 END SUB SUB PRINTentry (whichone) SHARED xlate$(), sys$(), number$(), cap$() 'IF RTRIM$(xlate$(whichone)) = "" AND RTRIM$(sys$(whichone)) = "" AND RTRIM$(number$(whichone)) = "" AND RTRIM$(cap$(whichone)) = "" THEN ' PRINT STRING$(80, "_"); 'ELSE PRINT USING "\ \\ \\ \\ \"; sys$(whichone); number$(whichone); xlate$(whichone); cap$(whichone); 'END IF END SUB SUB send (a$) FOR X = 1 TO LEN(a$) transmit MID$(a$, X, 1) FOR delay = 1 TO ups / bcps: NEXT NEXT END SUB