Finite state machine: Difference between revisions
Content added Content deleted
Line 94: | Line 94: | ||
=={{header|BASIC}}== |
=={{header|BASIC}}== |
||
==={{header|Commodore BASIC}}=== |
|||
<lang basic> |
|||
10 REM FINITE STATE MACHINE |
|||
20 LET MS=1: REM MACHINE STATE |
|||
30 REM 1=READY, 2=WAITING, 3=DISPENSE, 4=REFUND, 5=QUIT |
|||
40 : |
|||
50 REM MAIN LOOP |
|||
60 ON MS GOSUB 1000,2000,3000,4000,5000 |
|||
70 GOTO 50 |
|||
80: |
|||
1000 REM READY |
|||
1010 PRINT "MACHINE IS READY" |
|||
1020 PRINT "PRESS D-ISPENSE OR Q-UIT" |
|||
1030 INPUT KP$ |
|||
1040 IF KP$ = "D" THEN MS=2: GOTO 1070 |
|||
1050 IF KP$ = "Q" THEN MS=5: GOTO 1070 |
|||
1060 GOTO 1030 |
|||
1070 RETURN |
|||
1080 : |
|||
2000 REM WAITING |
|||
2010 PRINT "MACHINE IS WAITING" |
|||
2020 PRINT "PRESS S-ELECT OR R-EFUND" |
|||
2030 INPUT KP$ |
|||
2040 IF KP$ = "S" THEN MS=3: GOTO 2070 |
|||
2050 IF KP$ = "R" THEN MS=4: GOTO 2070 |
|||
2060 GOTO 2030 |
|||
2070 RETURN |
|||
2080 : |
|||
3000 REM DISPENSE |
|||
3010 PRINT "MACHINE DISPENSE" |
|||
3020 PRINT "PRESS C-OLLECTED PRODUCT." |
|||
3030 INPUT KP$ |
|||
3040 IF KP$ = "C" THEN MS=1: GOTO 3060 |
|||
3050 GOTO 3030 |
|||
3060 RETURN |
|||
3070 : |
|||
4000 REM REFUND |
|||
4010 PRINT "MACHINE IS REFUND" |
|||
4020 PRINT "PRESS C-OLLECTED REFUND." |
|||
4030 INPUT KP$ |
|||
4040 IF KP$ = "C" THEN MS=1: GOTO 4060 |
|||
4050 GOTO 430 |
|||
4060 RETURN |
|||
4070 : |
|||
5000 REM QUIT |
|||
5010 PRINT "MACHINE IS SHUTDOWN" |
|||
5020 END |
|||
</lang> |
|||
==={{header|Sinclair ZX81 BASIC}}=== |
==={{header|Sinclair ZX81 BASIC}}=== |
||
Works with 1k of RAM. |
Works with 1k of RAM. |