10 '     Picture City Personal Computer Programming Club    "CHARDISP"
20 '             Michael Csontos, 3228 Livonia Center Road, Lima, NY 14485
30 KEY OFF:CLS
40 PRINT "This program allows you to view the complete character set for
50 PRINT "       the IBM Personal Computer on the display in a form which
60 PRINT "       allows you to closely examine it for selection of characters
70 PRINT "       which might be useful for special purposes.
80 PRINT
90 PRINT "The entire set will scroll slowly and may be stopped at any time by
100 PRINT "       pressing  and  keys simutaniously. To resume
110 PRINT "       the scrolling, press the space bar.   Use + 3 or 4 times, and .
140 PRINT "
150 PRINT "To use characters which are not represented by keys on the keyboard,
160 PRINT "      the sequence CHR$(n) must be used in a print statement, where
170 PRINT "      n is the number that appears at the beginning of the line
180 PRINT "      in the display, e.g. PRINT CHR$(146) produces ";CHR$(146);"."
190 PRINT
200 PRINT "Non-displayed characters are described only, since outputting them
210 PRINT "      to the display might produce a confusing result.
220 PRINT "
230 INPUT "Ready to start (Y/N)";A$
240 IF A$="Y" GOTO 290
250 IF A$="y" GOTO 290
260 IF A$="n" THEN GOTO 580
270 IF A$="N" THEN GOTO 580
280 PRINT:PRINT "The program will respond to keys y,Y,n or N only!":FOR W=1 TO 5000:NEXT :GOTO 10
290 CLS
300 FOR N=0 TO 255
310 IF N<10 THEN PRINT " ";
320 IF N<100 THEN PRINT " ";
330 PRINT N;
340 IF N=0 THEN PRINT "NULL":L$=STRING$(20,CHR$(1)):GOTO 740
350 IF N=7 THEN PRINT "BEEP";CHR$(7):GOTO 590
360 IF N=8 THEN PRINT "BACKSPACE":GOTO 590
370 IF N=9 THEN PRINT "TAB":GOTO 590
380 IF N=10 THEN PRINT "LINE FEED":GOTO 590
390 IF N=11 THEN PRINT "HOME":GOTO 590
400 IF N=12 THEN PRINT "FORM FEED":GOTO 590
410 IF N=13 THEN PRINT "CARRIAGE RETURN":GOTO 700
420 IF N=28 THEN PRINT "CURSOR RIGHT":GOTO 590
430 IF N=29 THEN PRINT "CURSOR LEFT":GOTO 590
440 IF N=30 THEN PRINT "CURSOR UP":GOTO 590
450 IF N=31 THEN PRINT "CURSOR DOWN":GOTO 590
460 IF N=32 THEN PRINT "SPACE":GOTO 730
470 IF N=255 THEN PRINT "BLANK 'FF'":GOTO 590
480 PRINT CHR$(N);"  ";
490 FOR M=1 TO 72
500 PRINT CHR$(N);
510 NEXT M
520 FOR Q=0 TO 1500:NEXT'delay at end of full charactor lines
530 IF FIX(N/2)=N/2 THEN 600 ELSE 650
540 PRINT SPC(40);Z$;W$;:FOR P=0 TO 400:NEXT 'delay at end of split lines
550 GOSUB 760
560 NEXT N
570 FOR NN=0 TO 10:PRINT:FOR NNN=0 TO 1500:NEXT:PRINT:GOSUB 760:FOR NNNN=0 TO 1000:NEXT:NEXT:CLS
580 PRINT:PRINT "G";CHR$(1);CHR$(2);CHR$(3);"  B";CHR$(157);CHR$(144):PRINT:KEY ON:END
590 FOR O=0 TO 2000:NEXT:PRINT:FOR O=0 TO 1000:NEXT:GOTO 550'delays for non-print lines
600 X$=CHR$(N)
610 Z$=STRING$(20,X$)
620 IF N=6 THEN Y$=" ":GOTO 640
630 Y$=CHR$(N+1)
640 W$=STRING$(20,Y$):GOTO 540
650 IF N=7 THEN Y$=" ":GOTO 670
660 Y$=CHR$(N)
670 W$=STRING$(20,Y$)
680 X$=CHR$(N+1)
690 Z$=STRING$(20,X$):GOTO 540
700 K$=STRING$(20,CHR$(14))
710 PRINT SPC(40);K$
720 GOTO 550
730 L$=STRING$(20,CHR$(33))
740 PRINT SPC(60);L$;
750 GOTO 550
760 DEF SEG = &HB800
770 FOR COLUMN = 50 TO 70
780 POKE ((CSRLIN-10)*160+(COLUMN-1)*2)+1,112
790 NEXT COLUMN
800 FOR COLUMN = 50 TO 70
810 POKE ((CSRLIN-11)*160+(COLUMN-1)*2)+1,112
820 NEXT COLUMN
830 RETURN
840 '           SAVE"CHARDISP