10 REM > Example14 20 :: 30 REM © 2000 Martin Penny 40 :: 50 ON ERROR GOTO 1470 60 :: 70 MODE 12 80 OFF 90 COLOUR 0, 4 100 COLOUR 7, 3 110 DIM D% 4095 120 L% = D% + 4096 130 FOR T% = 0 TO 1 140 OPT% = 8 + T% * 3 150 IF OPT% AND 1 THEN VDU 14 160 IF OPT% AND 1 THEN PRINT 170 P% = D% 180 [OPT OPT% 190 : 200 .Code% 210 STMFD R13!, {R8 - R12, R14} 220 CMPS R0, #ASC(" ") - 1 230 TEQS R0, #127 240 ADRLS R0, Control% 250 BLS Print% 260 ADR R2, Table% 270 .Loop% 280 LDR R1, [R2], #8 290 CMPS R1, #0 300 ADREQ R0, Unknown% 310 BEQ Print% 320 CMPS R0, R1 330 BNE Loop% 340 LDR R0, [R2, #-4] 350 .Print% 360 SWI "OS_Write0" 370 SWI "OS_NewLine" 380 .Exit% 390 LDMFD R13!, {R8 - R12, R15} 400 : 410 .Control% 420 EQUS "That was a control character." 430 EQUB 0 440 ALIGN 450 : 460 .Unknown% 470 EQUS "I don't recognise that character!" 480 EQUB 0 490 ALIGN 500 : 510 .Table% 520 EQUD ASC("0") 530 EQUD Zero% 540 EQUD ASC("1") 550 EQUD One% 560 EQUD ASC("2") 570 EQUD Two% 580 EQUD ASC("3") 590 EQUD Three% 600 EQUD ASC("4") 610 EQUD Four% 620 EQUD ASC("5") 630 EQUD Five% 640 EQUD ASC("6") 650 EQUD Six% 660 EQUD ASC("7") 670 EQUD Seven% 680 EQUD ASC("8") 690 EQUD Eight% 700 EQUD ASC("9") 710 EQUD Nine% 720 EQUD 0 730 EQUD 0 740 : 750 .Zero% 760 EQUS "You pressed ""0""." 770 EQUB 0 780 ALIGN 790 : 800 .One% 810 EQUS "You pressed ""1""." 820 EQUB 0 830 ALIGN 840 : 850 .Two% 860 EQUS "You pressed ""2""." 870 EQUB 0 880 ALIGN 890 : 900 .Three% 910 EQUS "You pressed ""3""." 920 EQUB 0 930 ALIGN 940 : 950 .Four% 960 EQUS "You pressed ""4""." 970 EQUB 0 980 ALIGN 990 : 1000 .Five% 1010 EQUS "You pressed ""5""." 1020 EQUB 0 1030 ALIGN 1040 : 1050 .Six% 1060 EQUS "You pressed ""6""." 1070 EQUB 0 1080 ALIGN 1090 : 1100 .Seven% 1110 EQUS "You pressed ""7""." 1120 EQUB 0 1130 ALIGN 1140 : 1150 .Eight% 1160 EQUS "You pressed ""8""." 1170 EQUB 0 1180 ALIGN 1190 : 1200 .Nine% 1210 EQUS "You pressed ""9""." 1220 EQUB 0 1230 ALIGN 1240 : 1250 .End% 1260 : 1270 ] 1280 IF OPT% AND 1 THEN PRINT 1290 IF OPT% AND 1 THEN VDU 15 1300 NEXT T% 1310 PRINT 1320 PRINT "-- Press ENTER to continue --" 1330 REPEAT UNTIL GET = 13 1340 CLS 1350 PRINT 1360 PRINT "Please press a key: "; 1370 ON 1380 A% = GET 1390 OFF 1400 PRINT 1410 PRINT 1420 CALL Code% 1430 PRINT 1440 ON 1450 END 1460 :: 1470 VDU 15 1480 PRINT REPORT$; " at line "; ERL 1490 ON 1500 END