530 FOR P = 1 TO 5: PRINT CHR$(219); : NEXT P: RETURN
540 FOR P = 1 TO 10: PRINT CHR$(219); : NEXT P: RETURN
550 IF ANS$ = "H" THEN GOSUB 1130: GOTO 50
560 IF ANS$ = "h" THEN GOSUB 1130: GOTO 50
570 'CONVERGE -- BAR / DOT pattern for monitor or TV convergence check or setup
572 COLOR 7, 0: CLS : WIDTH 80: LOCATE 3, 14: PRINT "CONVERGENCE Test Pattern"
573 PRINT : PRINT "This rotuine will generate both dots and crosshatches to check or "
574 PRINT "adjust convergence on a color monitor or Televison set. If you don't have "
575 PRINT "have an RF modulator to feed the TV but have access to a VCR, you can plug"
576 PRINT "your composite video into the video input of a video-cassette recoreder and"
577 PRINT "drive the TV from the VCR's RF or Video output."
578 PRINT : PRINT "Press ANY key to start.": PRINT : PRINT "Press ANY key again to return to menu:"
579 IF INKEY$ = "" THEN 579
580 CLS : KEY OFF: SCREEN 2
590 FOR V = 0 TO 200 STEP 20
600 LINE (1, V)-(640, V): NEXT V
610 FOR H = 0 TO 640 STEP 40
620 LINE (H, 0)-(H, 200): NEXT H
630 FOR PV = 10 TO 190 STEP 20
640 FOR PH = 20 TO 630 STEP 40
650 PSET (PH, PV): NEXT PH: NEXT PV
660 IF INKEY$ = "" THEN 660 ELSE RETURN
670 ' MILIBRST -- Displays specific frequencies for checking monitor or system
680 ' frequency response. Key B switchs burst
690 ' on or off on conposite output. Exit with X
700 '
702 COLOR 7, 0: CLS : WIDTH 80: LOCATE 1, 14: PRINT "MULTI BURST video aligment generator"
703 PRINT : PRINT "This routine produces an output similar to a test signal used for video"
704 PRINT "aligment. This signal is a series of bursts of sine waves of equal levels and"
705 PRINT "known frequencies, and you can use it to test the frequency response of a video"
706 PRINT "amplifer, processor, or monitor. All frequencies are derived by dividing the"
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 "
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,"
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)";
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"
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"
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"
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."
715 PRINT : PRINT "Press ANY key to start.": PRINT "Press [B] for color burst switch Press [X] to return to the menu"
800 A$ = INKEY$: IF A$ = "b" OR A$ = "B" THEN SWAP B1, B2: OUT &H3D8, B1
810 IF A$ <> "x" AND A$ <> "X" THEN 800 ELSE RETURN
820 '
830 ' Eight pages are avialable in 40 column monochrome text
840 '
842 COLOR 7, 0: CLS : WIDTH 80: LOCATE 1, 14: PRINT "ANIMATION with monochrome text graphics, 8 pages"
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"
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"
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"
846 PRINT "this will illustrate how smooth the animation can be."
847 PRINT : PRINT "You will be asked how fast you want the screen scrolled through"
848 PRINT : PRINT "Press ANY key to start Press ANY key again to return to the menu"
910 FOR PAGE = 0 TO 7: SCREEN , , PAGE: CLS : FOR V = 0 TO 2
920 LOCATE V * 8 + 1 + PAGE, PAGE + 1: PRINT A$; : NEXT V
930 LOCATE 22, 19: PRINT "/\";
940 LOCATE 23, 18: PRINT "/--\";
950 LOCATE 24, 17: PRINT "/| |\";
960 LOCATE 25, 18: PRINT "| "; CHR$(219); "|";
970 LOCATE 2, 33: PRINT "Page"; PAGE; : FOR I = 1 TO 350: NEXT I: NEXT PAGE: ' show page number
980 '
990 ' ** Now flip throught the pages
1000 '
1010 SCREEN , , PAGE MOD 8: FOR B = 1 TO S: NEXT B: PAGE = PAGE + 1
1020 IF INKEY$ = "" THEN 1010 ELSE SCREEN , , 0: RETURN
1030 '
1040 ' characters then 16 -color 80 8 50 full interlace graphics
1050 '
1052 COLOR 7, 0: CLS : WIDTH 80: LOCATE 1, 14: PRINT "80 * 50 FULL INTERLACE graphics demonstration"
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"
1054 PRINT "the characters displayed to change into color blocks. These block show all": PRINT "16 colors possible on the Color Graphics adapter."
1055 PRINT : PRINT "Press ANY key to start character display"
1056 PRINT : PRINT "Press ANY key to stop characters being displayed and show color blocks"
1057 PRINT : PRINT "Press ANY key to return to the menu"
1058 IF INKEY$ = "" THEN 1058
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."
1060 DEF SEG = &HB800: WIDTH 80: SCREEN 0: OUT 980, 8: OUT 981, 3
1070 FOR ADR1 = 0 TO 8000 STEP 2
1075 IF INKEY$ <> "" THEN 1100
1080 POKE ADR1, 33 + (ADR1 / 2) MOD 90: POKE ADR1 + 1, 7: NEXT ADR1
1090 IF INKEY$ = "" THEN 1090 '** hit any key to go on
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"
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"
1275 PRINT "different movements that are accomplished without significantly deviating": PRINT "from the orginal parameters. Since horzonital frequency is unchanged"
1276 PRINT "in this routine, there is no risk to the monitor. First, vertical timing": PRINT "is altered, then horizontial position, then both. "
1277 PRINT : PRINT "Press ANY key to proceed through this routine"
1278 IF INKEY$ = "" THEN 1278
1280 KEY OFF: WIDTH 80: SCREEN 0: FOR I = 1 TO 24: PRINT : PRINT : NEXT I: GOSUB 1460: FILES: PRINT
1290 PRINT : PRINT "This is a test of the MC6845 port register access"
1500 ' BENTTEXT -- Shows that characters in graphics mode are
1510 ' treated the same way as any other pixel graphics
1520 '
1522 COLOR 7, 0: CLS : WIDTH 80: LOCATE 1, 14: PRINT "BENT TEXT characters are displayed as graphics"
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"
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'"
1525 PRINT : PRINT "Press ANY key to start": PRINT : PRINT "Press ANY key again to return to the menu"
1526 IF INKEY$ = "" THEN 1526
1530 SCREEN 1: CLS : DEFINT A-Z
1540 '
1550 ' *** First GET the larger characters ***
1560 '
1580 LOCATE 1, 1: PRINT "OAS": GET (0, 0)-(7, 7), O
1590 GET (8, 0)-(15, 7), A: GET (16, 0)-(23, 7), S
1600 '
1610 ' *** Not GET the small ones ***
1620 '
1630 SCREEN 2: LOCATE 1, 1: PRINT "YDPI"
1640 GET (0, 0)-(7, 7), Y: GET (8, 0)-(15, 7), D
1650 GET (16, 0)-(23, 7), P: GET (24, 0)-(31, 7), I
1660 '
1670 ' *** Display then ***
1680 CLS : PUT (102, 80), O: PUT (115, 82), O
1690 PUT (132, 84), P: PUT (144, 85), S: PUT (160, 84), Y
1700 PUT (118, 99), D: PUT (135, 98), A: PUT (150, 97), I
1710 PUT (167, 96), S: PUT (190, 94), Y
1720 IF INKEY$ = "" GOTO 1720
1730 RETURN
1740 ' CHRDEFN.bas -- a character for CHR$(128) =, then
1750 ' define a row of them. Arbitrarily put at 54K.
1760 '
1762 COLOR 7, 0: CLS : WIDTH 80: LOCATE 1, 14: PRINT "DEFINE a Graphics character of your own"
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"
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"
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 "
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"
1767 PRINT "graphics character is only 8 * 8 pixels. This definition stays in effect": PRINT "until you reboot the system"
1768 PRINT : PRINT "Press ANY key to proceed through 40 and 80 column displays"
1769 IF INKEY$ = "" THEN 1769
1770 DEF SEG = 0
1780 POKE &HE000, &H95: POKE &H1, &H95
1790 POKE &HE002, &H95: POKE &HE003, &HF5
1800 POKE &HE004, &H95: POKE &HE005, &H95
1810 POKE &HE006, &H94: POKE &HE007, &H95
1820 '
1830 ' *** Put the location in the interrupt table ***
1930 FOR N = 1 TO 18: PRINT CHR$(128); " "; : NEXT N
1940 NEXT I
1950 '
1960 ' *** now untill a reboot is done, this is
1970 ' character # 128 in graphics modes. ***
1980 IF INKEY$ = "" THEN 1980 ELSE CLS
1990 '
2000 ' *** now put out a random pattern ***
2010 '
2020 FOR I = 1 TO 50 * C
2030 A = INT(RND * 39) * C: IF A = 0 THEN 2030
2040 B = INT(RND * 24): IF B = 0 THEN 2040
2050 LOCATE B, A: PRINT CHR$(128)
2060 NEXT I
2070 IF INKEY$ = "" THEN 2070 ELSE CLS
2080 WIDTH 80
2090 IF C = 1 THEN C = 2: GOTO 1910
2095 RETURN
2100 ' CHARSHOW -- This will nearly fill the screen with a selected
2110 ' character and indicate its location in the BIOS ROM, and the ROM
2120 ' data from which the character is generated.
2130 '
2132 COLOR 7, 0: CLS : WIDTH 80: LOCATE 1, 14: PRINT "SHOW CHARACTER true design and location BIOS"
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"
2134 PRINT "grossly expanded exposing all of its warts."
2135 PRINT : PRINT "Press ANY key to start Press [ESC] to return to menu"