home
***
CD-ROM
|
disk
|
FTP
|
other
***
search
/
C!T ROM 2
/
ctrom_ii_b.zip
/
ctrom_ii_b
/
PROGRAM
/
FOXPRO
/
GAGEDE
/
GAGEDEMO.PRG
next >
Wrap
Text File
|
1993-12-14
|
22KB
|
816 lines
****************************************************************************
* GAGEDEMO.PRG *
* *
* LED Gauge Demonstration Program *
* *
* Author: Ed Duchesne CIS [70720,1423] *
* Date: December 17, 1993 *
* Requires: files - LOADFONT.EXE, LEDGAUGE.FON, NORMAL.FON *
* FoxPro - DOS version only. Hardware - VGA Monitor. *
****************************************************************************
****************************************************************************
*
* Notes: The included files loadfont.exe, ledgauge.fon and normal.fon must
* be in the current foxpro default directory or on the current path. The
* loadfont program reads the font files and replaces the character set on
* your VGA card. You must include the entire file name for the font you
* wish to use. Loadfont.exe can be used from the DOS commmand line or while
* in FoxPro: e.g. - From inside FoxPro - RUN LOADFONT LEDGAUGE.FON
* From DOS Prompt - LOADFONT LEDGAUGE.FON
* The Gagedemo program automatically runs loadfont at startup and shutdown.
* To get a better idea of what this does scroll this file down to the
* LEDStr Function (last function in this listing) and have a good look at it,
* then from the Command window in FoxPro type RUN LOADFONT LEDGAUGE.FON
* and then view the LEDStr Function again. To return to a regular font
* type RUN LOADFONT NORMAL.FON or use the DOS Command MODE CO80.
* Note - this only works in VGA25 mode, if you change to VGA50 for a moment
* the LEDGAUGE.FON will be replaced with your regular font.
* To see which characters have been changed after loading the LEDGAUGE font
* file view the ASCII Chart under the 'System' menu option in FoxPro.
* If you want to expand on the ideas included in this program I recommend
* you download a copy of Michael J. Mefford's FONTED.COM from Compuserve.
* Fonted.com allows you to create your own VGA fonts and similar to the
* one used for this demo. The Fonted zip file also has a DOC file with good
* details on replacing VGA fonts.
* LOADFONT.EXE was created with Borland Pascal 7.
* The LOADFONT.EXE and .FON files as well as this program file may be
* distributed as public domain.
*
* If you find any of the ideas included in this demo useful in you own
* applications or have any questions about these techniques please
* drop me a line or give me a call.
*
* Ed Duchesne
* 3960-76st
* Edmonton,Alberta (Canada)
* T6K-1V6
*
* CIS [70720,1423]
* Phone - Day: (403) 468-1133, Evening: (403) 463-0008.
****************************************************************************
IF Initialize()
DO Main
DO ShutDown
ENDIF
FUNCTION Initialize
SET DISPLAY TO VGA25
IF FILE('LOADFONT.EXE') AND FILE('LEDGAUGE.FON')
RUN LOADFONT.EXE LEDGAUGE.FON
ELSE
WAIT "Required File(s) LOADFONT.EXE and/or LEDGAUGE.FON not available" WINDOW
WAIT "LOADFONT.EXE,LEDGAUGE.FON and NORMAL.FON must be in default directory" WINDOW
RETURN .F.
ENDIF
PUSH KEY CLEAR
PUBLIC TalkSave,ColorSave,BlinkSave,EscapeSave
IF SET('TALK') = 'ON'
SET TALK OFF
TalkSave = 'ON'
ELSE
TalkSave = 'OFF'
ENDIF
IF SET('BLINK') = 'OFF'
SET BLINK ON
BlinkSave = 'OFF'
ELSE
BlinkSave = 'ON'
ENDIF
IF SET('ESCAPE') = 'ON'
SET ESCAPE OFF
EscapeSave = 'ON'
ELSE
EscapeSave = 'OFF'
ENDIF
ColorSave = SET('COLOR')
SET COLOR TO W+/B
SET CURSOR OFF
CLEAR
RETURN .T.
PROCEDURE Main
DO DrawMenu && Paint menu on screen
ON KEY LABEL LEFTMOUSE DO MouseReport
* Simple event loop
DO WHILE .T.
CurrKey = INKEY(0,'M')
DO CASE
CASE CurrKey = 151
IF NOT MouseReport()
EXIT
ENDIF
CASE CurrKey = -1
DO F2Button
CASE CurrKey = -2
DO F3Button
CASE CurrKey = -3
DO F4Button
CASE CurrKey = 27
DO QuitButton
EXIT
ENDCASE
ENDDO
RETURN
PROCEDURE Shutdown
SET TALK &TalkSave
SET COLOR TO &ColorSave
SET BLINK &BlinkSave
SET ESCAPE &EscapeSave
SET CURSOR ON
RELEASE TalkSave,ColorSave,BlinkSave,EscapeSave
CLEAR
POP KEY
IF FILE('LOADFONT.EXE') AND FILE('NORMAL.FON')
RUN LOADFONT.EXE NORMAL.FON
ELSE
WAIT "Required File(s) LOADFONT.EXE and/or NORMAL.FON not available." WINDOW
WAIT "You can restore regular font with DOS Command: MODE CO80" WINDOW
ENDIF
RETURN
PROCEDURE DrawMenu
* Menu Bar
=FillArea(2,3,3,74,' ','N/W')
=DrawFrame(1,2,3,74,'W+/B','N+/B',.F.)
* Button outlines
=DrawFrame(2,4,1,16,'W+/W','N+/W',.F.) && F2 Button
=DrawFrame(2,22,1,16,'W+/W','N+/W',.F.) && F3 Button
=DrawFrame(2,40,1,21,'W+/W','N+/W',.F.) && F4 Button
=DrawFrame(2,63,1,11,'W+/W','N+/W',.F.) && Quit Button
* Button text
@ 3,6 SAY 'LED Gauges' COLOR N/W
@ 3,18 SAY 'F2' COLOR W+/W
@ 3,24 SAY 'Bar Gauges' COLOR N/W
@ 3,36 SAY 'F3' COLOR W+/W
@ 3,42 SAY 'Gauges Combined' COLOR N/W
@ 3,59 SAY 'F4' COLOR W+/W
@ 3,65 SAY 'Quit' COLOR N/W
@ 3,71 SAY 'ESC' COLOR W+/W
RETURN
* Called when left mouse button pressed
* Checks to see if mouse pointer is located over a button
FUNCTION MouseReport
PRIVATE Row,Col,Trash
Row = MROW("")
Col = MCOL("")
IF Row = 3
Trash = INKEY('M') && Throw away character in buffer
IF Col > 4 AND Col < 21 && F2
DO F2Button
RETURN .T.
ENDIF
IF Col > 22 AND Col < 39 && F3
DO F3Button
RETURN .T.
ENDIF
IF Col > 40 AND Col < 62 && F4
DO F4Button
RETURN .T.
ENDIF
IF Col > 63 AND Col < 75 && Quit
DO QuitButton
RETURN .F.
ENDIF
ENDIF
RETURN .T.
PROCEDURE F2Button
* Animate the button
=DrawFrame(2,4,1,16,'W+/W','N+/W',.T.)
WAIT "" TIMEOUT 0.01
=DrawFrame(2,4,1,16,'W+/W','N+/W',.F.)
DO LEDGauges
RETURN
PROCEDURE F3Button
=DrawFrame(2,22,1,16,'W+/W','N+/W',.T.)
WAIT "" TIMEOUT 0.01
=DrawFrame(2,22,1,16,'W+/W','N+/W',.F.)
DO BarGauges
RETURN
PROCEDURE F4Button
=DrawFrame(2,40,1,21,'W+/W','N+/W',.T.)
WAIT "" TIMEOUT 0.01
=DrawFrame(2,40,1,21,'W+/W','N+/W',.F.)
DO BothGauges
RETURN
PROCEDURE QuitButton
=DrawFrame(2,63,1,11,'W+/W','N+/W',.T.)
WAIT "" TIMEOUT 0.01
=DrawFrame(2,63,1,11,'W+/W','N+/W',.F.)
RETURN
* Display and animate a window with LED & LCD type digits
PROCEDURE LEDGauges
=FillArea(7,3,16,74,' ','N/W')
=DrawFrame(6,2,16,74,'W+/B','N+/B',.F.)
@ 7,25 SAY "Press any key to stop display" COLOR N/W
=DrawFrame(8,4,8,70,'W+/W','N+/W',.T.)
=DrawFrame(10,7,4,18,'W+/W','N+/W',.F.)
@ 11,9 SAY "Date" COLOR N/W
=DrawFrame(10,30,4,16,'W+/W','N+/W',.F.)
@ 11,32 SAY "Time" COLOR N/W
=DrawFrame(10,51,4,19,'W+/W','N+/W',.F.)
@ 11,53 SAY "SSM" COLOR N/W
@ 19,36 SAY "Counters" COLOR N/W
=DrawFrame(18,18,2,10,'W+/W','N+/W',.T.)
=DrawFrame(18,50,2,10,'W+/W','N+/W',.T.)
Counter1 = 0
Counter2 = -9999
LEDRun = .T.
SET COLOR TO G+/N
=LEDStr(12,9,DTOC(DATE()))
ON KEY LEDRun = .F. && Stop on any key press
DO WHILE LEDRun
* Set Values for counters
Counter1 = Counter1 + 1
IF Counter1 > 9999
Counter1 = -9999
ENDIF
Counter2 = Counter2 + 1
IF Counter2 > 9999
Counter2 = -9999
ENDIF
SET COLOR TO G+/N
=LEDStr(12,32,TIME()) && Display current time
=LEDStr(12,53,STR(SECONDS(),9,2)) && Display Seconds Since Midnight
SET COLOR TO N/W
=LEDStr(19,19,STR(Counter1,5,0)) && Display LCD Counter 1
=LEDStr(19,51,STR(Counter2,5,0)) && Display LCD Counter 2
ENDDO
Trash = INKEY() && Throw away last keystroke
ON KEY
=FillArea(6,2,18,76,' ','W+/B') && Erase window
RETURN
* Display and animate 3 horizontal bar gauges
PROCEDURE BarGauges
=FillArea(7,13,15,54,' ','N/W')
=DrawFrame(6,12,15,54,'W+/B','N+/B',.F.)
@ 7,21 SAY "Press any key or mouse to stop display" COLOR N/W
=DrawFrame(8,14,11,50,'W+/W','N+/W',.T.)
=DrawFrame(9,22,9,33,'W+/W','N+/W',.F.)
=DrawFrame(11,29,5,23,'W+/W','N+/W',.T.)
@ 12,24 SAY "Red" COLOR W+/W
@ 13,24 SAY "Green" COLOR W+/W
@ 14,24 SAY "Blue" COLOR W+/W
@ 15,30 SAY '╫' COLOR N/W
@ 15,40 SAY '│' COLOR N/W
@ 15,50 SAY '╫' COLOR N/W
@ 16,30 SAY '0%' COLOR W+/W
@ 16,39 SAY '50%' COLOR W+/W
@ 16,49 SAY '100%' COLOR W+/W
* Variable Starting Values
Bar1Value = 0
Bar2Value = -20
Bar3Value = -50
Bar1CountUp = .T. && direction of bar movement .F. = reverse
Bar2CountUp = .T.
Bar3CountUp = .T.
BarRun = .T.
DO WHILE BarRun && Run until key or mouse press
IF Bar1CountUp
Bar1Value = Bar1Value + 1
IF Bar1Value > 85
Bar1CountUp = .F.
ENDIF
ELSE
Bar1Value = Bar1Value - 1
IF Bar1Value < (-20)
Bar1CountUp = .T.
ENDIF
ENDIF
* Set values for the bars
IF Bar2CountUp
Bar2Value = Bar2Value + 1
IF Bar2Value > 110
Bar2CountUp = .F.
ENDIF
ELSE
Bar2Value = Bar2Value - 1
IF Bar2Value < (-17)
Bar2CountUp = .T.
ENDIF
ENDIF
IF Bar3CountUp
Bar3Value = Bar3Value + 1
IF Bar3Value > 102
Bar3CountUp = .F.
ENDIF
ELSE
Bar3Value = Bar3Value - 1
IF Bar3Value < 21
Bar3CountUp = .T.
ENDIF
ENDIF
* Draw the bars
SET COLOR TO R/W
=DrawBar(12,31,Bar1Value)
SET COLOR TO G/W
=DrawBar(13,31,Bar2Value)
SET COLOR TO B/W
=DrawBar(14,31,Bar3Value)
IF INKEY(0.01,'M') <> 0 && If key or mouse pressed
BarRun = .F.
ENDIF
ENDDO
=FillArea(6,12,17,56,' ','W+/B') && Erase the window
RETURN
* Display and animate LED gauges, bars and annunciator lights
PROCEDURE BothGauges
=FillArea(7,3,16,74,' ','N/W')
=DrawFrame(6,2,16,74,'W+/B','N+/B',.F.)
@ 7,25 SAY "Press any key to stop display" COLOR N/W
=DrawFrame(8,4,13,70,'W+/W','N+/W',.T.)
* RPM Frames
=DrawFrame(10,13,2,8,'W+/W','N+/W',.T.)
=DrawFrame(14,13,2,8,'W+/W','N+/W',.T.)
=DrawFrame(18,13,2,8,'W+/W','N+/W',.T.)
* Bar gauge frames
=DrawFrame(10,25,2,20,'W+/W','N+/W',.T.)
=DrawFrame(14,25,2,20,'W+/W','N+/W',.T.)
=DrawFrame(18,25,2,20,'W+/W','N+/W',.T.)
* Percentage display frames
=DrawFrame(10,49,2,9,'W+/W','N+/W',.T.)
=DrawFrame(14,49,2,9,'W+/W','N+/W',.T.)
=DrawFrame(18,49,2,9,'W+/W','N+/W',.T.)
* Annunciator light bezels
=DrawFrame(10,63,2,8,'W+/W','N+/W',.F.)
=DrawFrame(14,63,2,8,'W+/W','N+/W',.F.)
=DrawFrame(18,63,2,8,'W+/W','N+/W',.F.)
@ 9,14 SAY "R.P.M." COLOR N/W
@ 9,26 SAY "Relative" COLOR N/W
@ 9,50 SAY "Percent" COLOR N/W
@ 9,64 SAY "Status" COLOR N/W
@ 11,6 SAY "Motor 1" COLOR N/W
@ 15,6 SAY "Motor 2" COLOR N/W
@ 19,6 SAY "Motor 3" COLOR N/W
* Display empty values in LED gauge positions
SET COLOR TO BG+/N
=LEDStr(11,14,' 0')
=LEDStr(15,14,' 0')
=LEDStr(19,14,' 0')
SET COLOR TO G+/N
=LEDStr(11,50,' 0.0')
=LEDStr(15,50,' 0.0')
=LEDStr(19,50,' 0.0')
* Initialize variables
M1Up = .T.
M2Up = .T.
M3Up = .T.
M1Value = 0
M2Value = -175
M3Value = -360
M1Percent = 0.0
M2Percent = 0.0
M3Percent = 0.0
RunMotor = .T.
ON KEY RunMotor = .F.
DO WHILE RunMotor
DO DisplayM1 && Display top set of gauges
DO DisplayM2 && Display middle set of gauges
DO DisplayM3 && Display bottom set of gauges
ENDDO
ON KEY
Trash = INKEY() && Throw away last keystroke
=FillArea(6,2,18,76,' ','W+/B') && Erase window
RETURN
PROCEDURE DisplayM1
IF M1Up
M1Value = M1Value + 1
IF M1Value > 0
M1Percent = (M1Value / 1000) * 100
ELSE
M1Percent = 0.0
ENDIF
IF M1Value > 1075
M1Up = .F.
ENDIF
ELSE
M1Value = M1Value - 1
IF M1Value > 0
M1Percent = (M1Value / 1000) * 100
ELSE
M1Percent = 0.0
ENDIF
IF M1Value < -61
M1Up = .T.
ENDIF
ENDIF
IF M1Value >= 0
SET COLOR TO BG+/N
=LEDStr(11,14,STR(M1Value,4,0))
ENDIF
SET COLOR TO B/W
IF M1Value > 0
=DrawDoubleBar(11,26,INT(M1Percent))
ELSE
=DrawDoubleBar(11,26,0)
ENDIF
IF M1Percent < 75.1
SET COLOR TO G+/N
ELSE
IF M1Percent > 90
SET COLOR TO R+/N
ELSE
SET COLOR TO GR+/N
ENDIF
ENDIF
=LEDStr(11,50,STR(M1Percent,5,1))
IF M1Percent <= 100
SET COLOR TO W+/G
@ 11,64 SAY " Cond. "
@ 12,64 SAY " Normal "
ELSE
SET COLOR TO W+/R*
@ 11,64 SAY " OVER- "
@ 12,64 SAY " SPEED "
ENDIF
RETURN
PROCEDURE DisplayM2
IF M2Up
M2Value = M2Value + 1
IF M2Value > 0
M2Percent = (M2Value / 1000) * 100
ELSE
M2Percent = 0.0
ENDIF
IF M2Value > 1150
M2Up = .F.
ENDIF
ELSE
M2Value = M2Value - 1
IF M2Value > 0
M2Percent = (M2Value / 1000) * 100
ELSE
M2Percent = 0.0
ENDIF
IF M2Value < -7
M2Up = .T.
ENDIF
ENDIF
IF M2Value >= 0
SET COLOR TO BG+/N
=LEDStr(15,14,STR(M2Value,4,0))
ENDIF
SET COLOR TO B/W
IF M2Value > 0
=DrawDoubleBar(15,26,INT(M2Percent))
ELSE
=DrawDoubleBar(15,26,0)
ENDIF
IF M2Percent < 75.1
SET COLOR TO G+/N
ELSE
IF M2Percent > 90
SET COLOR TO R+/N
ELSE
SET COLOR TO GR+/N
ENDIF
ENDIF
=LEDStr(15,50,STR(M2Percent,5,1))
IF M2Percent <= 100
SET COLOR TO W+/G
@ 15,64 SAY " Cond. "
@ 16,64 SAY " Normal "
ELSE
SET COLOR TO W+/R*
@ 15,64 SAY " OVER- "
@ 16,64 SAY " SPEED "
ENDIF
RETURN
PROCEDURE DisplayM3
IF M3Up
M3Value = M3Value + 1
IF M3Value > 0
M3Percent = (M3Value / 1000) * 100
ELSE
M3Percent = 0.0
ENDIF
IF M3Value > 1010
M3Up = .F.
ENDIF
ELSE
M3Value = M3Value - 1
IF M3Value > 0
M3Percent = (M3Value / 1000) * 100
ELSE
M3Percent = 0.0
ENDIF
IF M3Value < -33
M3Up = .T.
ENDIF
ENDIF
IF M3Value >= 0
SET COLOR TO BG+/N
=LEDStr(19,14,STR(M3Value,4,0))
ENDIF
SET COLOR TO B/W
IF M3Value > 0
=DrawDoubleBar(19,26,INT(M3Percent))
ELSE
=DrawDoubleBar(19,26,0)
ENDIF
IF M3Percent < 75.1
SET COLOR TO G+/N
ELSE
IF M3Percent > 90
SET COLOR TO R+/N
ELSE
SET COLOR TO GR+/N
ENDIF
ENDIF
=LEDStr(19,50,STR(M3Percent,5,1))
IF M3Percent <= 100
SET COLOR TO W+/G
@ 19,64 SAY " Cond. "
@ 20,64 SAY " Normal "
ELSE
SET COLOR TO W+/R*
@ 19,64 SAY " OVER- "
@ 20,64 SAY " SPEED "
ENDIF
RETURN
* Function DrawBar : Draw a single height bar ****************************
* Parameters
* - BRow = Row the bar is to appear on
* - BCol = Column the bar will grow from
* - BNum = Value for bar. Range in this implementation 0 to 100
* Note: The color of the bar depends on the current SET COLOR TO color
* e.g.: =DrawBar(10,10,68)
****************************************************************************
FUNCTION DrawBar
PARAMETERS BRow,BCol,BNum
IF BNum < 0 OR BNum > 100
RETURN .F.
ENDIF
FChars = INT(BNum / 5)
BRem = MOD(BNum,5)
IF BRem > 0
EndChar = CHR(142+BRem)
@ BRow,BCol SAY REPLICATE('█',FChars)+EndChar+REPLICATE(' ',19 - FChars)
ELSE
@ BRow,BCol SAY REPLICATE('█',FChars)+REPLICATE(' ',20 - FChars)
ENDIF
RETURN .T.
* Function DrawFrame : Draw a 3D style frame ******************************
* Parameters
* - FRow = Row for the top of the frame
* - FCol = Column left edge of frame
* - FHeight = The vertical space "between" the top and bottom edges
* - FWidth = The number of columns "between" the right and left edges
* - SunColor = Color of the sunlit part of the frame
* - ShadeColor = Color of the shaded areas of the frame
* - Inset = .T. For concave frame, .F. For convex frame
* Note: The background color for SunColor & ShadeColor should be the same
* e.g.: =DrawFrame(10,10,1,20,'W+/W','N+/W',.T.)
****************************************************************************
FUNCTION DrawFrame
PARAMETERS FRow,FCol,FHeight,FWidth,SunColor,ShadeColor,Inset
IF FHeight < 1 OR FWidth < 1
RETURN .F.
ENDIF
IF Inset
LTColor = ShadeColor && Left & Top
RBColor = SunColor && Right & Botom
ELSE
LTColor = SunColor
RBColor = ShadeColor
ENDIF
SET COLOR TO <Color
@ FRow,FCol SAY '╟'+REPLICATE('╞',FWidth)
FOR LineCount = 1 to FHeight
@ FRow+LineCount,FCol SAY '╫'
ENDFOR
SET COLOR TO &RBColor
FOR LineCount = 1 to FHeight
@ FRow+LineCount,FCol+FWidth+1 SAY 'Å'
ENDFOR
@ FRow+FHeight+1,FCol+1 SAY REPLICATE('╪',FWidth)+'ô'
RETURN .T.
* Function FillArea : Fill an area of screen with *************************
* Parameters
* - FillRow = First row to fill
* - FillCol = First column to fill
* - FillHeight = Number of rows to fill
* - FillWidth = Number of columns to fill
* - FillChar = Character to fill the area with
* - FillColor = Color of the characters used to fill area
* e.g.: =FillColor(10,10,5,70,'░','W+/B')
****************************************************************************
FUNCTION FillArea
PARAMETERS FillRow,FillCol,FillHeight,FillWidth,FillChar,FillColor
SET COLOR TO &FillColor
FOR LineCount = 0 to FillHeight-1
@ FillRow+LineCount,FillCol SAY REPLICATE(FillChar,FillWidth)
ENDFOR
RETURN
* Draw a double height bar - same usage as DrawBar
FUNCTION DrawDoubleBar
PARAMETERS BRow,BCol,BNum
IF BNum < 0 OR BNum > 100
RETURN .F.
ENDIF
FChars = INT(BNum / 5)
BRem = MOD(BNum,5)
IF BRem > 0
EndChar = CHR(142+BRem)
@ BRow,BCol SAY REPLICATE('█',FChars)+EndChar+REPLICATE(' ',19 - FChars)
@ BRow+1,BCol SAY REPLICATE('█',FChars)+EndChar+REPLICATE(' ',19 - FChars)
ELSE
@ BRow,BCol SAY REPLICATE('█',FChars)+REPLICATE(' ',20 - FChars)
@ BRow+1,BCol SAY REPLICATE('█',FChars)+REPLICATE(' ',20 - FChars)
ENDIF
RETURN .T.
* Function LEDStr : Draw a double height & width digital string ***********
* Parameters
* - LEDRow = First of two rows to be occupied by the characters
* - LEDCol = First column for sting to appear
* - LEDString = Sting to display
* Note: The color of the digits depend on the current SET COLOR TO color
* Function will ignore all characters except the following:
* 0123456789,' '(space), '-', ':','.',',','/'
* e.g.: =LEDStr(10,10,STR(MyNumericVariable,5,3))
* Also: Punctuation characters use 1 column each, all others use 2 columns
****************************************************************************
FUNCTION LEDStr
PARAMETERS LEDRow,LEDCol,LEDString
PRIVATE CC,MCount,MRow,MRow2,MCol,ShowChar
CC = LEN(LEDString)
MRow = LEDRow
MRow2 = MRow+1
MCol = LEDCol
FOR MCount = 1 TO CC
ShowChar = SUBSTR(LEDString,MCount,1)
DO CASE
CASE ShowChar = ' '
@ MRow, MCol SAY ' '
@ MRow2,MCol SAY ' '
MCol = MCol+2
LOOP
CASE ShowChar = '0'
@ MRow, MCol SAY 'Ӈ'
@ MRow2,MCol SAY '΄'
MCol = MCol+2
LOOP
CASE ShowChar = '1'
@ MRow, MCol SAY ' Ç'
@ MRow2,MCol SAY ' ü'
MCol = MCol+2
LOOP
CASE ShowChar = '2'
@ MRow, MCol SAY '̂'
@ MRow2,MCol SAY '΃'
MCol = MCol+2
LOOP
CASE ShowChar = '3'
@ MRow, MCol SAY '̂'
@ MRow2,MCol SAY 'τ'
MCol = MCol+2
LOOP
CASE ShowChar = '4'
@ MRow, MCol SAY 'Ѕ'
@ MRow2,MCol SAY ' ü'
MCol = MCol+2
LOOP
CASE ShowChar = '5'
@ MRow, MCol SAY 'ц'
@ MRow2,MCol SAY 'τ'
MCol = MCol+2
LOOP
CASE ShowChar = '6'
@ MRow, MCol SAY 'ц'
@ MRow2,MCol SAY '΄'
MCol = MCol+2
LOOP
CASE ShowChar = '7'
@ MRow, MCol SAY '҇'
@ MRow2,MCol SAY ' ü'
MCol = MCol+2
LOOP
CASE ShowChar = '8'
@ MRow, MCol SAY 'т'
@ MRow2,MCol SAY '΄'
MCol = MCol+2
LOOP
CASE ShowChar = '9'
@ MRow, MCol SAY 'т'
@ MRow2,MCol SAY ' ü'
MCol = MCol+2
LOOP
CASE ShowChar = '-'
@ MRow, MCol SAY 'Չ'
@ MRow2,MCol SAY ' '
MCol = MCol+2
LOOP
CASE ShowChar = '.'
@ MRow, MCol SAY ' '
@ MRow2,MCol SAY 'Ä'
MCol = MCol+1
LOOP
CASE ShowChar = ':'
@ MRow, MCol SAY ''
@ MRow2,MCol SAY ''
MCol = MCol+1
LOOP
CASE ShowChar = '/'
@ MRow, MCol SAY ' è'
@ MRow2,MCol SAY '╓ '
MCol = MCol+2
LOOP
CASE ShowChar = ','
@ MRow, MCol SAY ' '
@ MRow2,MCol SAY 'ì'
MCol = MCol+1
LOOP
ENDCASE
ENDFOR
RETURN