10 REM Dashboard mockup 21 Mar 85 20 REM 30 REM xX,xY zero screen locations 40 REM xM full scale position offset 50 REM xF full scale value 60 REM xC current displayed value 70 REM xP needle width 80 REM ------------------------------------ 90 REM x,y Box subroutine parameters 100 REM h,w Box height and width 110 REM t Box thickness 120 REM 130 XMAX = 319 : YMAX = 239 140 REM 150 REM draw the basic screen 160 REM 170 PRINT CHR$(27); "c"; CHR$(27);"U " 180 GRAPH 190 X= 0 : Y = 0 : W = XMAX : H = YMAX : T = 1 200 GOSUB 1330 :' draw border (box) 210 X = 30 : Y = YMAX - 40 : W = XMAX - 140 : H = 14 220 GRAPH L((YMAX - Y) / 10,2) 230 PRINT "MPH"; 240 T = 2 :' box thickness 250 SX = X + T :' location of speedo zero 260 SY = Y + (H / 2) :' X and Y, 270 SM = W - (2 * T) :' max. length 280 SF = 140 :' full scale 290 SC = 0 :' current setting 300 SP = H - (2 * T) :' needle size 310 GOSUB 1330 :' draw speedo slider 320 PRINT CHR$(27);"S0"; 330 FOR I = 0 TO SF STEP 10 :' draw ticks and numbers 340 N= X + (I / SF) * SM 350 PLOT (N,Y + H + T) 360 PLOT TO (N,Y + H + T + 4) :' tick mark 370 GRAPH L((YMAX - Y - H - T - 6) / 8,N / 4 - 1) 380 PRINT I; 390 NEXT I 400 REM 410 Y = Y - 40 420 GRAPH L((YMAX - Y) / 10,2) 430 PRINT "RPM"; 440 TX = X + T :' tach zero 450 TY = Y + (H / 2) :' X and Y 460 TF = 4000 :' full scale 470 TM = W - (2 * T) 480 TP = H - (2 * T) :' needle width 490 TC = 0 500 GOSUB 1330 :' tach box 510 FOR I = 0 TO TF STEP 500 :' draw ticks and numbers 520 N= X + (I / TF) * TM 530 PLOT (N,Y + H + T) 540 PLOT TO (N,Y + H + T + 4) :' tick mark 550 GRAPH L((YMAX - Y - H - T - 20) / 8,N / 4 - 1) 560 PRINT I / 10; 570 NEXT I 580 Y = Y - 40 590 GRAPH L((YMAX - Y) / 10,2) 600 PRINT "VAC"; 610 VX = X + V :' vaccuum zero 620 VY = Y + (H / 2) :' X and Y 630 VF = 30 :' full scale 640 VM = W - (2 * T) 650 VP = H - (2 * T) :' needle width 660 VC = 0 670 GOSUB 1330 :' tach box 680 FOR I = 0 TO VF STEP 5 :' draw ticks and numbers 690 N= X + (I / VF) * VM 700 PLOT (N,Y + H + T) 710 PLOT TO (N,Y + H + T + 4) :' tick mark 720 GRAPH L((YMAX - Y - H - T) / 8 - 3,N / 4 - 1) 730 PRINT I; 740 NEXT I 750 REM 760 REM Draw the small gauges 770 REM 780 Y = 40 790 X = 120 800 H = 60 810 W = 20 820 FF = 22 : FM = H - (2 * T) : FP = W - (2 * T) : FY = Y + T 830 WF = 250 : WM = FM : WP = W - (2 * T) : WY = Y + T 840 PF = 80 : PM = FM : PP = W - (2 * T) : PY = Y + T 850 OF = 400 : OM = FM : OP = W - (2 * T) : OY = Y + T 860 REM 870 REM Draw all the little boxes, and their titles in 880 REM small characters. 890 REM 900 PRINT CHR$(27);"S0"; :' small characters 910 I = (YMAX - Y ) / 8 - 2 :' "line" above each box 920 REM 930 REM 940 FX = X + (W / 2) 950 GRAPH L(I,(X / 4) + 2) 960 PRINT "FUEL"; 970 GOSUB 1330 :' draw fuel box 980 REM 990 X = X + 40 1000 WX = X + (W / 2) 1010 GRAPH L(I,(X / 4) + 2) 1020 PRINT "WATER"; 1030 GOSUB 1330 :' draw water temp box 1040 REM 1050 X = X + 40 1060 PX = X + (W / 2) 1070 GRAPH L(I,(X / 4) + 2) 1080 PRINT "PRES"; 1090 GOSUB 1330 :' draw oil pressure box 1100 REM 1110 X = X + 40 1120 GRAPH L(I,(X / 4) + 2) :' title 1130 PRINT "TEMP"; 1140 OX = X + (W / 2) 1150 GOSUB 1330 :' draw oil temp box 1160 REM 1170 X = X + 40 : Y = 5 * T 1180 H = YMAX - 10 * T 1190 QX = X + (W / 2) 1200 QF = 150000! : QM = YMAX - (10 * T) : QP = W - (2 * T) : QY = 5 * T 1210 GOSUB 1330 :' draw power box 1220 PRINT CHR$(27); "S1"; 1230 GOSUB 1450 :' update speedo 1240 GOSUB 1570 :' update tach 1250 GOSUB 1810 :' update oil temp 1260 GOSUB 1910 :' oil pressure 1270 GOSUB 2010 :' water temp 1280 GOSUB 2110 :' fuel 1290 GOSUB 1690 1300 GOSUB 2210 :' power 1310 GOTO 1230 1320 STOP 1330 REM 1340 REM draw a box from X,Y to X + W and Y + H, 1350 REM of thickness T 1360 REM 1370 FOR IT = 0 TO T - 1 1380 PLOT (X - IT,Y - IT) 1390 PLOT TO (X - IT,Y + H + IT) 1400 PLOT TO (X + W + IT,Y + H + IT) 1410 PLOT TO (X + W + IT,Y - IT) 1420 PLOT TO (X - IT,Y - IT) 1430 NEXT IT 1440 RETURN 1450 REM 1460 REM Plot the speedometer 1470 REM 1480 S = S + 5 : IF S >= SF THEN S = 0 :' TEST HACK 1490 SC = (S / SF) * SM :' calculate new 1500 GRAPH M(255,255) 1510 PLOT F(SX,SY + (SP / 2)) (SX + SC - 1,SY - (SP / 2)) 1520 GRAPH M(0,0) 1530 PLOT F(SX + SC,SY + (SP / 2)) (SX + SM,SY - (SP / 2)) 1540 GRAPH L((YMAX - SY) / 8,(SX + SM) / 4 + 5) 1550 PRINT S;" "; 1560 RETURN 1570 REM 1580 REM Plot the tachometer 1590 REM 1600 T = T + 100 : IF T >= TF THEN T = 0 :' TEST HACK 1610 TC = (T / TF) * TM :' calculate new 1620 GRAPH M(255,255) 1630 PLOT F(TX,TY + (TP / 2)) (TX + TC - 1,TY - (TP / 2)) 1640 GRAPH M(0,0) 1650 PLOT F(TX + TC,TY + (TP / 2)) (TX + TM,TY - (TP / 2)) 1660 GRAPH L((YMAX - TY) / 8 - 1,(TX + TM) / 4 + 5) 1670 PRINT T;" "; 1680 RETURN 1690 REM 1700 REM Plot vaccuum 1710 REM 1720 V = V - 1 : IF V < 0 THEN V = VF :' TEST HACK 1730 VC = (V / VF) * VM :' calculate new 1740 GRAPH M(255,255) 1750 PLOT F(VX,VY + (VP / 2)) (VX + VC - 1,VY - (VP / 2)) 1760 GRAPH M(0,0) 1770 PLOT F(VX + VC,VY + (VP / 2)) (VX + VM,VY - (VP / 2)) 1780 GRAPH L((YMAX - VY) / 8 - 1,(VX + VM) / 4 + 5) 1790 PRINT V;" "; 1800 RETURN 1810 REM 1820 REM Plot Oil temp 1830 REM 1840 O = O + 11 : IF O >= OF THEN O = 0 :' TEST HACK 1850 OC = (O / OF) * OM :' calculate new 1860 GRAPH M(255,255) 1870 PLOT F(OX - (OP / 2), OY) (OX + (OP / 2),OY + OC - 1) 1880 GRAPH M(0,0) 1890 PLOT F(OX - (OP / 2),OY + OC) (OX + (OP / 2),OY + OM) 1900 RETURN 1910 REM 1920 REM Plot Oil pressure 1930 REM 1940 P = P + 5 : IF P >= PF THEN P = 0 :' TEST HACK 1950 PC = (P / PF) * PM :' calculate new 1960 GRAPH M(255,255) 1970 PLOT F(PX - (PP / 2), PY) (PX + (PP / 2),PY + PC - 1) 1980 GRAPH M(0,0) 1990 PLOT F(PX - (PP / 2),PY + PC) (PX + (PP / 2),PY + PM) 2000 RETURN 2010 REM 2020 REM Plot Water temp 2030 REM 2040 W = W + 5 : IF W >= WF THEN W = 0 :' TEST HACK 2050 WC = (W / WF) * WM :' calculate new 2060 GRAPH M(255,255) 2070 PLOT F(WX - (WP / 2), WY) (WX + (WP / 2),WY + WC - 1) 2080 GRAPH M(0,0) 2090 PLOT F(WX - (WP / 2),WY + WC) (WX + (WP / 2),WY + WM) 2100 RETURN 2110 REM 2120 REM Plot fuel 2130 REM 2140 F = F + 1 : IF F >= FF THEN F = 0 :' TEST HACK 2150 FC = (F / FF) * FM :' calculate new 2160 GRAPH M(255,255) 2170 PLOT F(FX - (FP / 2), FY) (FX + (FP / 2),FY + FC) 2180 GRAPH M(0,0) 2190 PLOT F(FX - (FP / 2),FY + FC) (FX + (FP / 2),FY + FM) 2200 RETURN 2210 REM 2220 REM Plot power 2230 REM 2240 Q = (VF - V) * T : IF Q > QF THEN Q = QF 2250 QC = (Q / QF) * QM 2260 GRAPH M(255,255) 2270 PLOT F(QX - (QP / 2), QY) (QX + (QP / 2),QY + QC) 2280 GRAPH M(0,0) 2290 PLOT F(QX - (QP / 2),QY + QC) (QX + (QP / 2),QY + QM) 2300 RETURN / 2), QY) (QX + (QP / 2),QY + QC