10 REM > Example05 20 :: 30 REM © 2000 Martin Penny 40 :: 50 ON ERROR GOTO 940 60 :: 70 MODE 12 80 OFF 90 COLOUR 0, 4 100 COLOUR 7, 3 110 DIM D% 4095 120 L% = D% + 4096 130 REPEAT 140 CLS 150 ON 160 PRINT 170 INPUT "Value #1: " V1% 180 PRINT 190 INPUT "Value #2: " V2% 200 PRINT 210 OFF 220 FOR T% = 0 TO 1 230 OPT% = 8 + T% * 3 240 IF OPT% AND 1 THEN VDU 14 250 IF OPT% AND 1 THEN PRINT 260 P% = D% 270 [OPT OPT% 280 : 290 .Code% 300 LDR R0, Value1% 310 LDR R1, Value2% 320 .StripSigns% 330 CMPS R0, #0 340 RSBMI R0, R0, #0 350 MVNMI R2, #0 360 MOVPL R2, #0 370 CMPS R1, #0 380 RSBMI R1, R1, #0 390 MVNMI R3, #0 400 MOVPL R3, #0 410 .CalculateSign% 420 EOR R2, R2, R3 430 STR R2, Sign% 440 .Multiply% 450 MOV R2, R0, LSR #16 460 EOR R0, R0, R2, LSL #16 470 MOV R3, R1, LSR #16 480 EOR R1, R1, R3, LSL #16 490 MUL R4, R0, R1 500 MUL R5, R0, R2 510 MUL R6, R1, R2 520 MUL R7, R2, R3 530 ADDS R0, R4, R5, LSL #16 540 ADC R1, R7, R5, LSR #16 550 ADDS R0, R0, R6, LSL #16 560 ADC R1, R1, R6, LSR #16 570 STR R0, Result% + 0 580 STR R1, Result% + 4 590 .Exit% 600 MOV R15, R14 610 : 620 .Value1% 630 EQUD V1% 640 : 650 .Value2% 660 EQUD V2% 670 : 680 .Result% 690 EQUD 0 700 EQUD 0 710 : 720 .Sign% 730 EQUD 0 740 : 750 .End% 760 : 770 ] 780 IF OPT% AND 1 THEN PRINT 790 IF OPT% AND 1 THEN VDU 15 800 NEXT T% 810 CALL Code% 820 PRINT 830 PRINT "Result: "; 840 Total = 0 850 FOR T% = 0 TO 7 860 Total += Result%?T% * (256 ^ T%) 870 NEXT T% 880 IF !Sign% = -1 THEN Total = -Total 890 PRINT STR$(Total) 900 PRINT 910 ON 920 END 930 :: 940 VDU 15 950 PRINT REPORT$; " at line "; ERL 960 ON 970 END