- GOTO SCREEN begin *>SCREEN begin - PUT REVERSE HUGE TEXT AT (2,1): "WELCOME!" - PUT LARGE TEXT AT (10,3): "TO" - PUT LARGE TEXT AT (3,4): "EASON TECHNOLOGY" - CURSOR 0 power resume on - GET BACKGROUND STYLE SETUP: 1 disp$ = "N00#" config #2,24,7,1,2,0,1,500 dim eti%(500), pbox%(250) - DELAY 1500 - CLEAR GRAPHICS SCREEN - PUT TEXT AT (19,1): "AND" - PUT LARGE TEXT AT (2,2): "THE LATEST IN MAN-" - PUT LARGE TEXT AT (2,3): "MACHINE INTERFACE" - PUT LARGE TEXT AT (6,4): "& CONTROL" - CURSOR 0 - DELAY 1500 - CLEAR GRAPHICS SCREEN - CLEAR SCREEN - PUT TEXT AT (1,1): "You are about to see a demonstration of" - PUT TEXT AT (1,2): "Eason Technology's Model 1100 Industrial" - PUT TEXT AT (1,3): "Controller/Operator Interface. You will" - PUT TEXT AT (1,4): "see demonstrations of the 1100 using a" - PUT TEXT AT (1,5): "number of types of I/O to communicate to" - PUT TEXT AT (1,6): "other devices and with you. To begin the" - PUT TEXT AT (1,7): "demonstration, press 'DEMO' (F1)." - CURSOR 0 - SOFTKEY (1) "DEMO" GOTO SCREEN main - SOFTKEY WAIT *>SCREEN main - PUT REVERSE LARGE TEXT AT (3,1): "IT'S FUN TIME!!!" - PUT TEXT AT (2,3): "PRESS 'MOTOR' FOR MOTION CONTROL DEMO" - PUT TEXT AT (2,4): "PRESS 'REACT' TO TEST REACTION TIME" - PUT TEXT AT (2,5): "PRESS 'QUICK' TO TEST YOUR HAND SPEED" - PUT TEXT AT (2,6): "PRESS 'ANLOG' FOR AN ANALOG I/O DEMO" - PUT TEXT AT (2,7): "PRESS 'SHOW' FOR A SELF RUNNING DEMO" - OPTION: SET D/A 1 TO 0 - COM: PUT COM 2 TEXT "N00# " - SOFTKEY (1) "MOTOR" GOTO SCREEN mtrbegin - SOFTKEY (2) "REACT" GOTO SCREEN reaction - SOFTKEY (3) "QUICK" GOTO SCREEN quicknes - SOFTKEY (4) "ANLOG" GOTO SCREEN analog - SOFTKEY (5) "SHOW" GOTO SCREEN showscrn - HOT KEY (9) "BYE" INTERRUPT: GOSUB LABEL byebye - CURSOR 0 - COM: PUT COM 2 TEXT "N00# " help = 0 - SOFTKEY WAIT *>SCREEN mtrbegin - PUT HUGE TEXT AT (4,1): "MAKE" - PUT HUGE TEXT AT (2,2): "MOTION!!" - CURSOR 0 help = 1 - DELAY 2000 - CLEAR GRAPHICS SCREEN - GOTO SCREEN testax *>SCREEN testax - PUT TEXT AT (1,1): "ATTEMPTING TO ESTABLISH COMMUNICATION" - PUT TEXT AT (1,2): "WITH THE MOTOR/DRIVE." - PUT LARGE TEXT AT (1,3): "PLEASE STAND BY..." - CURSOR 0 - COMMENT "Initialize units for AX" dd&=12800 dscale=1 d$="STEPS" vd=10 vscale=1 v$="REVS/SECOND" ascale=1 ad%=100 a$="REVS/SEC^2" - COM: INIT COM 1 ECHO 1 BAUD 96 HANDSHAKE 0 TIMEOUT 250 STRIP 1 n = 1 - DELAY 750 - LABEL comtest - COM: PUT COM 1 TEXT "1E 1K 1R" - COM: GET COM 1 TEXT stat$ if stat$ = "*R" or stat$ = "*S" then goto initax if n = 11 then goto canttalk - CLEAR GRAPHICS SCREEN - CLEAR SCREEN - PUT LARGE TEXT AT (1,1): "DRIVE NOT RESPONDING" - PUT TEXT AT (4,4): "RETRYING CHECK-OUT TEN MORE TIMES" - PUT TEXT AT (14,6): "ATTEMPT #" - PUT NUMBER n AT (24,6) USING "##" - CURSOR 0 n = n+1 - GOTO LABEL comtest - LABEL canttalk - CLEAR GRAPHICS SCREEN - CLEAR SCREEN - PUT TEXT AT (3,1): "CANNOT ESTABLISH COMMUNICATIONS WITH" - PUT TEXT AT (15,2): "MOTOR/DRIVE" - PUT TEXT AT (8,5): "RETURNING TO MAIN MENU..." - CURSOR 0 - DELAY 1000 - GOTO SCREEN main - LABEL initax - COM: INIT COM 1 ECHO 1 BAUD 96 HANDSHAKE 0 TIMEOUT 1000 STRIP 1 - COM: PUT COM 1 TEXT "1MN 1LD3 1A100 1V10 1D12800" - CLEAR GRAPHICS SCREEN - GOTO SCREEN mtr1 *>SCREEN mtr1 - PUT TEXT AT (3,7): "Press F9 to return to the Main Menu." - PUT LARGE TEXT AT (1,1): " SELECT A FUNCTION: " - SOFTKEY (1) "A-V-D" GOTO SCREEN avdset - SOFTKEY (2) "UNITS" GOTO SCREEN units - SOFTKEY (3) "STAT" GOTO SCREEN status - SOFTKEY (4) "SEQ 1" GOTO SCREEN sequence - SOFTKEY (5) "START" GOTO SCREEN start - SOFTKEY (6) "STOP" GOTO SCREEN kill - HOT KEY (9) "MAIN" INTERRUPT: GOSUB LABEL main - PUT TEXT AT (1,3): "'A-V-D' CHANGES MOVE PARAMETERS USED BY " - PUT TEXT AT (1,4): "'START'/'STOP'. 'UNITS' CHANGES MOTION" - PUT TEXT AT (1,5): "UNITS, 'STAT' CHECKS STATUS, AND 'SEQ 1'" - PUT TEXT AT (1,6): "EXECUTES A SIMPLE PREDEFINED SEQUENCE." - CURSOR 0 - SOFTKEY WAIT *>SCREEN QUICK avdset - CLEAR SCREEN - PUT TEXT AT (5,5): "Select a Function:" - PUT LARGE TEXT AT (1,1): "MOTION PARAMETERS: " - SOFTKEY (1) "ACCEL" GOTO SCREEN accelset - SOFTKEY (2) " VEL" GOTO SCREEN velset - SOFTKEY (3) "DIST" GOTO SCREEN distset - SOFTKEY (6) "EXIT" GOTO SCREEN mtr1 - CURSOR 0 - SOFTKEY WAIT *>SCREEN units - PUT TEXT AT (2,4): "LINEAR MEASURE ASSUMES A 5 PITCH LEAD" - PUT TEXT AT (2,5): "SCREW ON THE LINEAR TRANSLATION DEVICE" - PUT LARGE TEXT AT (1,1): "SELECT MOTION UNITS-" - SOFTKEY (1) "STEPS" GOTO SCREEN steps - SOFTKEY (2) "MILS" GOTO SCREEN mils - SOFTKEY (3) "INCH" GOTO SCREEN inch - SOFTKEY (4) " MM" GOTO SCREEN mms - SOFTKEY (5) " UM" GOTO SCREEN ums - SOFTKEY (6) "EXIT" GOTO SCREEN mtr1 - CURSOR 0 - SOFTKEY WAIT *>SCREEN status - PUT LARGE TEXT AT (1,1): "POSITION IN :" - PUT LARGE TEXT AT (1,3): "STATUS:" - PUT LARGE TEXT AT (13,1): d$ - SOFTKEY (6) "EXIT" GOTO SCREEN zapscrn - CURSOR 0 - LABEL statloop - GOSUB LABEL getstat if flag = 0 then goto posdisp - PUT LARGE TEXT AT (5,2): " " - CURSOR 0 - GOTO LABEL statdisp - LABEL posdisp if dscale <> 1 then goto pscale - PUT LARGE NUMBER px& AT (5,2) USING "-###########" - CURSOR 0 - GOTO LABEL statdisp - LABEL pscale - PUT LARGE NUMBER p AT (5,2) USING "-#######.###" - CURSOR 0 - LABEL statdisp if stat$ <> "*R" or stat$ <> "*S" then curstat$ = "TROUBLE! " if stat$ = "*R" then curstat$ = "LOOKS GOOD! " if stat$ = "*S" then curstat$ = "LOOKS FLAKY!" - PUT LARGE TEXT AT (9,3): curstat$ - CURSOR 0 - SOFTKEY CHECK - GOTO LABEL statloop - LABEL getstat flag = 0 for i = 1 to 2 - COM: PUT COM 1 TEXT "1R" - COM: GET COM 1 TEXT stat$ if stat$ = "*R" or stat$ = "*S" then goto getpos next flag = 1 - RETURN - LABEL getpos - COM: PUT COM 1 TEXT "1PR" - COM: GET COM 1 TEXT ps$ px& = val(ps$) px& = px&/dscale p = val(ps$) p = p/dscale - RETURN *>SCREEN QUICK sequence - CLEAR SCREEN - PUT TEXT AT (3,3): "A SEQUENCE TO THE MOTION CONTROLLER" - PUT LARGE TEXT AT (1,1): " TRANSMITTING... " seq$="1A100 1V20 1D25000 1G 1H+ 1G 1V5 1H- 1G 1V10 1H+ 1G" - GOSUB LABEL sendseq if i = 3 then goto mtr1 - PUT TEXT AT (2,4): "SYNTAX IS:" - PUT TEXT AT (13,4): seq$ - SOFTKEY (6) "EXIT" GOTO SCREEN mtr1 - PUT TEXT AT (3,6): "RUNNING SEQUENCE TEN TIMES:" pos 1,7 for n = 1 to 10 ?n; - GOSUB LABEL execseq - GOSUB LABEL doneseq next - CURSOR 0 - SOFTKEY WAIT - LABEL sendseq for i = 1 to 2 - COM: PUT COM 1 TEXT "1R" - COM: GET COM 1 TEXT stat$ if stat$ = "*R" or stat$ = "*S" then goto send next - CLEAR GRAPHICS SCREEN - CLEAR SCREEN - KEY OFF - PUT HUGE TEXT AT (2,1): "OOPS!..." - PUT LARGE TEXT AT (2,3): "CAN'T COMMUNICATE!" - PUT TEXT AT (2,7): "RETURNING TO MOTION SELECTION MENU...." - CURSOR 0 - DELAY 1500 - CLEAR GRAPHICS SCREEN - CLEAR SCREEN - RETURN - LABEL send - COM: PUT COM 1 TEXT "1XE1" - COM: PUT COM 1 TEXT "1XD1" - COM: PUT COM 1 TEXT seq$ - COM: PUT COM 1 TEXT "XT" - DELAY 250 - COM: PUT COM 1 TEXT "1XSD" - COM: GET COM 1 TEXT stat$ if stat$ = "0" then return - CLEAR SCREEN - CLEAR GRAPHICS SCREEN - PUT TEXT AT (4,4): "ERROR IN SEQUENCE TRANSMISSION!!!" - CURSOR 0 - DELAY 1000 - RETURN - LABEL execseq - COM: PUT COM 1 TEXT "1XR1" - DELAY 100 - RETURN - LABEL doneseq - COM: PUT COM 1 TEXT "1XSR1" - COM: GET COM 1 TEXT stat$ if stat$ = "0" then return - DELAY 50 - COM: INIT COM 1 ECHO 1 BAUD 96 HANDSHAKE 0 TIMEOUT 250 STRIP 1 - GOTO LABEL doneseq *>SCREEN accelset - PUT TEXT AT (1,2): "ACCELERATION IN" - PUT TEXT AT (1,4): "ENTER ACCELERATION:" - PUT TEXT AT (1,7): "ENTER TO ACCEPT OR ENTER A NEW VALUE" pos 17,2 : print a$;":" ad% = ad% / ascale - GET NUMBER ad% AT (21,4) USING "###.##" DEFAULT ad% ad% = ad% * ascale a$="1A"+str$(ad%) - COM: PUT COM 1 TEXT a$ - GOTO SCREEN avdset *>SCREEN velset - PUT TEXT AT (1,2): "VELOCITY IN" - PUT TEXT AT (1,4): "ENTER VELOCITY:" - PUT TEXT AT (1,7): "ENTER TO ACCEPT OR ENTER A NEW VALUE" pos 17,2 : print v$;":" vd = vd / vscale - GET NUMBER vd AT (21,4) USING "###.##" DEFAULT vd vd = vd * vscale a$="1V"+str$(vd) - COM: PUT COM 1 TEXT a$ - GOTO SCREEN avdset *>SCREEN distset - PUT TEXT AT (1,2): "DISTANCE IN" - PUT TEXT AT (1,4): "ENTER DISTANCE:" - PUT TEXT AT (1,7): "ENTER TO ACCEPT OR ENTER A NEW VALUE" pos 17,2 : print d$;":" td = dd& / dscale - GET NUMBER td AT (18,4) USING "-#########.##" DEFAULT td dd& = td * dscale a$="1D"+str$(dd&) - COM: PUT COM 1 TEXT a$ - GOTO SCREEN avdset *>SCREEN QUICK start - CLEAR SCREEN - PUT LARGE TEXT AT (1,1): " MOTION HAS BEGUN!! " - CURSOR 0 - COM: PUT COM 1 TEXT "1G" - DELAY 250 - GOTO SCREEN mtr1 *>SCREEN QUICK kill - CLEAR SCREEN - PUT LARGE TEXT AT (1,1): " STOPPING MOTION! " - CURSOR 0 - COM: PUT COM 1 TEXT "1S" - DELAY 500 - GOTO SCREEN mtr1 *>SCREEN steps - PUT LARGE TEXT AT (1,1): "UNITS ARE NOW SCALED" - PUT LARGE TEXT AT (10,2): "IN" - PUT HUGE TEXT AT (3,2): "STEPS!" - CURSOR 0 dscale = 1 d$ = "STEPS" vscale = 1 v$ = "REVS/SECOND" ascale = 1 a$ = "REVS/SEC^2" - DELAY 1000 - GOTO SCREEN mtr1 *>SCREEN mils - PUT LARGE TEXT AT (1,1): "UNITS ARE NOW SCALED" - PUT LARGE TEXT AT (10,2): "IN" - PUT HUGE TEXT AT (4,2): "MILS" - CURSOR 0 dscale = 12.8*5 d$ = "MILS" vscale = 5 v$ = "INCHES/SECOND" ascale = 5 a$ = "INCHES/SEC^2" - DELAY 1000 - GOTO SCREEN mtr1 *>SCREEN inch - PUT LARGE TEXT AT (1,1): "UNITS ARE NOW SCALED" - PUT LARGE TEXT AT (10,2): "IN" - PUT HUGE TEXT AT (3,2): "INCHES" - CURSOR 0 dscale = 12800*5 d$ = "INCHES" vscale = 5 v$ = "INCHES/SECOND" ascale = 5 a$ = "INCHES/SEC^2" - DELAY 1000 - GOTO SCREEN mtr1 *>SCREEN mms - PUT LARGE TEXT AT (1,1): "UNITS ARE NOW SCALED" - PUT LARGE TEXT AT (10,2): "IN" - PUT TEXT AT (40,4): "," - PUT HUGE TEXT AT (1,2): "MILLIMETER" - CURSOR 0 dscale = 64000/25.4 d$ = "MM" vscale = 25.4*5 v$ = "MM/SECOND" ascale = 25.4*5 a$ = "MM/SEC^2" - DELAY 1000 - GOTO SCREEN mtr1 *>SCREEN ums - PUT LARGE TEXT AT (1,1): "UNITS ARE NOW SCALED" - PUT LARGE TEXT AT (10,2): "IN" - PUT HUGE TEXT AT (2,2): "MICRONS!" - CURSOR 0 dscale = 64000/25400 d$ = "MICRONS" vscale = 25400*5 v$ = "MICRONS/SECOND" ascale = 25400*5 a$ = "MICRONS/SEC^2" - DELAY 1000 - GOTO SCREEN mtr1 *>SCREEN zapscrn - GOTO SCREEN mtr1 *>SCREEN reaction - PUT REVERSE HUGE TEXT AT (3,1): "REACT!" - PUT TEXT AT (1,5): "This demo tests your reaction time. You" - PUT TEXT AT (1,6): "will be prompted to hit two buttons." - PUT TEXT AT (1,7): "Your reaction time will be calculated." - SOFTKEY (1) "REACT" GOTO SCREEN react - SOFTKEY (6) "BACK" GOTO SCREEN main - CURSOR 0 help = 2 - SOFTKEY WAIT *>SCREEN react - PUT TEXT AT (1,1): "You will see the words - READY, SET, GO!" - PUT TEXT AT (1,2): "When you see GO! and the green light," - PUT TEXT AT (1,3): "hit the start button. When you see Stop!" - PUT TEXT AT (1,4): "and the red light, hit the stop button." - PUT TEXT AT (1,6): "Press READY once you are psyched up." - PUT TEXT AT (1,7): "Press WIMP if you chicken out." - SOFTKEY (1) "READY" GOTO SCREEN ready - SOFTKEY (6) "WIMP" GOTO SCREEN wimp - CURSOR 0 - SOFTKEY WAIT *>SCREEN ready - I/O: PUT I/O BIT PATTERN "11" reactfl3=0 - PUT TEXT AT (17,4): "READY..." - CURSOR 0 - DELAY 500 - CLEAR SCREEN - PUT LARGE TEXT AT (7,2): "GET SET!" - CURSOR 0 dtime=rnd(3000)+1000 - DELAY 500 - TIMER: WHEN TIMER 5 COUNTS TO 10 SEC GOSUB reactdie inp reactio& if (reactio& and 1)=0 then goto cheatscr - I/O: PUT I/O BIT PATTERN "XXXX0XX11" - PUT REVERSE HUGE TEXT AT (4,1): " GO!" - CURSOR 0 call readms(start1&) - LABEL reactwt1 inp reactio&:if(reactio& and 1)=1 then goto reactwt1 call readms(start2&) - DELAY dtime inp reactio& if (reactio& and 2)=0 then goto cheatscr - I/O: PUT I/O BIT PATTERN "XXX01XX11" - PUT HUGE TEXT AT (4,1): "STOP!" - CURSOR 0 call readms(stp1&) - LABEL reactwt2 inp reactio&:if(reactio& and 2)=1 then goto reactwt2 call readms(stp2&) - DELAY 1500 - I/O: PUT I/O BIT PATTERN "XXX1XXX11" - TIMER: DISABLE TIMER 5 INTERRUPTS - GOTO SCREEN dspreact - LABEL reactdie - CLEAR GRAPHICS SCREEN - CLEAR SCREEN - PUT LARGE TEXT AT (5,1): "WAKE UP!!!!" - PUT LARGE TEXT AT (2,2): "PUSH THE BUTTONS!!" - PUT LARGE TEXT AT (5,3): "TRY AGAIN!!" - CURSOR 0 - DELAY 1500 - I/O: PUT I/O BIT PATTERN "X1111XXXX" return react *>SCREEN cheatscr - PUT LARGE TEXT AT (5,1): "HEY BUDDY!!!" - PUT LARGE TEXT AT (3,2): "QUIT CHEATING!!!" - PUT LARGE TEXT AT (2,3): "GET YOUR HANDS OFF" - PUT LARGE TEXT AT (4,4): "THE BUTTONS!!!" - CURSOR 0 - COM: PUT COM 2 TEXT "N00# F00L " for i = 1 to 14 - I/O: PUT I/O BIT PATTERN "X0000XXXX" - DELAY 100 - I/O: PUT I/O BIT PATTERN "X1111XXXX" - DELAY 75 next i - COM: PUT COM 2 TEXT "N00# " - GOTO SCREEN react *>SCREEN dspreact - PUT TEXT AT (1,6): "If you would like to try again, press" - PUT TEXT AT (1,7): "AGAIN. Otherwise press CONT (Continue)" - PUT LARGE TEXT AT (1,1): "YOUR REACTION TIME:" rtime1 = start2&-start1& if rtime1 < 0 then rtime1=rtime1+65536 rtime2 = stp2&-stp1& if rtime2 < 0 then rtime2=rtime2+65536 rtime = (rtime2+rtime1)/2000 if rtime>=.300 then react$="EMERGENCY!!! EMERGENCY!!! CALL 911 NOW!" if rtime<.300 then react$="YOU'D BETTER GET ONE MORE CUP OF COFFEE!" if rtime<.200 then react$=" NOT BAD, BUT I'D TRY ONE MORE TIME! " if rtime<.100 then react$=" YOU MUST HAVE EATEN YOUR WHEATIES! " if rtime>=nvol(1) then goto reactnbs react$="CONGRATULATIONS, YOU'RE THE BEST EVER!" nvol(1)=rtime - LABEL reactnbs - PUT REVERSE TEXT AT (1,5): react$ if reactfl3=1 then goto reactskp - PUT LARGE NUMBER rtime AT (8,2) USING "#.###" call nformat(rtime,"#.###",rtime$) reacdisp$ = disp$ + rtime$ - COM: PUT COM 2 TEXT reacdisp$ reacvolt = (.05/rtime)*2048 - OPTION: SET D/A 1 TO reacvolt - LABEL reactskp - SOFTKEY (6) "AGAIN" GOTO SCREEN react - SOFTKEY (1) "CONT" GOTO SCREEN main - CURSOR 0 - SOFTKEY WAIT *>SCREEN wimp - PUT LARGE TEXT AT (2,3): "YOU SHOULD GO AWAY" - PUT LARGE TEXT AT (2,4): "AND HIDE IN SHAME!" - PUT REVERSE HUGE TEXT AT (3,1): "LOSER!" - CURSOR 0 - DELAY 1500 - GOTO SCREEN main *>SCREEN quicknes - PUT TEXT AT (1,5): "This is a test to see how quick you can" - PUT TEXT AT (1,6): "move your hands. You will be prompted to" - PUT TEXT AT (1,7): "spin a wheel as fast as you can." - PUT HUGE TEXT AT (1,1): "BE QUICK!!" - SOFTKEY (1) "QUICK" GOTO SCREEN spintest - SOFTKEY (6) "LOSER" GOTO SCREEN loser - CURSOR 0 help = 3 - SOFTKEY WAIT *>SCREEN loser - PUT TEXT AT (21,6): "GO HOME AND THINK" - PUT TEXT AT (20,7): "ABOUT STAYING THERE." - PUT HUGE TEXT AT (2,1): "YOU'RE A" - PUT HUGE TEXT AT (1,2): "BUM!" - CURSOR 0 - DELAY 2000 - GOTO SCREEN main *>SCREEN spintest - PUT TEXT AT (1,3): "You will be prompted with a READY, SET," - PUT TEXT AT (1,4): "GO! As soon as you see the GO!, spin the" - PUT TEXT AT (1,5): "wheel as fast as you can for 3 seconds." - PUT TEXT AT (1,6): "When you see STOP!, do the wise thing" - PUT TEXT AT (1,7): "and stop. Press READY when you are." - PUT REVERSE LARGE TEXT AT (8,1): "SPIN!!" - SOFTKEY (1) "READY" GOTO SCREEN spinit - SOFTKEY (6) "LOSER" GOTO SCREEN loser - CURSOR 0 - SOFTKEY WAIT *>SCREEN spinit - PUT TEXT AT (17,4): "READY..." - CURSOR 0 - DELAY 500 - CLEAR SCREEN - PUT LARGE TEXT AT (7,2): "GET SET!" - CURSOR 0 - DELAY 500 - OPTION: PRESET COUNTER 1 TO 0 - PUT HUGE TEXT AT (3,1): " " - PUT REVERSE HUGE TEXT AT (5,1): "GO!" - I/O: PUT I/O BIT PATTERN "XXXX0XXXX" - CURSOR 0 - DELAY 3000 - PUT HUGE TEXT AT (4,1): "STOP!" - I/O: PUT I/O BIT PATTERN "XXX01XXXX" - OPTION: READ COUNTER 1 INTO spincnt& - CURSOR 0 - DELAY 1500 - I/O: PUT I/O BIT PATTERN "XXX1XXXXX" - GOTO SCREEN spindisp *>SCREEN spindisp - PUT TEXT AT (13,1): "CONGRATULATIONS!" - PUT TEXT AT (7,2): "YOU MANAGED TO SPIN THE DISK" - PUT LARGE TEXT AT (13,2): "REVS" spinrev = abs(spincnt&/800) - PUT LARGE NUMBER spinrev AT (6,2) USING "##.###" if spinrev> 15 then spin$="WOW! YOU HAVE AMAZING MANUAL DEXTERITY!!" if spinrev< 15 then spin$="NOT BAD, BUT I'D GIVE IT ONE MORE SHOT! " if spinrev< 10 then spin$="ARE YOU OK? MAYBE YOU SHOULD GO LIE DOWN" if spinrev< 5 then spin$="EMERGENCY!!! EMERGENCY!!! CALL 911 NOW!" - PUT REVERSE TEXT AT (1,6): spin$ call nformat(spinrev,"##.###",spinrev$) spindisp$ = disp$ + spinrev$ - COM: PUT COM 2 TEXT spindisp$ spinvolt = (spinrev/25)*2048 - OPTION: SET D/A 1 TO spinvolt if spinrev> 15 then gosub topspin - SOFTKEY (6) "AGAIN" GOTO SCREEN spintest - SOFTKEY (1) "CONT" GOTO SCREEN main - CURSOR 0 - SOFTKEY WAIT - LABEL topspin for i = 1 to 7 - I/O: PUT I/O BIT PATTERN "X00XXXXXX" - DELAY 250 - I/O: PUT I/O BIT PATTERN "X11XXXXXX" - DELAY 100 next i - RETURN *>SCREEN analog - PUT TEXT AT (1,3): "This Model 1100 has an A03 analog option" - PUT TEXT AT (1,4): "installed. It has 8, 12-bit analog in-" - PUT TEXT AT (1,5): "puts and 2, 12-bit analog outputs. All" - PUT TEXT AT (1,6): "analog I/O is optically isolated." - PUT TEXT AT (1,7): "Press to continue." - PUT LARGE TEXT AT (1,1): "ANALOG DEMONSTRATION" - SOFTKEY (1) "MORE" GOTO SCREEN anascr1 - CURSOR 0 help = 5 - SOFTKEY WAIT *>SCREEN anascr1 - PUT TEXT AT (9,3): "Turn the POTENTIOMETER:" - PUT TEXT AT (1,6): "| | | | |" - PUT TEXT AT (1,7): "0V 2.5V 5.0V 7.5V 10V" - PUT LARGE TEXT AT (4,1): "ANALOG INPUTS:" - SOFTKEY (1) "CONT" GOTO SCREEN anascr2 - CURSOR 0 - BAR GRAPH UPPER LEFT (0,30) LOWER RIGHT (239,37) ORIENT: 0 - BAR GRAPH SCALE LOWER LIMIT 0 UPPER LIMIT 239 - LABEL anasc1a - OPTION: READ A/D 1 INTO potval xval=potval*.1168 - BAR GRAPH DISPLAY: xval - SOFTKEY CHECK - GOTO LABEL anasc1a *>SCREEN anascr2 - PUT TEXT AT (14,3): "Watch the METER" - PUT TEXT AT (14,5): "Voltage:" - PUT TEXT AT (1,7): "Press to return to the main menu" - PUT LARGE TEXT AT (5,1): "ANALOG OUTPUT:" - PUT TEXT AT (1,6): "0V" - PUT TEXT AT (1,1): "10V" - SOFTKEY (1) "CONT" GOTO SCREEN main - BAR GRAPH UPPER LEFT (20,2) LOWER RIGHT (40,45) ORIENT: 1 - BAR GRAPH SCALE LOWER LIMIT 0 UPPER LIMIT 10 - LABEL anasc2a - SOFTKEY CHECK aval=rnd(2047) aval%=aval - OPTION: SET D/A 1 TO aval% aval=aval/204.7 - PUT NUMBER aval AT (23,5) USING "##.###" - CURSOR 0 - BAR GRAPH DISPLAY: aval call nformat(aval,"##.###",aval$) adisp$ = disp$ + aval$ - COM: PUT COM 2 TEXT adisp$ - DELAY 1000 - GOTO LABEL anasc2a *>SCREEN showscrn - HOT KEY (9) "a" INTERRUPT: GOSUB LABEL showexit help=4 - LABEL showstar ' - CURSOR 0 - CLEAR GRAPHICS SCREEN - CLEAR SCREEN call box(1,1,20,20,1) call getimage(0,0,21,21,pbox%(1)) for n=1 to 150 x=rnd(219):y=rnd(43) call putimage(x,y,pbox%(1)) next - PUT REVERSE LARGE TEXT AT (8,1): "EASON" - PUT REVERSE TEXT AT (15,3): "TECHNOLOGY" CALL BANNER(5,3,"MODEL 1100",2,,1) - DELAY 2500 - CLEAR GRAPHICS SCREEN - CLEAR SCREEN ' ' plot some random lines ( looks good! ) ' pos 3,8 print "The 1100 comes ready to do graphics"; pos 40,8 call line( 239,25,0,25,1 ) x% = 0 : y% = 1 label show3 y% = rnd(25) * sgn(y%) * (-1) call line( ,,x%,y%+25,1 ) x% = x% + 1 + rnd(4) if x%<240 then goto show3 delay 500 : cls : call gcls() ' ' ' show off the i/o possibilities by drawing the back side of the ' MODEL 1100 and pointing to the different connectors ' gosub soiback pos 1,1 print "The MODEL 1100 has a" print "large variety of I/O" print " possibilities" print print " Standard" print " features" print " include..." pos 40,8 : delay 2000 ' ' tell viewer about the two rs-232 ports ' cls print print "Two RS-232/422 or 485" print " ports that can be" print " independently" print " configured!" ' call banner( 4,4,"COM1",0 ): ' point to the COM1 connector call line( 83, 55, 106, 55, 1 ) call line( 106, 55, 177, 27, 1 ) pos 40,8 : delay 3000 call line( 83, 55, 106, 55, 0 ) call line( 106, 55, 177, 27, 0 ) call banner( 4,4," ",0 ) gosub drawopt ' call banner( 4,4,"COM2",0 ): ' point to the COM2 connector call line( 87, 55, 106, 55, 1 ) call line( 106, 55, 193, 27, 1 ) pos 40,8 : delay 2000 call line( 87, 55, 106, 55, 0 ) call line( 106, 55, 193, 27, 0 ) call banner( 4,4," ",0 ) - DELAY 1000 - GOSUB LABEL showserl ' ' tell viewer about the keyboard and printer interface ' cls print print "One IBM keyboard and" print " printer interface!" ' call banner( 4,3," KB",0 ): ' point to the KB and PRT connectors call banner( 4,4,"PRT",0 ) call line( 79, 39, 106, 39, 1 ) call line( 106, 39, 189, 11, 1 ) call line( 79, 55, 168, 47, 1 ) pos 40,8 : delay 3000 call banner( 4,3," ",0 ) call banner( 4,4," ",0 ) call line( 79, 39, 106, 39, 0 ) call line( 106, 39, 189, 11, 0 ) call line( 79, 55, 168, 47, 0 ) gosub drawopt ' ' tell viewer about the option boards ' cls print " Two internal slots" print " for option boards," print " for example:" print print " quadrature counter" print " or" print " 12 bit D/A and A/D" for x = 1 to 4 pos 23,3 : print"OPT 1"; : pos 40,8 delay 1000 pos 23,3 : print" "; pos 23,6 : print"OPT 2"; : pos 40,8 delay 1000 pos 23,6 : print" "; next - GOSUB LABEL showopt ' ' tell about the 24 bit i/o bus and point to the connector ' print print "24 bit parallel I/O" print "that is internally" print "optically isolated" call banner( 4,4,"IO24",0 ) call line( 85,55, 191,55, 1) delay 3000 - GOSUB LABEL showio ' ' ' scroll ending message from left to right and ' cls : call gcls() a$ = "you have just seen a brief demonstration of the MODEL 1100" a$ = " " + a$ + " " for n=1 to 59 delay 100 call banner( 1,2,left$(a$,20),0 ) a$ = right$( a$, len(a$)-1 ) next call gcls():cls - SOFTKEY CHECK goto showstar ' draw the back side of the MODEL 1100 ' label soiback call gcls() label drawopt col% = 126 ox% = col%+53:oy% = 3: gosub drawpin ox% = col%+69:oy% = 3: gosub drawpin ox% = col%+45:oy% = 36:gosub drawpin call box( col%+69, 31, col%+75, 60, 1 ) call box( col%, 0, col%+84, 63, 1 ) call box( col%+4, 4, col%+38, 29, 1 ) call box( col%+4, 34, col%+38, 59, 1 ) call line( 190, 5, 191, 5, 1 ) call line( 189, 6, 192, 6, 1 ) call line( 189, 7, 192, 7, 1 ) call line( 190, 8, 191, 8, 1 ) return ' ' draw a 25 pin RS-232 connector ' label drawpin for y% = oy%+3 to oy%+17 step 2 : ' draw the pins of the connector call set( ox%+2, y%, 1 ) call set( ox%+4, y%+1, 1 ) next call set( ox%+2, y%, 1): ' draw the very last pin call line( ox%, oy%, ox%, oy%+22, 1 ): 'draw the frame call line( ox%+6, oy%+2, ox%+6, oy%+20, 1 ): ' of the connector call line( ox%, oy%, ox%+6, oy%+2, 1 ) call line( ox%, oy%+22, ox%+6, oy%+20, 1) return - LABEL showserl - CLEAR GRAPHICS SCREEN - CLEAR SCREEN - PUT TEXT AT (1,3): "CAN BE USED TO SEND DATA TO DEVICES THAT" - PUT TEXT AT (1,4): "USE RS232, RS422, OR RS485, SUCH AS:" - PUT LARGE TEXT AT (1,1): "SERIAL COMMUNICATION" - PUT LARGE TEXT AT (1,3): "SERIAL DISPLAYS..." showserl$ = disp$ + "HELLO " - COM: PUT COM 2 TEXT showserl$ - DELAY 1000 - PUT LARGE TEXT AT (16,3): " AND" - PUT LARGE TEXT AT (1,4): "MOTION CONTROLLERS." - COM: PUT COM 1 TEXT "1E 1K MN 1LD3 A100 V10 D25600" - COM: PUT COM 1 TEXT "L5 G H T.2 N D1280 L10 G T.1 N" - DELAY 1500 - COM: PUT COM 2 TEXT "N00# " - CLEAR GRAPHICS SCREEN - CLEAR SCREEN gosub drawopt - RETURN - LABEL showopt - CLEAR GRAPHICS SCREEN - CLEAR SCREEN - PUT TEXT AT (1,5): "CURRENT" - PUT TEXT AT (1,6): "POSITION" - PUT TEXT AT (35,6): "COUNTS" - PUT TEXT AT (11,7): "(TURN THE ENCODER KNOB)" - PUT LARGE TEXT AT (1,1): "ENCODERS CAN BE USED" - PUT LARGE TEXT AT (1,2): "FOR CONTROL/DISPLAY:" - PUT LARGE TEXT AT (5,3): ":" - OPTION: PRESET COUNTER 1 TO 0 for i = 1 to 20 - OPTION: READ COUNTER 1 INTO count& - PUT LARGE NUMBER count& AT (7,3) USING "-#########" - DELAY 150 next i - PUT LARGE TEXT AT (6,3): " " - PUT TEXT AT (1,6): "VOLTAGE " - PUT TEXT AT (35,6): "VOLTS " - PUT TEXT AT (1,7): "(TURN THE POT. & WATCH THE ANALOG METER)" - PUT LARGE TEXT AT (1,1): " ANALOG DATA CAN BE " - PUT LARGE TEXT AT (1,2): "BROUGHT IN & PUT OUT" - PUT LARGE TEXT AT (5,3): ":" for i = 1 to 20 - OPTION: READ A/D 1 INTO anashow - OPTION: SET D/A 1 TO anashow anashow = anashow/204.8 - PUT LARGE NUMBER anashow AT (9,3) USING "##.###" - DELAY 150 next i - OPTION: SET D/A 1 TO 0 - CLEAR GRAPHICS SCREEN - CLEAR SCREEN gosub drawopt - RETURN - LABEL showio - CLEAR GRAPHICS SCREEN - CLEAR SCREEN - PUT TEXT AT (2,3): "CAN BE USED TO LOOK AT PUSHBUTTONS AND" - PUT TEXT AT (2,4): "SENSORS OF MANY TYPES AND TO ACTIVATE" - PUT LARGE TEXT AT (2,1): "INPUTS AND OUTPUTS" - PUT LARGE TEXT AT (6,3): "LIGHTS..." for i = 1 to 4 - I/O: PUT I/O BIT PATTERN "XX000XXXX" - DELAY 300 - I/O: PUT I/O BIT PATTERN "XX111XXXX" - DELAY 150 next i - PUT LARGE TEXT AT (5,3): "SONALERTS..." for i = 1 to 4 - I/O: PUT I/O BIT PATTERN "X0XXXXXXX" - DELAY 300 - I/O: PUT I/O BIT PATTERN "X1XXXXXXX" - DELAY 150 next i - PUT LARGE TEXT AT (4,3): "AND MUCH MORE!" for i = 1 to 8 - I/O: PUT I/O BIT PATTERN "XXX0XXXXX" - DELAY 200 - I/O: PUT I/O BIT PATTERN "XXX10XXXX" - DELAY 200 - I/O: PUT I/O BIT PATTERN "XX0X1XXXX" - DELAY 200 if i/2 = fix(i/2) then flg=1 else flg=0 if flg=1 then goto roll - I/O: PUT I/O BIT PATTERN "X01XXXXXX" next i - GOTO LABEL roll2 - LABEL roll - I/O: PUT I/O BIT PATTERN "X11XXXXXX" next i - LABEL roll2 - RETURN *>SCREEN showexit return main *>SCREEN byebye - PUT HUGE TEXT AT (1,1): "THANK YOU!" - PUT LARGE TEXT AT (3,3): "FOR WORKING WITH" - PUT LARGE TEXT AT (2,4): "EASON TECHNOLOGY!!" - CURSOR 0 - DELAY 3000 - CLEAR GRAPHICS SCREEN - CLEAR SCREEN - END OF PSEUDOCODE