Listing of file='36dwkbd' on disk='vmedia/mvp-diag-2.6.2.wvd.zip'
# Sector 3811, program filename = '36dwkbd'
0010 SELECT PRINT 005(80)
: PRINT HEX(0306)
: A1=#PART
: A$="T# DIAG"
: CONVERT A1TO STR(A$,3,2),(##)
: DEFFN@PARTA$
0020 DIM A,A$,A$(1)80,A1,A1$1,B,B$1,B$(1)80,B5$100,C,C$1,C$(81)1,C1,D,D$5,D$(5
)5,E,E$,F,F1,F$29,G$,I,I$1,I1,I2,J,J$1,J1,J2,K$7,L,M$20,P,P$30,P$(16)30,P
2,Q,Q3$(4)64,Q5$(4)64,R,R1,S,S$,U,X
0023 D$(1)=HEX(020400020E)
: D$(2)=HEX(020404020E)
: D$(3)=HEX(020400000E)
: D$(4)=HEX(020402020E)
: D$(5)=HEX(020402000E)
0040 PRINT HEX(0306)
: D$=D$(5)
: R=0
: M$="DW Keyboard Tests"
: GOSUB '40
: $PSTAT="KBD-MENU"
0050 PRINT AT(5,0);"Which test would you like (1-7)";HEX(0F);AT(8,30);" 1) Alp
ha Keyboard";AT(10,30);" 2) Control/Edit Keys";AT(12,30);" 3) Number pad"
;AT(14,30);" 4) WP/SF' Keys";AT(16,30);" 5) All Above tests";AT(18,30);"
6) Case Mode";AT(20,30);" 7) Main Menu"
0060 KEYIN C$
: C=NUM(C$)
: IF C<>1THEN 60
: CONVERT C$TO C
: ON CGOSUB 770,790,810,830,850,870,7000,60,60,60
: M$="TEST PASSED"
: R=10
: SELECT P9
: PRINT HEX(0306)
: GOSUB '40
: SELECT P
: GOTO 40
0770 $PSTAT="dwkeyalp"
: GOSUB 2010
: R=0
: M$="ALPHA KEY TEST"
: D$=D$(5)
: GOSUB '40
0772 GOSUB 1770
: R=1
: M$="Set A/a, No Shift"
: D$=D$(5)
: GOSUB '40
: A=1
: F1=49
: GOSUB 900
0774 GOSUB 1770
: D$=D$(4)
: GOSUB 1550
: R=1
: M$="Set A/a, Hold Shift"
: D$=D$(5)
: GOSUB '40
: A=50
: F1=98
: GOSUB 900
0776 D$=D$(1)
: GOSUB 1550
: RETURN
0790 $PSTAT="dwkeyedt"
: GOSUB 2010
: R=0
: M$="CONTROL/EDIT KEYS"
: D$=D$(5)
: GOSUB '40
0792 GOSUB 1770
: R=1
: M$="Set A/a, No Shift"
: D$=D$(5)
: GOSUB '40
: A=99
: F1=112
: GOSUB 900
0794 GOSUB 1770
: D$=D$(4)
: GOSUB 1550
: R=1
: M$="Set A/a, Hold Shift"
: D$=D$(5)
: GOSUB '40
: A=113
: F1=125
: GOSUB 900
: D$=D$(1)
: GOSUB 1550
: R=1
: M$=" "
: D$=D$(5)
: GOSUB '40
: RETURN
0810 $PSTAT="dwkey#pd"
: GOSUB 2010
: R=0
: M$="NUMBER PAD"
: D$=D$(5)
: GOSUB '40
0812 GOSUB 1750
: M$="A/A, No Shift"
: R=1
: GOSUB '40
: PRINT AT(11,62,14);AT(13,62,18);AT(15,62,18);AT(17,58,22);AT(18,62,18);AT
(19,62,18);AT(13,71);BOX(-1,-4)
: I1=9
: I2=I1
: J1=1
: J2=14
: D$=D$(1)
: GOSUB '155
0814 I1=9
: I2=I1
: FOR J1=1TO 13
: J2=J1
: B$=STR(K$(I1,J1),6,1)
: D$=D$(4)
: GOSUB '155
0815 KEYIN A1$
: IF A1$=B$THEN 816
: GOSUB 1180
: GOTO 815
0816 PRINT D$(5);AT(22,0,80)
0817 KEYIN A1$
: IF A1$=B$THEN 818
: GOSUB 1180
: GOTO 816
0818 PRINT D$(5);AT(22,0,80)
: D$=D$(1)
: GOSUB '155
: NEXT J1
: RETURN
0819 GOSUB 1770
: R=1
: M$="Set A/a"
: D$=D$(5)
: GOSUB '40
: A=0
: F1=96
: GOSUB 900
0830 $PSTAT="dwkeysf"
: GOSUB 2010
: R=0
: M$="WP/SF' KEY TEST"
: D$=D$(5)
: GOSUB '40
0832 GOSUB 1770
: R=1
: M$="Set A/a, No Shift"
: D$=D$(5)
: GOSUB '40
: A=141
: F1=156
: GOSUB 900
0834 D$=D$(4)
: GOSUB 1550
: R=1
: M$="Hold Shift"
: D$=D$(5)
: GOSUB '40
: A=157
: F1=172
: GOSUB 900
0836 RETURN
0850 $PSTAT="dwkeyall"
: GOSUB 2010
: M$="TEST ALL KEYS"
: D$=D$(5)
: R=0
: GOSUB '40
: GOSUB 772
: GOSUB 792
: GOSUB 812
: GOSUB 2010
: GOSUB 832
: RETURN
0870 $PSTAT="dwkeymod"
: GOSUB 2010
: R=0
: M$="CASE/MODE TEST"
: D$=D$(5)
: GOSUB '40
0872 GOSUB 1770
: R=1
: M$="Set A/a, No Shift"
: D$=D$(5)
: GOSUB '40
: A=175
: F1=178
: GOSUB 900
0874 D$=D$(4)
: GOSUB 1550
: R=1
: M$="Set A/a, Hold Shift"
: D$=D$(5)
: GOSUB '40
: A=179
: F1=182
: GOSUB 900
: D$=D$(1)
: GOSUB 1550
0876 GOSUB 1750
: R=1
: M$="Set A/A, NO Shift"
: D$=D$(5)
: GOSUB '40
: A=183
: F1=186
: GOSUB 900
0878 D$=D$(4)
: GOSUB 1550
: R=1
: M$="Set A/A, Hold Shift"
: D$=D$(5)
: GOSUB '40
: A=187
: F1=190
: GOSUB 900
: D$=D$(1)
: GOSUB 1550
0879 D$=D$(4)
: GOSUB 1570
: R=1
: M$="Set A/A, Set Lock"
: D$=D$(5)
: GOSUB '40
: A=191
: F1=194
: GOSUB 900
: RETURN
0900 F=A-1
0910 IF F=F1THEN RETURN
: F=F+1
0990 GOSUB '93
: B=0
: GOSUB '145
: GOSUB '93
: B=0
: GOSUB '145
: GOSUB '92
: GOTO 910
1020 DEFFN'145
: KEYIN A1$,1030,1030
: Q=0
: GOTO 1040
1030 KEYIN A1$,1030,1030
1040 KEYIN A1$,1070,1090
: GOTO 1040
1060 A1$=SUBHEX(80)
: U=0
1070 P=1
: GOTO 1120
1090 P=2
: IF U=1AND A1$>=HEX(80)THEN 1060
1120 GOSUB 1150
: IF B>0THEN 1130
: D$=D$(2)
: GOSUB '135
: GOSUB '91
: GOSUB '92
: GOTO 1020
1130 P=0
: RETURN
1150 PRINT D$(3);AT(22,0,80)
: P=P+3
: IF A1$<>B$THEN 1180
: B=B+1
1160 RETURN
1180 P=P-3
: C$=A1$
: C$=XOR B$
: PRINT D$(5);AT(22,15);"EXPECTED - ";HEXOF(B$);" RETURNED - ";HEXOF(A1$);
" XOR - ";HEXOF(C$)
: FOR C=1TO 4
: PRINT HEX(07)
: FOR D=1TO 400
: NEXT D
: NEXT C
: RETURN
1200 DEFFN'135
: ON PGOSUB 1220,1280
: RETURN
1220 IF A1$<HEX(21)THEN 1350
: IF A1$>HEX(7F)THEN 1350
1250 GOSUB '70
: RETURN
1280 IF A1$>HEX(5F)THEN 1350
: IF A1$<HEX(50)AND A1$>HEX(1F)THEN GOSUB 1300
: IF A1$<HEX(60)AND A1$>HEX(4F)THEN GOSUB 1320
: GOSUB '70
: RETURN
1300 A1$=ADDHEX(50)
: RETURN
1320 A1$=ADDHEX(40)
: RETURN
1350 C$=A1$
: $TRAN(C$,T1$)R
: ON C$GOTO 1410,1510,1390,1490,1460
1370 B$=A1$
: A1$=C$
: GOSUB '70
: A1$=B$
: RETURN
1390 I1=12
: I2=I1
: J1=13
: J2=16
: GOSUB '155
: RETURN
1410 I1=11
: I2=I1
: IF Q=2THEN 1420
: INIT(20)K$
: PRINT AT(13,53);D$;STR(K$,1,2)
: PRINT AT(14,53);STR(K$,1,2)
: J1=9
: J2=10
: GOSUB '155
1420 IF Q=1THEN 1430
: I1=11
: I2=I1
: J1=11
: J2=13
: GOSUB '155
1430 RETURN
1460 KEYIN A1$,1470,1470
1470 U=1
: A1$="-"
: GOTO 1220
1490 I1=09
: I2=I1
: J1=14
: J2=16
: GOSUB '155
: RETURN
1510 I1=12
: I2=I1
: J1=1
: J2=12
: GOSUB '155
: RETURN
1550 GOSUB 1590
: GOSUB 1610
: RETURN
1570 I1=11
: I2=I1
: J1=15
: J2=16
: GOSUB '155
: RETURN
1590 I1=11
: I2=I1
: J1=1
: J2=3
: GOSUB '155
: RETURN
1610 I1=11
: I2=I1
: J1=4
: J2=6
: GOSUB '155
: RETURN
1630 DEFFN'60
: I$=HEX(F0)
: J$=HEX(0F)
: I$=AND A1$
: ROTATE(I$,4)
: J$=AND A1$
: I=VAL(I$)
: J=VAL(J$)
: I=I+1
: J=J+1
: RETURN
1640 DEFFN'70
: GOSUB '60
: K$=K$(I,J)
: GOSUB '50
: GOSUB '90
: RETURN
1660 DEFFN'50
: CONVERT STR(K$,1,2)TO R
: CONVERT STR(K$,3,2)TO C
: RETURN
1680 DEFFN'90
: PRINT D$;AT(R,C);STR(K$,5,3)
: RETURN
1700 DEFFN'91
: FOR D=1TO 5000
: NEXT D
: RETURN
1720 DEFFN'155
: FOR I=I1TO I2
: FOR J=J1TO J2
: K$=K$(I,J)
: GOSUB '50
: PRINT D$;AT(R,C);STR(K$,5,3)
: NEXT J
: NEXT I
: RETURN
1750 PRINT D$(5);AT(2,1);HEX(0202020FFF0202000F);AT(2,3);"A/A";D$(3);AT(4,0);"
A/a";AT(2,0);BOX(2,2);AT(4,0);BOX(-1,-2)
: RETURN
1770 PRINT D$(5);AT(4,1);HEX(0202020FFF0202000F);D$(3);AT(2,0);" A/A";D$(5);
AT(4,3);"A/a";AT(3,0);BOX(2,2);AT(2,0);BOX(-1,-2)
: RETURN
1800 DEFFN'92
1810 IF A1$<"a"OR A1$>"z"THEN 1820
: A1$=AND HEX(DF)
: GOTO 1840
1820 $TRAN(A1$,T2$)R
1840 IF B=1THEN 1860
: D$=D$(1)
: ON PGOSUB 1220,1280
: GOSUB '93
: RETURN
1860 C$=A1$
: GOSUB '94
: A1$=C$
: D$=D$(1)
: GOSUB '135
: P=0
: RETURN
1880 DEFFN'93
: GOSUB '94
: D$=D$(4)
: GOSUB '135
: P=0
: RETURN
1900 DEFFN'94
: F$=F$(F)
: A1$=STR(F$,1,1)
: B$=A1$
: CONVERT STR(F$,2,1)TO D
: ON DGOTO 1910,1920,1930,1940
: RETURN
1910 P=1
: Q=1
: RETURN
1920 P=2
: Q=1
: RETURN
1930 P=1
: Q=2
: RETURN
1940 P=2
: Q=2
: RETURN
1960 DEFFN'40
: C=(40-(LEN(M$)/2))
: PRINT D$(3);AT(R,0,80);D$;AT(R,C);M$;HEX(07)
: RETURN
2010 PRINT HEX(0306)
2020 GOSUB 1750
: D$=D$(1)
: I1=1
: I2=1
: J1=1
: J2=16
: GOSUB '155
: I1=10
: I2=12
: GOSUB '155
: I1=9
: I2=I1
: J1=14
: J2=16
: GOSUB '155
: D$=D$(3)
: I1=8
: I2=I1
: J1=15
: J2=16
: GOSUB '155
2030 PRINT AT(7,0);BOX(1,4);AT(13,71);BOX(1,4)
: D$=D$(1)
: I1=4
: I2=4
: J1=1
: J2=14
: GOSUB '155
: I1=6
: I2=6
: GOSUB '155
: I1=5
: I2=I1
: J1=2
: J2=16
: GOSUB '155
: I1=3
: I2=3
: J1=13
: J2=16
: GOSUB '155
: J1=8
: J2=J1
: GOSUB '155
2040 INIT(20)K$
: PRINT AT(13,53);STR(K$,1,2)
: PRINT AT(14,53);STR(K$,1,2)
: RETURN
7000 COM CLEAR
: LOAD T"TERMINAL"
8000 DEFFN'1"LISTSD200,"
8010 DEFFN'2"LISTSD740,"