Listing of file='START' on disk='vmedia/wcs_diags.wvd.zip'
# Sector 117, program filename = 'START' 0010 REM -- START -- RICHARD NICHOLS -- 02/12/76 0020 COM H7$8,N5$(8)8,P8,P9,O0,O1,O2,O3,O4,O5,O8,O9,D9$(32)8,E9$(7)2,E(6),Z9(1 ),S8,G$,E1$ : DIM N1$(7)8,N2$(7),N3$(7),N4$(7),L$(7)2,L(7),L1(7),A$(4)3,Z$1,C$(10)30,G$ (4)64,C$64 : O8=1 : GOTO 510 0023 PRINT HEX(03) 0030 LOAD DC T"START/1" 0040 LOAD DC T"EXPAN-02" 0050 PRINT HEX(030D);TAB(20);"2200 SYSTEM DIAGNOSTIC" : GOSUB '250(26) : PRINT TAB(18);C$ : PRINT : K=0 0060 PRINTUSING 140,"00","ENTIRE C.P.U" 0070 PRINTUSING 140,"01","MEMORY" 0080 PRINTUSING 140,"02","MAT ROM (ONLY)" 0090 PRINTUSING 140,"03","GIO ROM (ONLY)" 0100 PRINTUSING 140,"04","SORT ROM (ONLY)" 0110 PRINTUSING 140,"05","PRINTERS" 0120 PRINTUSING 140,"06","DISKS" 0130 PRINTUSING 140,"07","C.P.U TEST RESULTS" : PRINTUSING 140,"08","DIAGNOSTIC VERIFICATION" 0140 % ## ..... ####################### 0150 KEYIN STR(Z$,1,1),150,160 : GOTO 150 0160 Z=VAL(STR(Z$,1,1))+1 : ON Z GOTO 170,440,450,460,470,490,500,730,40 : GOTO 50 0170 DEFFN'00 : PRINT HEX(03) : INIT(20)Z1$,A$(),C$() : K=5 0180 PRINT "DO YOU WISH TO TEST ( KEY 'Y' OR 'N' )" 0190 GOSUB '248("MATRIX ROM") : IF Z$<>"Y"THEN 200 : K=K+4 : A1$="OP1D010A" : C$(1)="MATRIX" : A$(1)=A1$ 0200 GOSUB '248("GIO") : IF Z$<>"Y"THEN 210 : K=K+1 : A2$="OP2D010A" : C$(2)="GENERAL I/O" : A$(2)=A2$ 0210 GOSUB '248("SORT") : IF Z$<>"Y"THEN 220 : K=K+6 : A3$="OP5D010A" : C$(3)="SORT" : A$(3)=A3$ 0220 IF A1$="OP1D010A"THEN 240 : IF A2$="OP2D010A"THEN 250 : IF A3$="OP5D010A"THEN 260 0230 A1$,A2$,A3$="DISK MC1" : GOTO 300 0240 IF A2$="OP2D010A"THEN 270 : A2$="OP5D010A" : GOTO 270 0250 A1$="OP2D010A" : GOTO 270 0260 A1$,A2$=A3$ : GOTO 300 0270 IF A3$="OP5D010A"THEN 300 : A3$="DISK MC1" : IF A2$="OP5D010A"THEN 290 0280 GOTO 300 0290 A2$="DISK MC1" 0300 PRINT HEX(030A0A0A);TAB(24);"MEMORY SIZE " : GOSUB '250(28) : PRINT TAB(16);C$ 0310 FOR X=2TO 8 : PRINT TAB(15);X;" ...................";X*4;TAB(22);" K" : NEXT X : PRINT TAB(16);C$ 0320 PRINT HEX(01);"NUMBER OF 'K' MEMORY" : PRINT "-";HEX(0D) 0330 KEYIN Z$,340,330 : GOTO 330 0340 PRINT Z$ : IF STR(Z$,1,1)=HEX(0D)THEN 50 : CONVERT Z$TO Z : Z=Z*4 : CONVERT ZTO STR(M$,1,2),(##) : STR(M$,3,1)="K" : A$(4)=M$ : STR(C$(4),1,3)=M$ : STR(C$(4),5,7)=" MEMORY" : IF Z>32THEN 300 : ON Z/4-1 GOSUB 870,880,890,900,910,920,930 0350 PRINT HEX(03);TAB(18);"2200 CPU DIAGNOSTIC" : GOSUB '250(27) : PRINT TAB(15);C$;HEX(0A0A) : FOR P=1TO 10 : PRINT TAB(INT(57-LEN(C$(P)))/2);C$(P) : NEXT P : PRINT HEX(0D) : PRINT TAB(10);"KEY RETURN / (EXEC) TO IF OK 'N' TO CHANGE" : GOSUB '250(58) : PRINT TAB(2);C$; 0360 KEYIN STR(Z1$,1,1),370,370 : GOTO 360 0370 IF STR(Z1$,1,1)<>HEX(0D)THEN 50 0380 DATA SAVE DA T(1023,L)A1$,A2$,A3$,"DISK MC1",M$,0,S8,0,0,0,0,0,0,E1$ 0390 LOAD DC T"MEM-LOAD" 0400 DEFFN'248(D$) 0410 PRINT HEX(010A);D$;" " : PRINT "-";HEX(0D) 0420 KEYIN Z$,430,430 : GOTO 420 0430 PRINT Z$ : FOR T=1TO 40 : NEXT T : RETURN 0440 DEFFN'01 : LOAD DC T"MEMORY" 0450 DEFFN'02 : A$="OP1D010A" : GOTO 480 0460 DEFFN'03 : A$="OP2D010A" : GOTO 480 0470 DEFFN'04 : A$="OP5D010A" 0480 DATA SAVE DA T$(1023,L)A$,A$,A$,A$ : Z9(1)=1 : LOAD DC TA$ 0490 DEFFN'05 : LOAD DC T"PRINTERS" 0500 DEFFN'06 : LOAD DC T"DISKS" 0510 PRINT HEX(03) : GOSUB 610 : PRINT HEX(010A0A0A);TAB(18);"PRIMARY DISK DEVICE ADDRESS" : GOSUB '250(29) : PRINT TAB(17);C$;HEX(0D0A0A0A0A0A) : GOSUB '250(29) : PRINT TAB(17);C$ 0520 KEYIN Z$,520,530 : GOTO 520 0530 GOSUB '250(38) : PRINT HEX(030A0A0A0A0A);TAB(12);C$ : PRINT TAB(12);"**** INITIALIZING PROGRAM FILES ****" : PRINT TAB(12);C$ : Z=VAL(STR(Z$,1,1))+1 : ON Z GOSUB 620,630,640,650 0540 LIMITS T"DISK MC3",A,B,C : DATA LOAD BA T(A+1,L)G$() : STR(G$(2),62,3),STR(G$(3),4,3),STR(G$(3),10,3),STR(G$(3),16,3),STR(G$(3), 22,3),STR(G$(3),28,3)=G$ : DATA SAVE BA T$(A+1,L)G$() : X=0 0550 DATA LOAD BA T(1023,L)G$() 0560 F=2 : DATA LOAD BA T(2399,L)G$() 0570 F=3 : DATA LOAD BA T(4799,L)G$() 0580 F=4 : DATA LOAD BA T(9791,L)G$() 0590 F=5 : DATA LOAD BA T(19583,L)G$() 0600 S8=19583 : E1$="2260" : STR(G$,4,4)=HEX(04130800) : IF STR(G$,1,1)="B"THEN 720 : GOTO 30 0610 PRINT HEX(0A0A0A0A0A);TAB(25);"00 ..... 310" : PRINT TAB(25);"01 ..... B10" : PRINT TAB(25);"02 ..... 320" : PRINT TAB(25);"03 ..... B20" 0620 G$="310" : SELECT DISK 310 : RETURN 0630 G$="B10" : SELECT DISK B10 : RETURN 0640 G$="320" : SELECT DISK 320 : RETURN 0650 G$="B20" : SELECT DISK B20 : RETURN 0660 ON ERROR E$,N$ GOTO 670 0670 F=F-1 : ON F GOTO 680,690,700,710 0680 S8=1023 : STR(G$,4,4)=HEX(00040000) : E1$="DISKETTE" : GOTO 30 0690 S8=2399 : STR(G$,4,4)=HEX(00090600) : E1$="2230-1" : GOTO 30 0700 S8=4799 : STR(G$,4,4)=HEX(01021300) : E1$="2230-2" : GOTO 30 0710 S8=9791 : STR(G$,4,4)=HEX(02060400) : E1$="2230-3" : IF STR(G$,1,1)="B"THEN 720 : GOTO 30 0720 ADD(STR(G$,4,1),07) : GOTO 30 0730 DATA LOAD DA T(1023,L)A1$,A2$,A3$,A4$,A5$,Z9(1),S8,E() 0740 PRINT HEX(03);TAB(22);"ACCUMULATIVE ERRORS" : GOSUB '250(23) : PRINT TAB(20);C$ 0750 PRINT TAB(22);Z9(1);"ITERATIONS";HEX(0A0A) 0760 PRINTUSING 850,"BASIC DIAGNOSTIC",E(1) 0770 PRINTUSING 850,"MATRIX ROM",E(2) 0780 PRINTUSING 850,"GENERAL I/O ROM",E(3) 0790 PRINTUSING 850,"SORT ROM",E(4) 0800 PRINTUSING 850,"DISK MICRO-CODE",E(5) 0810 PRINTUSING 850,"MEMORY",E(6) 0820 PRINT HEX(0A0A0A);TAB(17);"KEY RETURN / EXEC. FOR MENU" 0830 KEYIN A1$,840,840 : GOTO 830 0840 Z9(1)=0 : GOTO 50 0850 % ################ ............ #### ERRORS 0860 DEFFN'250(C) : INIT(20)C$ : INIT("*")STR(C$,1,C) : RETURN 0870 STR(G$,1,3)="053" : STR(G$,4,4)="0742" : GOTO 940 0880 STR(G$,1,3)="085" : STR(G$,4,4)="1190" : GOTO 940 0890 STR(G$,1,3)="117" : STR(G$,4,4)="1638" : GOTO 940 0900 STR(G$,1,3)="149" : STR(G$,4,4)="2086" : GOTO 940 0910 STR(G$,1,3)="181" : STR(G$,4,4)="2534" : GOTO 940 0920 STR(G$,1,3)="213" : STR(G$,4,4)="2982" : GOTO 940 0930 STR(G$,1,3)="245" : STR(G$,4,4)="3430" : GOTO 940 0940 LIMITS T"EXPAN-05",A,B,C : DATA LOAD BA T(A+1,L)G$() : STR(G$(1),15,3)=STR(G$,1,3) : STR(G$(3),41,4)=STR(G$,4,4) : DATA SAVE BA T$(A+1,L)G$() : DATA LOAD BA T(L,L)G$() : STR(G$(1),25,3)=STR(G$,1,3) : DATA SAVE BA T(A+2,L)G$() 0950 CONVERT STR(G$,4,4)TO K1 : IF A3$="OP5D010A"THEN 955 : K1=.00328*K1 : GOTO 960 0955 CONVERT STR(M$,1,2)TO K1 : K1=K1*.0625 0960 K=K+K1 : C$(7)="APPROX." : CONVERT KTO STR(C$(7),9,2),(##) : STR(C$(7),13)="MINUTES PER PASS" : RETURN