10 REM > Example16 20 :: 30 REM © 2000 Martin Penny 40 :: 50 ON ERROR GOTO 710 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 .LevelZero% 230 SWI "OS_NewLine" 240 ADR R0, LevelZeroText% 250 BL Print% 260 BL LevelOne% 270 ADR R0, LevelZeroText% 280 BL Print% 290 SWI "OS_NewLine" 300 .Exit% 310 LDMFD R13!, {R8 - R12, R15} 320 : 330 .LevelOne% 340 STMFD R13!, {R14} 350 SWI "OS_NewLine" 360 ADR R0, LevelOneText% 370 BL Print% 380 SWI "OS_NewLine" 390 LDMFD R13!, {R15} 400 : 410 .Print% 420 SWI "OS_Write0" 430 SWI "OS_NewLine" 440 MOV R15, R14 450 : 460 .LevelZeroText% 470 EQUS "This is the main body - label ""LevelZero%""." 480 EQUB 0 490 ALIGN 500 : 510 .LevelOneText% 520 EQUS "This is level one - label ""LevelOne%""." 530 EQUB 0 540 ALIGN 550 : 560 .End% 570 : 580 ] 590 IF OPT% AND 1 THEN PRINT 600 IF OPT% AND 1 THEN VDU 15 610 NEXT T% 620 PRINT 630 PRINT "-- Press ENTER to continue --" 640 PRINT 650 REPEAT UNTIL GET = 13 660 CLS 670 CALL Code% 680 ON 690 END 700 :: 710 VDU 15 720 PRINT REPORT$; " at line "; ERL 730 ON 740 END