1200 CLEAR ,18000 'Keep BASIC out of expansion memory but leave room
1300 'for the machine language memory test USR subroutine.
1310 DEF SEG
1340 ON ERROR GOTO 14900
1350 GOSUB 50000 'Disable function keys, except F10
1400 SCREEN 0,0: WIDTH 80
1500 DEFINT A-Z
1600 DIM Q(12)
1650 COMMON CH$
1655 FALSE=0:TRUE=NOT FALSE
1660 PLUG1=TRUE:PLUG2=TRUE
1700 GOSUB 49000 'Initialize COM and LPT port address variables
2005 DEF SEG:POKE 106,0
2010 DEF SEG=0:POKE 1050,PEEK(1052):CC1=PEEK(65521):CC2=PEEK(65522):CC3=PEEK(65523):IF CC1=206 THEN IF CC2=216 THEN CH$=CHR$(CC3) 'Values passed from MEMTEST
2020 DEF SEG
2025 IF CH$<>"" THEN 7900
2100 CLS:KEY OFF
2200 PRINT TAB(30);"QUADRAM CORPORATION":PRINT TAB(30);"QUAD 512+ TEST 1.3":PRINT TAB(28);"TESTING AND DIAGNOSTICS":PRINT TAB(32);"FOR QUAD 512+"
2300 LOCATE 5,50
2900 '***************** MAIN LINE **************
3400 PRINT:PRINT " 1 - MEMORY TEST"
3500 PRINT " 2 - ASYNC SERIAL TEST"
4100 PRINT " 7 - DUAL PORT ASYNC TEST"
4300 PRINT " A - TEST BOTH QUAD 512+ FUNCTIONS"
4700 PRINT " X - RETURN TO QUADTEST MENU"
4800 PRINT
5000 BEEP:PRINT TAB(35)"INPUT TEST FUNCTION ";:CH$=INPUT$(1):PRINT CH$
5100 IF ASC(CH$)>=97 AND ASC(CH$)<=122 THEN CH$=CHR$(ASC(CH$)-32)
5110 IF CH$="X" THEN RUN "QUADTEST" ELSE GOSUB 47200
5200 IF CH$="A" THEN 9600
6100 IF VAL(CH$)<1 THEN GOTO 2100
6200 ON VAL(CH$) GOTO 9600,6900,2100,2100,2100,2100,7100
6300 GOTO 2100
6900 GOSUB 14810 'See if loop back plug is installed
6910 PRINT:GOSUB 13000
7000 GOTO 6910
7100 GOSUB 14810:GOSUB 14850 'See if both loop back plugs are installed
7110 PRINT:GOSUB 13000
7300 GOSUB 14200
7500 GOTO 7110
7600 '************* ALL FUNCTIONS CHECK **********
7700 CHAIN "memt512"
7900 '
8100 PRINT
8200 GOSUB 13000
8400 PRINT "TOTAL MEMORY ERRORS =";EM%;
8600 PRINT:GOTO 7600
9600 '*********** MEMORY CHECK ****************
9700 CHAIN "MEMT512"
13000 '*************** SERIAL PORT TEST *****************
13200 CLOSE
13400 ON ERROR GOTO 14900
13500 IF PLUG1 THEN OPEN "COM1:9600,N,8" AS #1 ELSE OPEN "COM1:9600,N,8,,CS,DS" AS #1:OUT (COMPORT1+4),(INP(COMPORT1+4) OR 16) 'if no plug then use 8250 test mode
13600 OPEN "SCRN:" FOR OUTPUT AS 2
13700 PAUSE = FALSE
13800 B$="RS232 TEST FIRST PORT--THE QUICK BROWN FOX JUMPED OVER THE FENCE 0123456789 ":PRINT #1,B$
13900 A$=INPUT$(LOC(1),#1)
14000 PRINT #2,A$;
14100 RETURN
14200 CLOSE
14300 IF PLUG2 THEN OPEN "COM2:9600,N,8" AS #1 ELSE OPEN "COM2:9600,N,8,,CS,DS" AS #1:OUT (COMPORT2+4),(INP(COMPORT2+4) OR 16) 'if no plug then use 8250 test mode
14400 OPEN "SCRN:" FOR OUTPUT AS 2
14500 B$="RS232 TEST SECOND PORT--THE QUICK BROWN FOX JUMPED OVER THE FENCE 0123456789 ":PRINT #1,B$
14600 A$=INPUT$(LOC(1),#1)
14700 PRINT #2,A$;
14800 RETURN
14810 '********* FIND OUT IF LOOPBACK PLUG IS INSTALLED *********
14812 PRINT TAB(30);"ASYNCHRONOUS PORT TEST":PRINT
14815 PLUG1=TRUE
14820 PRINT "IS LOOPBACK PLUG INSTALLED ON COM1: PORT CONNECTOR? ";:AN$=INPUT$(1):PRINT AN$
14830 IF AN$="N" OR AN$="n" THEN PLUG1=FALSE
14840 RETURN
14850 PLUG2=TRUE
14855 PRINT
14860 PRINT "IS LOOPBACK PLUG INSTALLED ON COM2: PORT CONNECTOR? ";:AN$=INPUT$(1):PRINT AN$