$IF 0
SCR2ANS.BAS ScreenToAnsi SCR2ANS.BAS
Version 1.0
Copyright 1995 by AhuraMazda(tm) Software
Written by Jamshid Khoshrangi
NOTES:
Since this program uses pointers, it is PB 3.2 compatible only.
This rough and dirty little TSR captures an 80x25 text screen
to a file called SCREEN.ANS in the root directory of the c:
drive. The file contains the appropriate ANSI codes to
reproduce the captured screen exactly either in an ANSI
emulator, or through an ANSI console driver like ANSI.SYS.
The codes themselves are not optimized as well as they could be.
Jamshid
$ENDIF
$ERROR ALL OFF
$LIB ALL OFF
$STRING 1
$COM 0
$SOUND 1
DEFINT A-Z
%Black = 0 : %LowBlue = 1 : %LowGreen = 2 : %LowCyan = 3
%LowRed = 4 : %LowMagenta = 5 : %Brown = 6 : %LowWhite = 7
%Gray = 8 : %HighBlue = 9 : %HighGreen = 10: %HighCyan = 11
%HighRed = 12: %HighMagenta= 13: %Yellow = 14: %HighWhite = 15
%Blink = 16: %CursorOff = 0 : %CursorOn = 1
%FOREGROUND = 1
%BACKGROUND = 2
TYPE Video
char AS BYTE
attr AS BYTE
END TYPE
DIM cell AS Video PTR
' Program begins here!
IF BIT(pbvScrnCard, 0) THEN
cell = &HB000?? * 65536??
ELSE
cell = &HB800?? * 65536??
END IF
X& = SETMEM(-700000)
X& = SETMEM(10000)
POPUP KEY CHR$(12, 30, 247) ' CTRL-ALT-A
DO
POPUP SLEEP USING EMS
IF DIR$("C:\SCREEN.ANS") "" THEN
KILL "C:\SCREEN.ANS"
END IF
OPEN "C:\SCREEN.ANS" FOR BINARY AS #1
Temp$ = CHR$(27) + "[0m" + CHR$(27) + "[2J"
PUT #1, , Temp$
OldForeColor = 7
OldBackColor = 0
FOR Row = 1 TO 25
$IF 0
Temp$ = CHR$(27) + "[" + LTRIM$(RTRIM$(STR$(Row))) + "H"
PUT #1, , Temp$
OldForeColor = 7
OldBackColor = 0
OldBold = 0
OldBlink = 0
$ENDIF
FOR Column = 1 TO 80
attr = @cell.attr
ForeColor = Attr MOD 16
BackColor = Attr \ 16
Bold = BIT(ForeColor, 3)
Blink = BIT(BackColor, 3)
OutAnsi$ = ""
IF Bold OldBold OR Blink OldBlink THEN
OutAnsi$ = CHR$(27) + "[0"
OldBold = Bold
OldBlink = Blink
END IF
IF ForeColor OldForeColor OR BackColor OldBackColor THEN
SELECT CASE OutAnsi$
CASE ""
OutAnsi$ = CHR$(27) + "["
CASE ELSE
OutAnsi$ = OutAnsi$ + ";"
END SELECT
IF ForeColor OldForeColor THEN
OldForeColor = ForeColor
OutAnsi$ = OutAnsi$ +_
ToAnsiColor(ForeColor, %FOREGROUND)
END IF
IF BackColor OldBackColor THEN
IF LEN(OutAnsi$) > 2 THEN
OutAnsi$ = OutAnsi$ + ";"
END IF
OldBackColor = BackColor
OutAnsi$ = OutAnsi$ +_
ToAnsiColor(BackColor, %BACKGROUND)
END IF
OutAnsi$ = OutAnsi$ + "m"
PUT #1, , OutAnsi$
ELSE
SELECT CASE OutAnsi$
CASE ""
CASE ELSE
OutAnsi$ = OutAnsi$ + "m"
PUT #1, , OutAnsi$
END SELECT
END IF
>>> Continued to next message
* OLX 2.1 TD * Ask me about LANSI.BAS and ARDAF.BAS
--- Maximus/2 2.01wb
---------------
* Origin: Sound Stage BBS - Live Via Satellite - (604)944-6476 (1:153/7070)
|