BBS: Inland Empire Archive Date: 02-20-93 (11:17) Number: 391 From: JEFF FREEMAN Refer#: NONE To: ALL Recvd: NO Subj: Ansisub 2/2 Conf: (2) Quik_Bas
SUB DoAnsi (Ansi$) STATIC
'This sub is passed a single ANSI escape sequence in Ansi$
'and processes that ansi escape sequence. It must be STATIC
'so that 'remembered' cursor locations and colors will remain
'remembered.
Cmnd$ = RIGHT$(Ansi$, 1): N = 0:
DIM Parm(9): Ansi$ = MID$(Ansi$, 3) + ";"
P = INSTR(Ansi$, ";")
WHILE P
N = N + 1: Parm(N) = VAL(Ansi$)
Ansi$ = MID$(Ansi$, P + 1): P = INSTR(Ansi$, ";")
WEND
SELECT CASE Cmnd$
CASE "m"
FOR c = 1 TO N
SELECT CASE Parm(c)
CASE 0: Fc = 7: Bc = 0: Bl = 0: Hi = 0
CASE 1: Hi = 8
CASE 5: Bl = 16
CASE 30: Fc = 0
CASE 31: Fc = 4
CASE 32: Fc = 2
CASE 33: Fc = 6
CASE 34: Fc = 1
CASE 35: Fc = 5
CASE 36: Fc = 3
CASE 37: Fc = 7
CASE 40: Bc = 0
CASE 41: Bc = 4
CASE 42: Bc = 2
CASE 43: Bc = 6
CASE 44: Bc = 1
CASE 45: Bc = 5
CASE 46: Bc = 3
CASE 47: Bc = 7
END SELECT
NEXT c
IF Fc <> OFc OR Bc <> OBc THEN COLOR Fc + Bl + Hi, Bc
OFc = Fc: OBc = Bc
CASE "J" : CLS 2
CASE "F", "H"
IF Parm(1) THEN LOCATE Parm(1), Parm(2) ELSE LOCATE 1,1
CASE "s": MemX = CSRLIN: MemY = POS(0)
CASE "u": IF MemX <> 0 THEN LOCATE MemX, MemY
CASE "K"
X = CSRLIN: Y = POS(0)
PRINT SPACE$(80 - POS(0)); : LOCATE X, Y
CASE "A": LOCATE CSRLIN - Parm(1)
CASE "B": LOCATE CSRLIN + Parm(1)
CASE "C": LOCATE , POS(0) + Parm(1)
CASE "D": LOCATE , POS(0) - Parm(1)
END SELECT
END SUB
=====8<===============8<==============8<===========
---
* Origin: WarWorld's point away from home... (1:124/7006.1)

Books at Amazon:
Back to BASIC: The History, Corruption, and Future of the Language
Hackers: Heroes of the Computer Revolution (including Tiny BASIC)
Go to: The Story of the Math Majors, Bridge Players, Engineers, Chess Wizards, Scientists and Iconoclasts who were the Hero Programmers of the Software Revolution
The Advent of the Algorithm: The Idea that Rules the World
Moths in the Machine: The Power and Perils of Programming
Mastering Visual Basic .NET