10 REM Program by: Steve Dorr 15 REM Original Systat program by; Crisp 17 REM Display mods. by P. Feldmann (MCI 248-9063) 20 REM refrence; "CONFIG.BAS" by; Peter G. Wohlmut 30 REM "POKEPEEK.DOC" auther unknown 40 REM ***** see "I/O ADDRESS MAP" in the technical reference manual ***** 45 DEFDBL E 47 DIM SW$(2,8) 48 UP$= "ß" 49 DOWN$= "Ü" 50 CLS:KEY OFF:DEF SEG:POKE &H5C,25 55 GOTO 1000 57 CLS 60 TEMP=INP(&H61) 70 REM ***** turn off keyboard and read switches 80 OUT &H61,&HC8 90 SW1=INP(&H60) 100 SW2H=(INP(&H62) AND &HF) 110 REM ***** turn keyboard back on 120 OUT &H61,TEMP 130 SW2L=(INP(&H62) AND &HF) 140 SW2=16*SW2H+SW2L 150 REM ***** draw and label switches 160 LOCATE 1,21:PRINT " SW1 SW2 " 170 LOCATE 2,21:PRINT "ÚÄÒÄÒÄÒÄÒÄÒÄÒÄÒÄ¿ ÚÄÒÄÒÄÒÄÒÄÒÄÒÄÒÄ¿" 180 LOCATE 3,21:PRINT "³ º º º º º º º ³on ³ º º º º º º º ³" 190 LOCATE 4,21:PRINT "³ º º º º º º º ³ ³ º º º º º º º ³" 200 LOCATE 5,21:PRINT "ÀÄÐÄÐÄÐÄÐÄÐÄÐÄÐÄÙ ÀÄÐÄÐÄÐÄÐÄÐÄÐÄÐÄÙ" 210 LOCATE 6,21:PRINT " 1 2 3 4 5 6 7 8 1 2 3 4 5 6 7 8 " 220 LOCATE 3,40:PRINT CHR$(24) 230 REM ***** draw switch status 240 FOR I=0 TO 7 250 IF (SW1 AND 2^I)/2^I=1 THEN 270 260 LOCATE 3,I*2+22:COLOR 12:PRINT "ß":COLOR 7:GOTO 280 270 LOCATE 4,I*2+22:COLOR 12:PRINT "Ü":COLOR 7 280 IF (SW2 AND 2^I)/2^I=1 THEN 300 290 LOCATE 3,I*2+42:COLOR 12:PRINT "ß":COLOR 7:GOTO 310 300 LOCATE 4,I*2+42:COLOR 12:PRINT "Ü":COLOR 7 310 NEXT I 320 REM ***** find status in ram 330 DEF SEG=&H40 340 REM ***** memory size 350 TOTMEM=256*PEEK(&H14)+PEEK(&H13) 360 IOMEM=256*PEEK(&H16)+PEEK(&H15) 370 REM ***** equipment flags (bits 1,8,13 not used) 380 EQUIPFLAG=256*PEEK(&H11)+PEEK(&H10) 386 PARALLEL=0 388 IF EQUIPFLAG>16383 THEN EQUIPFLAG=EQUIPFLAG-16384:PARALLEL=PARALLEL+1:GOTO 388 390 SYSBRDMEM=((EQUIPFLAG AND 2^3+2^2)/2^2+1)*16 400 IF (EQUIPFLAG AND 2^0)=0 THEN DISKS=0:GOTO 420 410 DISKS=(EQUIPFLAG AND 2^7+2^6)/2^6+1 420 VI=(EQUIPFLAG AND 2^5+2^4)/2^4 430 IF VI=0 THEN VIDINIT$="No graphics card set" 440 IF VI=1 THEN VIDINIT$="40x25 Color card" 450 IF VI=2 THEN VIDINIT$="80x25 Color card" 460 IF VI=3 THEN VIDINIT$="80x25 Mono card" 470 SERIAL=(EQUIPFLAG AND 2^11+2^10+2^9)/2^9 480 IF (EQUIPFLAG AND 2^12)=2^12 THEN GAME$="YES" ELSE GAME$="NO" 490 TB$=CHR$(9) 500 REM ***** print status from ram 510 LOCATE 8,28:PRINT "Status according to RAM":PRINT 520 PRINT TB$;"Total Memory",TOTMEM;"Kbytes",TB$;"Disk drives ";DISKS 530 PRINT TB$;"I/O Memory",IOMEM;"Kbytes",TB$;"Parallel ports ";PARALLEL 540 PRINT TB$;"Sys Brd Mem",SYSBRDMEM;"Kbytes",TB$;"Serial ports ";SERIAL 550 PRINT TB$;"Video def",VIDINIT$;TB$;"Game adapter ";GAME$ 560 REM ***** find keyboard status 570 INSERTTGL=(PEEK(&H17) AND &H80)/&H80 580 CAPLCKTGL=(PEEK(&H17) AND &H40)/&H40 590 NUMLCKTGL=(PEEK(&H17) AND &H20)/&H20 600 SCRLCKTGL=(PEEK(&H17) AND &H10)/&H10 610 ALTERN=(PEEK(&H17) AND &H8)/&H8 620 CONTRL=(PEEK(&H17) AND &H4)/&H4 630 LFTSFT=(PEEK(&H17) AND &H2)/&H2 640 RGTSFT=(PEEK(&H17) AND &H1)/&H1 650 REM ***** print keyboard status 660 LOCATE 15,1,0 670 PRINT TB$;"Insert mode",INSERTTGL;TAB(40);"Alternate",ALTERN 680 PRINT TB$;"Caps lock",CAPLCKTGL;TAB(40);"Control",CONTRL 690 PRINT TB$;"Number lock",NUMLCKTGL;TAB(40);"Left shift",LFTSFT 700 PRINT TB$;"Scroll lock",SCRLCKTGL;TAB(40);"Right shift",RGTSFT 710 PRINT:PRINT:PRINT:PRINT TAB(30);"press ESC to end" 720 IF INKEY$=CHR$(27) THEN RETURN ELSE 560 730 REM ***** RS232 and Printer address's 740 FOR I=1 TO 4:J=I*2-1 750 SERIAL$(I)=HEX$(PEEK(J))+HEX$(PEEK(J-1)) 760 PRINTR$(I)=HEX$(PEEK(J+8))+HEX$(PEEK(J+7)) 770 NEXT I 780 REM ***** current video mode 790 CV=PEEK(&H49) 800 IF CV=0 THEN CV$="40x25 BW" 810 IF CV=1 THEN CV$="40x25 Color" 820 IF CV=2 THEN CV$="80x25 BW" 830 IF CV=3 THEN CV$="80x25 Color" 840 IF CV=4 THEN CV$="320x200 Color" 850 IF CV=5 THEN CV$="320x200 BW" 1000 CLS:KEY OFF:LOCATE 9,19,0:PRINT "Review/Set DIP Switches for IBM-PC or COMPAQ" 1010 PRINT:PRINT TAB(22);" 1. View current DIP switch settings.":PRINT 1020 PRINT TAB(22);" 2. Configure DIP switch settings.":PRINT 1030 PRINT TAB(22);" 3. Exit to DOS." 1040 PRINT:PRINT:PRINT TAB(32);"[Enter option]";:O=VAL(INPUT$(1)):IF (O <>1) AND (O<>2) AND (O<>3) THEN 1000 1050 ON O GOSUB 57,2000,3000 1060 GOTO 1000 2000 CLS:PRINT"THIS PROGRAM WILL ASK YOU HOW YOU WANT YOUR COMPUTER TO BE" 2010 PRINT:PRINT"SET UP AND THEN WILL ISSUE THE PROPER DIP SWITCH SETTINGS" 2020 PRINT:PRINT"FOR THE SYSTEM MOTHERBOARD." 2030 PRINT:PRINT"HOW MANY FLOPPY DISK DRIVES ARE THERE";:INPUT DISK 2040 IF DISK >4 OR DISK <0 THEN PRINT "ERROR...DISK RANGE 0..4 ":LOCATE 6,1:GOTO 2030 2060 PRINT" ":PRINT"HOW MUCH MEMORY IN K IS THERE";:INPUT MEM 2070 IF MEM<> INT(MEM/64)*64 THEN PRINT"ERROR...MEMORY MUST BE IN 64K INCREMENTS":LOCATE 8,1:GOTO 2060 2080 IF MEM <64 OR MEM >640 THEN PRINT"ERROR...MEMORY RANGE 64...640K ":LOCATE 8,1:GOTO 2060 2090 PRINT" ":PRINT"WHAT TYPE OF MONITOR DO YOU HAVE:" 2100 PRINT" 1. NO DISPLAY" 2110 PRINT" 2. MONOCHROME 80 x 25" 2120 PRINT" 3. GRAPHICS 40 x 25" 2130 PRINT" 4. GRAPHICS 80 x 25" 2140 INPUT MONITOR 2150 IF MONITOR <1 OR MONITOR >4 OR MONITOR <>INT(MONITOR) THEN LOCATE 10,1:GOTO 2090 2160 PRINT" ":PRINT "DO YOU HAVE AN 8087 CHIP INSTALLED(1-YES,2-NO)";:INPUT CHIP 2170 IF CHIP <>1 AND CHIP <>2 THEN LOCATE 17,1:GOTO 2160 2180 CLS 2200 LOCATE 1,12:PRINT " SW1 SW2 " 2210 LOCATE 2,12:PRINT "ÚÄÒÄÒÄÒÄÒÄÒÄÒÄÒÄ¿ ÚÄÒÄÒÄÒÄÒÄÒÄÒÄÒÄ¿" 2220 LOCATE 3,12:PRINT "³ º º º º º º º ³on ³ º º º º º º º ³" 2230 LOCATE 4,12:PRINT "³ º º º º º º º ³ ³ º º º º º º º ³" 2240 LOCATE 5,12:PRINT "ÀÄÐÄÐÄÐÄÐÄÐÄÐÄÐÄÙ ÀÄÐÄÐÄÐÄÐÄÐÄÐÄÐÄÙ" 2250 LOCATE 6,12:PRINT " 1 2 3 4 5 6 7 8 1 2 3 4 5 6 7 8 " 2260 LOCATE 3,31:PRINT CHR$(24) 2290 LOCATE 10,1 2300 PRINT:PRINT"# of floppy disk drives: ";DISK 2310 ON DISK+1 GOSUB 4000,4100,4200,4300,4400 2315 PRINT"Monitor: "; 2320 IF CHIP = 1 THEN SW$(1,2)=DOWN$ ELSE SW$(1,2) = UP$ 2330 ON MONITOR GOSUB 4500,4600,4700,4800 2340 PRINT "Memory installed:";MEM 2350 IF CHIP =2 THEN PRINT"No "; 2360 PRINT "8087 chip installed" 2380 ON MEM/64 GOSUB 5000,5010,5020,5030,5040,5050,5060,5070,5080,5090 2800 FOR I=0 TO 7: 2810 IF SW$(1,I+1)=UP$ THEN LOCATE 3,I*2+13:PRINT UP$; 2820 IF SW$(1,I+1)=DOWN$ THEN LOCATE 4,I*2+13:PRINT DOWN$; 2830 NEXT I 2840 SW$(2,6)=DOWN$:SW$(2,7)=DOWN$:SW$(2,8)=DOWN$ 2850 FOR I=0 TO 7: 2860 IF SW$(2,I+1)=UP$ THEN LOCATE 3,I*2+33:PRINT UP$; 2870 IF SW$(2,I+1)=DOWN$ THEN LOCATE 4,I*2+33:PRINT DOWN$; 2880 NEXT I 2940 LOCATE 22,1 2950 PRINT:PRINT "press ESC to end" 2960 IF INKEY$=CHR$(27) THEN RETURN ELSE 2960 2999 RETURN 3000 CLS:SYSTEM 4000 SW$(1,1)=UP$ :SW$(1,7)=UP$ :SW$(1,8)=UP$:RETURN 4100 SW$(1,1)=DOWN$:SW$(1,7)=UP$ :SW$(1,8)=UP$:RETURN 4200 SW$(1,1)=DOWN$:SW$(1,7)=DOWN$:SW$(1,8)=UP$:RETURN 4300 SW$(1,1)=DOWN$:SW$(1,7)=UP$ :SW$(1,8)=DOWN$:RETURN 4400 SW$(1,1)=DOWN$:SW$(1,7)=DOWN$:SW$(1,8)=DOWN$:RETURN 4500 SW$(1,5)=UP$ :SW$(1,6)=UP$ :PRINT"NO DISPLAY":RETURN 4600 SW$(1,5)=DOWN$:SW$(1,6)=DOWN$:PRINT"MONOCHROME 80 x 25":RETURN 4700 SW$(1,5)=DOWN$:SW$(1,6)=UP$ :PRINT"GRAPHICS 40 x 25":RETURN 4800 SW$(1,5)=UP$ :SW$(1,6)=DOWN$:PRINT"GRAPHICS 80 x 25":RETURN 5000 SW$(1,3)=DOWN$:SW$(1,4)=DOWN$:SW$(2,1)=UP$ :SW$(2,2)=UP$ :SW$(2,3)=UP$ : SW$(2,4)=UP$ :SW$(2,5)=UP$ :RETURN 5010 SW$(1,3)=DOWN$:SW$(1,4)=DOWN$:SW$(2,1)=UP$ :SW$(2,2)=DOWN$:SW$(2,3)=UP$ : SW$(2,4)=UP$ :SW$(2,5)=UP$ :RETURN 5020 SW$(1,3)=DOWN$:SW$(1,4)=DOWN$:SW$(2,1)=UP$ :SW$(2,2)=UP$ :SW$(2,3)=DOWN$: SW$(2,4)=UP$ :SW$(2,5)=UP$ :RETURN 5030 SW$(1,3)=DOWN$:SW$(1,4)=DOWN$:SW$(2,1)=UP$ :SW$(2,2)=DOWN$:SW$(2,3)=DOWN$: SW$(2,4)=UP$ :SW$(2,5)=UP$ :RETURN 5040 SW$(1,3)=DOWN$:SW$(1,4)=DOWN$:SW$(2,1)=UP$ :SW$(2,2)=UP$ :SW$(2,3)=UP$ : SW$(2,4)=DOWN$:SW$(2,5)=UP$ :RETURN 5050 SW$(1,3)=DOWN$:SW$(1,4)=DOWN$:SW$(2,1)=UP$ :SW$(2,2)=DOWN$:SW$(2,3)=UP$ : SW$(2,4)=DOWN$:SW$(2,5)=UP$ :RETURN 5060 SW$(1,3)=DOWN$:SW$(1,4)=DOWN$:SW$(2,1)=UP$ :SW$(2,2)=UP$ :SW$(2,3)=DOWN$: SW$(2,4)=DOWN$:SW$(2,5)=UP$ :RETURN 5070 SW$(1,3)=DOWN$:SW$(1,4)=DOWN$:SW$(2,1)=UP$ :SW$(2,2)=DOWN$:SW$(2,3)=DOWN$: SW$(2,4)=DOWN$:SW$(2,5)=UP$ :RETURN 5080 SW$(1,3)=DOWN$:SW$(1,4)=DOWN$:SW$(2,1)=UP$ :SW$(2,2)=UP$ :SW$(2,3)=UP$ : SW$(2,4)=UP$ :SW$(2,5)=DOWN$ :RETURN 5090 SW$(1,3)=DOWN$:SW$(1,4)=DOWN$:SW$(2,1)=UP$ :SW$(2,2)=DOWN$:SW$(2,3)=UP$ : SW$(2,4)=UP$ :SW$(2,5)=DOWN$ :RETURN