"SfR Fresh" - the SfR Freeware/Shareware Archive

Member "usr/xb-6.2.3/demo/acharmap.x" of archive xbasic-6.2.3-linux-i386.tar.gz:


As a special service "SfR Fresh" has tried to format the requested source page into HTML format using source code syntax highlighting with prefixed line numbers. Alternatively you can here view or download the uninterpreted source code file. That can be also achieved for any archive member file by clicking within an archive contents listing on the first character of the file(path) respectively on the according byte size field.
    1 '
    2 ' ####################
    3 ' #####  PROLOG  #####
    4 ' ####################
    5 '
    6 PROGRAM	"acharmap"
    7 VERSION	"0.0001"
    8 '
    9 IMPORT	"xst"
   10 IMPORT	"xgr"
   11 IMPORT  "xui"
   12 '
   13 DECLARE FUNCTION  Entry ()
   14 '
   15 '
   16 ' ######################
   17 ' #####  Entry ()  #####
   18 ' ######################
   19 '
   20 FUNCTION  Entry ()
   21 '
   22 	DIM map[255]
   23 	FOR i = 0 TO 255
   24 		map[i] = i				' create character map array with 1:1 mapping = no character translation
   25 	NEXT i
   26 '
   27 ' install a few character translations
   28 '
   29 	XstGetImplementation (@implementation$)
   30 	windows = INSTR (implementation$, "windows")
   31 '
   32 	IF windows THEN
   33 		map['a'] = 0x84			' the following are interesting on my windows system
   34 		map['e'] = 0x89
   35 		map['i'] = 0x8C
   36 		map['o'] = 0x94
   37 		map['u'] = 0x81
   38 		map['y'] = 0x98
   39 		map['c'] = 0x87
   40 		map['n'] = 0xA4
   41 		map['?'] = 0xA8
   42 		map['!'] = 0xAD
   43 	ELSE
   44 		map['a'] = 0xE4			' the following are interesting on my linux system
   45 		map['e'] = 0xEB
   46 		map['i'] = 0xEF
   47 		map['o'] = 0xF6
   48 		map['u'] = 0xFC
   49 		map['y'] = 0xFF
   50 		map['c'] = 0xE7
   51 		map['n'] = 0xF1
   52 		map['?'] = 0xBF
   53 		map['!'] = 0xA1
   54 	END IF
   55 '
   56 ' install into console
   57 '
   58 	XstGetConsoleGrid (@grid)
   59 '
   60 ' make a test string with all 256 characters (except newline = space)
   61 '
   62 	offset = 0
   63 	test$ = NULL$ (264)
   64 	FOR i = 0 TO 255
   65 		IF (i = 10) THEN
   66 			test${i+o} = ' '
   67 		ELSE
   68 			test${i+o} = i
   69 		END IF
   70 		IF ((i AND 0x1F) = 0x1F) THEN
   71 			INC o
   72 			test${i+o} = '\n'
   73 		END IF
   74 	NEXT i
   75 '
   76 ' change console character map and print the character set
   77 '
   78 	XuiSendStringMessage (grid, "SetCharacterMapArray", 0, 0, 0, 0, 1, @map[])
   79 	XuiSendStringMessage (grid, "SetTextArray", 0, 0, 0, 0, 0, @empty$[])
   80 	PRINT test$
   81 '
   82 ' make sure character map array is returned intact
   83 '
   84 	XuiSendStringMessage (grid, "GetCharacterMapArray", 0, 0, 0, 0, 1, @char[])
   85 	PRINT implementation$
   86 	PRINT "***  test character map array modified ***"
   87 	PRINT "Microsoft Windows is as wierd as Bill Gates!"
   88 	PRINT "Did the quick brown fox jump over the lazy dog?"
   89 	PRINT
   90 '
   91 ' show some mapped and unmapped characters in a dialog window
   92 '
   93 	a$ = implementation$ + "\n"
   94 	a$ = a$ + "**  test character map array modified ***\n"
   95 	a$ = a$ + "Microsoft Windows is as wierd as Bill Gates!\n"
   96 	a$ = a$ + "Did the quick brown fox jump over the lazy dog?\n\n"
   97 	a$ = a$ + " a e i o u y c n ? ! \n"
   98 	a$ = a$ + " \xDF \xE0 \xE1 \xE2 \xE3 \xE4 \xE5 \xE6 \xE7 \xE8 \xE9 \xEA \xEB \xEC \xED \xEE \xEF \n"
   99 	a$ = a$ + " \xA9 \xF0 \xF1 \xF2 \xF3 \xF4 \xF5 \xF6 \xF7 \xF8 \xF9 \xFA \xFB \xFC \xFD \xFE \xFF \n"
  100 	XgrSetGridCharacterMapArray (0, @map[])
  101 	XuiMessage (@a$)
  102 	XgrSetGridCharacterMapArray (0, @empty[])
  103 '
  104 ' remove character mapping from the console
  105 '
  106 	DIM map[]
  107 	XuiSendStringMessage (grid, "SetCharacterMapArray", 0, 0, 0, 0, 1, @map[])
  108 '
  109 ' make sure character mapping is gone
  110 '
  111 	PRINT "**  test character map array original ***"
  112 	PRINT "Microsoft Windows is as wierd as Bill Gates!"
  113 	PRINT "Did the quick brown fox jump over the lazy dog?"
  114 	PRINT
  115 END FUNCTION
  116 END PROGRAM