home *** CD-ROM | disk | FTP | other *** search
/ Power-Programmierung / CD1.mdf / basic / library / gwbasic / vtoolbox / vtoolbox.bas next >
Encoding:
BASIC Source File  |  1994-05-24  |  18.7 KB  |  326 lines

  1. 10 ' ****** GRAPHICS AID's taken from the December 11, 1984 issue of
  2. 20 ' ****** PC Magizine, keyed and enhanced by ASAP Services, John HR Schuster
  3. 30 ' ****** Honeywell, this program is donated to public domain
  4. 40 ' ****** December 30, 1984
  5. 42 DEFINT A-Z
  6. 45 DIM A$(40)  '** Used in animation
  7. 47 DIM O(20), P(20), S(20), Y(20), D(20), A(20), I(20)
  8. 50 SCREEN 0: CLS : WIDTH 80: KEY OFF
  9. 60 LOCATE 4, 14: COLOR 4: PRINT "ASAP Services Video Tool Box": COLOR 7
  10. 70 LOCATE 6, 14: PRINT "Thanks to PC Magizine, 12/11/84"
  11. 80 LOCATE 21, 14: COLOR 23: PRINT "Please make a selection "; : COLOR 7
  12. 90 LOCATE 9, 14: PRINT " H - Help and instructions"
  13. 100 LOCATE 10, 14: PRINT " 1 - NTSC standard color bars"
  14. 110 LOCATE 11, 14: PRINT " 2 - Converge test pattern"
  15. 120 LOCATE 12, 14: PRINT " 3 - Composite frequency test"
  16. 130 LOCATE 13, 14: PRINT " 4 - Animation monochrome test"
  17. 140 LOCATE 14, 14: PRINT " 5 - 80 * 50 lines, 16 color interlace test"
  18. 150 LOCATE 15, 14: PRINT " 6 - MC6845 port register test"
  19. 160 LOCATE 16, 14: PRINT " 7 - Bent text, graphics mode"
  20. 170 LOCATE 17, 14: PRINT " 8 - Define graphics CHR$(128)"
  21. 180 LOCATE 18, 14: PRINT " 9 - Show character, BIOS data & location"
  22. 190 LOCATE 19, 14: PRINT " 0 - exit back to operating system"
  23. 200 ANS$ = INKEY$: IF ANS$ = "" THEN 200
  24. 210 IF ANS$ = "0" THEN 3000
  25. 220 IF ANS$ = "H" THEN GOSUB 1130: GOTO 50
  26. 230 IF ANS$ = "h" THEN GOSUB 1130: GOTO 50
  27. 240 IF ANS$ = "1" THEN GOSUB 340: GOTO 50
  28. 250 IF ANS$ = "2" THEN GOSUB 570: GOTO 50
  29. 260 IF ANS$ = "3" THEN GOSUB 670: GOTO 50
  30. 270 IF ANS$ = "4" THEN GOSUB 820: GOTO 50
  31. 280 IF ANS$ = "5" THEN GOSUB 1030: GOTO 50
  32. 290 IF ANS$ = "6" THEN GOSUB 1250: GOTO 50
  33. 300 IF ANS$ = "7" THEN GOSUB 1500: GOTO 50
  34. 310 IF ANS$ = "8" THEN GOSUB 1740: GOTO 50
  35. 320 IF ANS$ = "9" THEN GOSUB 2100: GOTO 50
  36. 330 BEEP: GOTO 200
  37. 340 ' bars -- An approximations of NTSC standard color bars and 4 grey levels
  38. 350 '
  39. 360 COLOR 7, 0: CLS : WIDTH 80: LOCATE 3, 14: PRINT "NTSC standard color bar's, 4 grey levels"
  40. 370 PRINT : PRINT "This program will generate an approximation of the NTSC color bars used by"
  41. 380 PRINT "broadcasters, along with a grey scale at the bottom of the screen for setting "
  42. 385 PRINT "the brightness on a monitor.  The luminance (brightness) levels of the"
  43. 386 PRINT "bars do not resemble NTSC bars and the approximations the graphics board uses "
  44. 387 PRINT "for the composite output may cause a 15 degree error from standard."
  45. 390 PRINT : PRINT "The name of each of the color bars is shown at the bottom of that bar."
  46. 400 PRINT : PRINT "Press ANY key to start pattern."
  47. 405 PRINT : PRINT "Press ANY key again to return to menu"
  48. 410 IF INKEY$ = "" THEN 410
  49. 420 KEY OFF: CLS : WIDTH 40: SCREEN 0, 1
  50. 430 FOR R = 1 TO 19: LOCATE R, 3, 0
  51. 440 COLOR 7, 0, 0: GOSUB 530: COLOR 14: GOSUB 530
  52. 450 COLOR 11: GOSUB 530: COLOR 2: GOSUB 530
  53. 460 COLOR 5: GOSUB 530: COLOR 4: GOSUB 530
  54. 470 COLOR 1: GOSUB 530: NEXT R
  55. 480 FOR R = 20 TO 25: LOCATE R, 8
  56. 490 COLOR 8: GOSUB 540: COLOR 7: GOSUB 540
  57. 500 COLOR 15: GOSUB 540: NEXT R
  58. 510 LOCATE 19, 1: PRINT "  Grey Yelw Cyan Gren Magta Red  Blue"
  59. 520 IF INKEY$ = "" THEN 525 ELSE CLS : RETURN
  60. 525 LOCATE 24, 1: PRINT TIME$; : GOTO 520
  61. 530 FOR P = 1 TO 5: PRINT CHR$(219); : NEXT P: RETURN
  62. 540 FOR P = 1 TO 10: PRINT CHR$(219); : NEXT P: RETURN
  63. 550 IF ANS$ = "H" THEN GOSUB 1130: GOTO 50
  64. 560 IF ANS$ = "h" THEN GOSUB 1130: GOTO 50
  65. 570 'CONVERGE -- BAR / DOT pattern for monitor or TV convergence check or setup
  66. 572 COLOR 7, 0: CLS : WIDTH 80: LOCATE 3, 14: PRINT "CONVERGENCE Test Pattern"
  67. 573 PRINT : PRINT "This rotuine will generate both dots and crosshatches to check or "
  68. 574 PRINT "adjust convergence on a color monitor or Televison set.  If you don't have "
  69. 575 PRINT "have an RF modulator to feed the TV but have access to a VCR, you can plug"
  70. 576 PRINT "your composite video into the video input of a video-cassette recoreder and"
  71. 577 PRINT "drive the TV from the VCR's RF or Video output."
  72. 578 PRINT : PRINT "Press ANY key to start.": PRINT : PRINT "Press ANY key again to return to menu:"
  73. 579 IF INKEY$ = "" THEN 579
  74. 580 CLS : KEY OFF: SCREEN 2
  75. 590 FOR V = 0 TO 200 STEP 20
  76. 600 LINE (1, V)-(640, V): NEXT V
  77. 610 FOR H = 0 TO 640 STEP 40
  78. 620 LINE (H, 0)-(H, 200): NEXT H
  79. 630 FOR PV = 10 TO 190 STEP 20
  80. 640 FOR PH = 20 TO 630 STEP 40
  81. 650 PSET (PH, PV): NEXT PH: NEXT PV
  82. 660 IF INKEY$ = "" THEN 660 ELSE RETURN
  83. 670 ' MILIBRST -- Displays specific frequencies for checking monitor or system
  84. 680 ' frequency response.  Key B switchs burst
  85. 690 ' on or off on conposite output. Exit with X
  86. 700 '
  87. 702 COLOR 7, 0: CLS : WIDTH 80: LOCATE 1, 14: PRINT "MULTI BURST video aligment generator"
  88. 703 PRINT : PRINT "This routine produces an output similar to a test signal used for video"
  89. 704 PRINT "aligment.  This signal is a series of bursts of sine waves of equal levels and"
  90. 705 PRINT "known frequencies, and you can use it to test the frequency response of a video"
  91. 706 PRINT "amplifer, processor, or monitor.  All frequencies are derived by dividing the"
  92. 707 PRINT "14.318 MHz, which limits the choice of available freqencies.  However the": PRINT "the freqencies are all extremely stable.  Since the PC's digital system and "
  93. 708 PRINT "available hardware on the graphics board cannot generate true sine waves,": PRINT "this routine produces its bursts either as 50 percent duty cycle square waves,"
  94. 709 PRINT "or as rectangular waves with as close to a 50 percent figure as possible.  The": PRINT "frequency response of the the result is quite flat (within 1db even at 7.16 MHz)";
  95. 710 PRINT "and the majority of energy in each burst is at the specified frequency.  You": PRINT "can test video amplifiers and processors by applying this signal and then"
  96. 711 PRINT "looking at the output with an oscilliscope.  You can test monitors by looking": PRINT "to see which  bursts have lines that are visable (those above the monitors"
  97. 712 PRINT "response will trun grey), or you can scope the CRT drive for accurate ": PRINT "measurements.  An additional feature of the program allows you to turn the"
  98. 713 PRINT "color bursts alternately on an off by pressing the [B] key, which accuates the": PRINT "color-killer in the composite (not-RGB) color monitors ot TV's."
  99. 715 PRINT : PRINT "Press ANY key to start.": PRINT "Press [B] for color burst switch      Press [X] to return to the menu"
  100. 716 IF INKEY$ = "" THEN 716
  101. 717 CLS : SCREEN 2: W = .5: DEFINT A-V: B1 = &H1E: B2 = &H1A
  102. 720 FOR H = 640 TO 1 STEP -1
  103. 730 W = W + .5: H = H - 1
  104. 740 FOR H1 = H TO H - 72 STEP -1
  105. 750 FOR WHT = 1 TO W: LINE (H1, 1)-(H1, 190): H1 = H1 - 1: NEXT WHT
  106. 760 H1 = H1 - INT(W + .5) + 1: NEXT H1
  107. 770 H = H1: NEXT H
  108. 780 LOCATE 25, 1: PRINT "1.59 MHz  1.79 MHz  2.05 MHz  2.39 MHz";
  109. 790 PRINT " 2.86 MHz  3.58 MHz   4.77 MHz   7.16 MHz";
  110. 800 A$ = INKEY$: IF A$ = "b" OR A$ = "B" THEN SWAP B1, B2: OUT &H3D8, B1
  111. 810 IF A$ <> "x" AND A$ <> "X" THEN 800 ELSE RETURN
  112. 820 '
  113. 830 ' Eight pages are avialable in 40 column monochrome text
  114. 840 '
  115. 842 COLOR 7, 0: CLS : WIDTH 80: LOCATE 1, 14: PRINT "ANIMATION with monochrome text graphics, 8 pages"
  116. 843 PRINT : PRINT "This routine will rely on the paging capability of the Color Graphics": PRINT "Adaptor.  Different display modes require different amounts of the 16K"
  117. 844 PRINT "on the board.  At the extreme, monochrome text mode requires only 2000 bytes": PRINT "to make up a screen; so you can write and display EIGHT pages of instructions"
  118. 845 PRINT "for this mode.  You can use all the graphics characters in addition to the": PRINT "ASCII set.  First the eight pages will be loaded into memory then scrolled"
  119. 846 PRINT "this will illustrate how smooth the animation can be."
  120. 847 PRINT : PRINT "You will be asked how fast you want the screen scrolled through"
  121. 848 PRINT : PRINT "Press ANY key to start           Press ANY key again to return to the menu"
  122. 849 IF INKEY$ = "" THEN 849
  123. 850 CLS : PRINT : PRINT : INPUT "Display speed? 1 = fast, 1000 = slow ", S: CLS
  124. 860 SCREEN 0: WIDTH 40: CLS : KEY OFF: DEFINT A-Z: D = 1
  125. 870 '
  126. 880 ' **** First write all the pages
  127. 890 '
  128. 900 LOCATE 12, , 0: A$ = "    *        *        *        *"
  129. 910 FOR PAGE = 0 TO 7: SCREEN , , PAGE: CLS : FOR V = 0 TO 2
  130. 920 LOCATE V * 8 + 1 + PAGE, PAGE + 1: PRINT A$; : NEXT V
  131. 930 LOCATE 22, 19: PRINT "/\";
  132. 940 LOCATE 23, 18: PRINT "/--\";
  133. 950 LOCATE 24, 17: PRINT "/|  |\";
  134. 960 LOCATE 25, 18: PRINT "| "; CHR$(219); "|";
  135. 970 LOCATE 2, 33: PRINT "Page"; PAGE; : FOR I = 1 TO 350: NEXT I: NEXT PAGE: ' show page number
  136. 980 '
  137. 990 ' ** Now flip throught the pages
  138. 1000 '
  139. 1010 SCREEN , , PAGE MOD 8: FOR B = 1 TO S: NEXT B: PAGE = PAGE + 1
  140. 1020 IF INKEY$ = "" THEN 1010 ELSE SCREEN , , 0: RETURN
  141. 1030 '
  142. 1040 ' characters then 16 -color 80 8 50 full interlace graphics
  143. 1050 '
  144. 1052 COLOR 7, 0: CLS : WIDTH 80: LOCATE 1, 14: PRINT "80 * 50 FULL INTERLACE graphics demonstration"
  145. 1053 PRINT : PRINT "This rotuine will first display this screen and lines of 80 characters": PRINT "at 50 lines instead of the normal 24 lines.  You may press ANY key to get"
  146. 1054 PRINT "the characters displayed to change into color blocks.  These block show all": PRINT "16 colors possible on the Color Graphics adapter."
  147. 1055 PRINT : PRINT "Press ANY key to start character display"
  148. 1056 PRINT : PRINT "Press ANY key to stop characters being displayed and show color blocks"
  149. 1057 PRINT : PRINT "Press ANY key to return to the menu"
  150. 1058 IF INKEY$ = "" THEN 1058
  151. 1059 PRINT : PRINT : PRINT : PRINT "NOTICE: See how small these characters are.  That is because": PRINT "the characters are printed at 50 lines not 24 lines."
  152. 1060 DEF SEG = &HB800: WIDTH 80: SCREEN 0: OUT 980, 8: OUT 981, 3
  153. 1070 FOR ADR1 = 0 TO 8000 STEP 2
  154. 1075 IF INKEY$ <> "" THEN 1100
  155. 1080 POKE ADR1, 33 + (ADR1 / 2) MOD 90: POKE ADR1 + 1, 7: NEXT ADR1
  156. 1090 IF INKEY$ = "" THEN 1090    '** hit any key to go on
  157. 1100 FOR ADR = 0 TO ADR1 STEP 2
  158. 1110 POKE ADR, 219: POKE ADR + 1, RND * 16: NEXT ADR
  159. 1120 IF INKEY$ = "" THEN 1120 ELSE OUT 980, 8: OUT 981, 2: CLS
  160. 1125 RETURN
  161. 1130 '***** HELP Screen area, RWYWS, ILTFFBCSWM
  162. 1140 CLS : LOCATE 2, 14: COLOR 4: PRINT "HELP Screen"
  163. 1150 COLOR 26: PRINT : PRINT " ASAP Services "; : COLOR 7: PRINT " 965 Sweet Home Rd, Amherst, NY, 14226": PRINT "United Stateds of America"
  164. 1160 PRINT : PRINT "Please make any suggestions or improvements to the address above:"
  165. 1170 PRINT : PRINT "The orginal article is courtsey of PC Magizine (DEC 11,1984 issue)": PRINT "Thanks to Ziff-Davis Publishing"
  166. 1180 PRINT : PRINT "Each item on the menu can be run by just typing in the number, each item"
  167. 1190 PRINT "will have an INSTRUCTON screen displayed, PRIOR to that test"
  168. 1200 PRINT : PRINT : PRINT
  169. 1210 PRINT :
  170. 1220 PRINT "Press "; : COLOR 23: PRINT " ANY "; : COLOR 7: PRINT " key to continue"
  171. 1230 IF INKEY$ = "" THEN 1230
  172. 1240 RETURN
  173. 1250 ' SCRNMOVE -- Demo using MC6845 port register access
  174. 1260 ' Hit any key to proceed to the next step.  Don't clear screen
  175. 1270 '
  176. 1272 COLOR 7, 0: CLS : WIDTH 80: LOCATE 1, 14: PRINT "SAMPLE Motorola 6845 CRT controller access"
  177. 1273 PRINT : PRINT "The Motorola 6845 CRT controller is not a microprocessor, but rather": PRINT "a group of specilized comparators and counters, many of which can be set"
  178. 1274 PRINT "to divide by any of a large range of numbers.  These parameters are set to": PRINT "specific numbers for each mode.  This routine provides for a set of three"
  179. 1275 PRINT "different movements that are accomplished without significantly deviating": PRINT "from the orginal parameters.  Since horzonital frequency is unchanged"
  180. 1276 PRINT "in this routine, there is no risk to the monitor.  First, vertical  timing": PRINT "is altered, then horizontial position, then both.  "
  181. 1277 PRINT : PRINT "Press ANY key to proceed through this routine"
  182. 1278 IF INKEY$ = "" THEN 1278
  183. 1280 KEY OFF: WIDTH 80: SCREEN 0: FOR I = 1 TO 24: PRINT : PRINT : NEXT I: GOSUB 1460: FILES: PRINT
  184. 1290 PRINT : PRINT "This is a test of the MC6845 port register access"
  185. 1300 PRINT "---- -- - ---- -- --- ====== ---- -------- ------"
  186. 1310 PRINT : PRINT "You will press the RETURN Key to see three different effects"
  187. 1320 '
  188. 1330 PORT = 2: FOR B = 80 TO 100: GOSUB 1450: NEXT B
  189. 1340 FOR B = 100 TO 80 STEP -1: GOSUB 1450: NEXT B
  190. 1350 IF INKEY$ = "" THEN 1330 ELSE B = &H5A: GOSUB 1450
  191. 1360 '
  192. 1370 PORT = 7: FOR B = 26 TO 30: GOSUB 1450: NEXT B
  193. 1380 FOR B = 30 TO 26 STEP -1: GOSUB 1450: NEXT B
  194. 1390 IF INKEY$ = "" THEN 1370 ELSE B = &H1C: GOSUB 1450
  195. 1400 '
  196. 1410 OUT &H3D4, 2: OUT &H3D5, 85 + RND * 11: OUT &H3D4, 7: OUT &H3D5, 27 + RND * 3
  197. 1420 IF INKEY$ = "" THEN 1410
  198. 1430 PORT = 2: B = &H5A: GOSUB 1450: PORT = 7: B = &H1C: GOSUB 1450: RETURN
  199. 1440 '
  200. 1450 OUT &H3D4, PORT: OUT &H3D5, B: FOR DELAY = 1 TO 5: NEXT DELAY: RETURN
  201. 1460 PRINT : PRINT "******************************************************"
  202. 1470       PRINT "**     HELP ME!, HELP me!, I'm trapped in here      **"
  203. 1480       PRINT "******************************************************"
  204. 1490 PRINT : RETURN
  205. 1500 ' BENTTEXT -- Shows that characters in graphics mode are
  206. 1510 ' treated the same way as any other pixel graphics
  207. 1520 '
  208. 1522 COLOR 7, 0: CLS : WIDTH 80: LOCATE 1, 14: PRINT "BENT TEXT characters are displayed as graphics"
  209. 1523 PRINT : PRINT "This routine shows how graphics mode characters are treated the same as ": PRINT "normal graphics, You can use the PUT and GET statements to do"
  210. 1524 PRINT "unspeakable things to them, such as mixing 40 and 80 column sizes and moving": PRINT "them around.  The word displayed is 'OOPSY DAISY'"
  211. 1525 PRINT : PRINT "Press ANY key to start": PRINT : PRINT "Press ANY key again to return to the menu"
  212. 1526 IF INKEY$ = "" THEN 1526
  213. 1530 SCREEN 1: CLS : DEFINT A-Z
  214. 1540 '
  215. 1550 ' *** First GET the larger characters ***
  216. 1560 '
  217. 1580 LOCATE 1, 1: PRINT "OAS": GET (0, 0)-(7, 7), O
  218. 1590 GET (8, 0)-(15, 7), A: GET (16, 0)-(23, 7), S
  219. 1600 '
  220. 1610 ' *** Not GET the small ones ***
  221. 1620 '
  222. 1630 SCREEN 2: LOCATE 1, 1: PRINT "YDPI"
  223. 1640 GET (0, 0)-(7, 7), Y: GET (8, 0)-(15, 7), D
  224. 1650 GET (16, 0)-(23, 7), P: GET (24, 0)-(31, 7), I
  225. 1660 '
  226. 1670 ' *** Display then ***
  227. 1680 CLS : PUT (102, 80), O: PUT (115, 82), O
  228. 1690 PUT (132, 84), P: PUT (144, 85), S: PUT (160, 84), Y
  229. 1700 PUT (118, 99), D: PUT (135, 98), A: PUT (150, 97), I
  230. 1710 PUT (167, 96), S: PUT (190, 94), Y
  231. 1720 IF INKEY$ = "" GOTO 1720
  232. 1730 RETURN
  233. 1740 ' CHRDEFN.bas -- a character for CHR$(128) =, then
  234. 1750 ' define a row of them.  Arbitrarily put at 54K.
  235. 1760 '
  236. 1762 COLOR 7, 0: CLS : WIDTH 80: LOCATE 1, 14: PRINT "DEFINE a Graphics character of your own"
  237. 1763 PRINT : PRINT "If you have ever tried to use characters above CHR$(128) while in ": PRINT "graphics mode, expecting those nice lines and block, you were surprised"
  238. 1764 PRINT "to see random patterns.  This happened because those characters were not": PRINT "defined.  The interuppt vectors 124-127 decimal (7C-7F Hex) must be set"
  239. 1765 PRINT "to indicate the start of your character table.   This routine will define ": PRINT "the character CHR$(128) as a HI! symbol.  Once this selection has been "
  240. 1766 PRINT "run, in graphics mode, you can enter the CHR$(128), for example, by holding": PRINT "ALT key and entering 128, and the HI! symbol will still be there.  Each"
  241. 1767 PRINT "graphics character is only 8 * 8 pixels.  This definition stays in effect": PRINT "until you reboot the system"
  242. 1768 PRINT : PRINT "Press ANY key to proceed through 40 and 80 column displays"
  243. 1769 IF INKEY$ = "" THEN 1769
  244. 1770 DEF SEG = 0
  245. 1780 POKE &HE000, &H95: POKE &H1, &H95
  246. 1790 POKE &HE002, &H95: POKE &HE003, &HF5
  247. 1800 POKE &HE004, &H95: POKE &HE005, &H95
  248. 1810 POKE &HE006, &H94: POKE &HE007, &H95
  249. 1820 '
  250. 1830 ' *** Put the location in the interrupt table ***
  251. 1840 '
  252. 1850 POKE 124, 0: POKE 125, &HE0: POKE 126, 0: POKE 127, 0
  253. 1860 '
  254. 1870 ' *** Now show it ***
  255. 1880 '
  256. 1890 C = 1
  257. 1900 CLS : SCREEN 1: WIDTH 40
  258. 1910 FOR I = 1 TO 24 * C
  259. 1920 PRINT " ";
  260. 1930 FOR N = 1 TO 18: PRINT CHR$(128); " "; : NEXT N
  261. 1940 NEXT I
  262. 1950 '
  263. 1960 ' *** now untill a reboot is done, this is
  264. 1970 '     character # 128 in graphics modes. ***
  265. 1980 IF INKEY$ = "" THEN 1980 ELSE CLS
  266. 1990 '
  267. 2000 ' *** now put out a random pattern ***
  268. 2010 '
  269. 2020 FOR I = 1 TO 50 * C
  270. 2030 A = INT(RND * 39) * C: IF A = 0 THEN 2030
  271. 2040 B = INT(RND * 24): IF B = 0 THEN 2040
  272. 2050 LOCATE B, A: PRINT CHR$(128)
  273. 2060 NEXT I
  274. 2070 IF INKEY$ = "" THEN 2070 ELSE CLS
  275. 2080 WIDTH 80
  276. 2090 IF C = 1 THEN C = 2: GOTO 1910
  277. 2095 RETURN
  278. 2100 ' CHARSHOW -- This will nearly fill the screen with a selected
  279. 2110 ' character and indicate its location in the BIOS ROM, and the ROM
  280. 2120 ' data from which the character is generated.
  281. 2130 '
  282. 2132 COLOR 7, 0: CLS : WIDTH 80: LOCATE 1, 14: PRINT "SHOW CHARACTER true design and location BIOS"
  283. 2133 PRINT : PRINT "This routine accepts any character from the keyboard, looks it up": PRINT "in the BIOS and displays the address, and shows the character full sized or"
  284. 2134 PRINT "grossly expanded exposing all of its warts."
  285. 2135 PRINT : PRINT "Press ANY key to start       Press [ESC] to return to menu"
  286. 2136 IF INKEY$ = "" THEN 2136
  287. 2140 SCREEN 0: CLS : KEY OFF: WIDTH 80: DEFINT A-Z
  288. 2150 LOCATE 25, 25: PRINT "              ": LOCATE 25, 25: PRINT "Character? ";
  289. 2160 A$ = INKEY$: IF A$ = "" THEN 2160 ELSE CLS
  290. 2170 IF A$ = CHR$(27) THEN 2390
  291. 2180 STARTADDR = &HFA6E + ASC(A$) * 8: LOCATE 25, 25: PRINT "Character: ";
  292. 2190 DEF SEG = &HB800: POKE 3912, ASC(A$): DEF SEG = &HF000: '** Show entry
  293. 2200  FOR N = 0 TO 7: ROMADDR = STARTADDR + N
  294. 2210 BYTE(N) = PEEK(ROMADDR): Y$ = HEX$(BYTE(N)): R$ = HEX$(ROMADDR)
  295. 2220 IF LEN(R$) > 3 THEN 2230 ELSE R$ = "0" + R$: GOTO 2220
  296. 2230 IF LEN(Y$) > 1 THEN 2240 ELSE Y$ = "0" + Y$: GOTO 2230
  297. 2240 LOCATE 2 * 3 + 2, 1: PRINT "F000:"; R$; "  "; Y$;
  298. 2250 FOR V = 0 TO 2: LOCATE N * 3 + V + 1, 15: GOSUB 2310: NEXT V
  299. 2260 NEXT N
  300. 2270 IF INKEY$ = "" THEN 2270 ELSE CLS : GOTO 2150
  301. 2280 '
  302. 2290 ' *** Turn block on for a "1", off for a "0"
  303. 2300 '
  304. 2310 IF BYTE(N) AND 128 THEN GOSUB 2400 ELSE PRINT "       ";
  305. 2320 IF BYTE(N) AND 64 THEN GOSUB 2400 ELSE PRINT "       ";
  306. 2330 IF BYTE(N) AND 32 THEN GOSUB 2400 ELSE PRINT "       ";
  307. 2340 IF BYTE(N) AND 16 THEN GOSUB 2400 ELSE PRINT "       ";
  308. 2350 IF BYTE(N) AND 8 THEN GOSUB 2400 ELSE PRINT "       ";
  309. 2360 IF BYTE(N) AND 4 THEN GOSUB 2400 ELSE PRINT "       ";
  310. 2370 IF BYTE(N) AND 2 THEN GOSUB 2400 ELSE PRINT "       ";
  311. 2380 IF BYTE(N) AND 1 THEN GOSUB 2400 ELSE PRINT "       ";
  312. 2390 RETURN
  313. 2400 FOR P = 1 TO 8: PRINT CHR$(219); : NEXT P: RETURN
  314. 2410 IF INKEY$ = "" THEN 2410
  315. 3000 CLS : LOCATE 14, 14: PRINT "ASAP Services  Video Toolbox "
  316. 3010 LOCATE 16, 14: PRINT "Press [Y] to confirm exit";
  317. 3020 A$ = INKEY$: IF A$ = "" THEN 3020
  318. 3030 IF A$ = "Y" OR A$ = "y" THEN 3500
  319. 3040 GOTO 50
  320. 3500 CLS : LOCATE 14, 14: PRINT "Thank you for using this program, remember its free!"
  321. 3510 LOCATE 16, 14: PRINT "Returning to the operating system"
  322. 3520 FOR I = 1 TO 800: NEXT I
  323. 3530 SYSTEM
  324. 3570 'DIM O(20), P(20), S(20), Y(20), D(20), A(20), I(20)
  325.  
  326.