10 REM > Example10 20 :: 30 REM © 2000 Martin Penny 40 :: 50 ON ERROR GOTO 1010 60 :: 70 MODE 12 80 OFF 90 COLOUR 0, 4 100 COLOUR 7, 3 110 DIM B% 255 120 DIM D% 4095 130 L% = D% + 4096 140 FOR T% = 0 TO 1 150 OPT% = 8 + T% * 3 160 IF OPT% AND 1 THEN VDU 14 170 IF OPT% AND 1 THEN PRINT 180 P% = D% 190 [OPT OPT% 200 : 210 .Code% 220 STMFD R13!, {R8 - R12, R14} 230 CMPS R10, #1 240 ADRLO R0, NoParams% 250 ADRHI R0, TooManyParams% 260 BNE Print% 270 LDR R0, [R9, #4] 280 CMPS R0, #&80 290 ADRNE R0, NotAString% 300 BNE Print% 310 LDR R0, [R9, #0] 320 LDRB R1, [R0, #4] 330 CMPS R1, #0 340 ADREQ R0, EmptyString% 350 BEQ Print% 360 LDRB R2, [R0, #0] 370 LDRB R3, [R0, #1] 380 ORR R2, R2, R3, LSL #8 390 LDRB R3, [R0, #2] 400 ORR R2, R2, R3, LSL #16 410 LDRB R3, [R0, #3] 420 ORR R2, R2, R3, LSL #24 430 LDR R3, Buffer% 440 .Loop% 450 LDRB R0, [R2], #1 460 STRB R0, [R3], #1 470 SUBS R1, R1, #1 480 BNE Loop% 490 MOV R0, #0 500 STRB R0, [R3] 510 LDR R0, Buffer% 520 .Print% 530 SWI "OS_Write0" 540 SWI "OS_NewLine" 550 .Exit% 560 LDMFD R13!, {R8 - R12, R15} 570 : 580 .NoParams% 590 EQUS "Please give me a string!" 600 EQUB 0 610 ALIGN 620 : 630 .TooManyParams% 640 EQUS "Too much, too much!" 650 EQUB 0 660 ALIGN 670 : 680 .NotAString% 690 EQUS "I don't understand that!" 700 EQUB 0 710 ALIGN 720 : 730 .EmptyString% 740 EQUS "Please type something in!" 750 EQUB 0 760 ALIGN 770 : 780 .Buffer% 790 EQUD B% 800 : 810 .End% 820 : 830 ] 840 IF OPT% AND 1 THEN PRINT 850 IF OPT% AND 1 THEN VDU 15 860 NEXT T% 870 PRINT 880 PRINT "-- Press ENTER to continue --" 890 REPEAT UNTIL GET = 13 900 CLS 910 PRINT 920 ON 930 INPUT "Please enter some text: " A$ 940 OFF 950 PRINT 960 CALL Code%, A$ 970 PRINT 980 ON 990 END 1000 :: 1010 VDU 15 1020 PRINT REPORT$; " at line "; ERL 1030 ON 1040 END