10 ' 20 CLEAR:DIM A(4) 30 MW=65536 40 DM=10:IM=0:EN=0 50 CLS:GOSUB650:LOCATE0,1:PRINT "Help:H"; 100 LOCATE18,3:K$=INPUT$(1):K=ASC(K$) 110 IF K=&H48 THEN GOSUB2000:GOTO50 120 IF K>=&H30 AND K<=&H39 THEN V=K-&H30:GOSUB400:GOTO100 130 IF DM=16 AND K>=&H41 AND K<=&H46 THEN V=K-&H37:GOSUB400:GOTO100 140 IF K=8 THEN GOSUB450:GOTO100 150 IM=0 160 IF K=13 THEN GOSUB550:GOTO100 170 IF K=12 THEN A(0)=0:I=0:GOSUB700:GOTO100 180 EN=1 190 IF K=&HFB THEN GOSUB500:GOTO100 200 IF K=&H2B THEN A(0)=A(1)+A(0):GOSUB800:GOTO100 210 IF K=&H2D THEN A(0)=A(1)-A(0):GOSUB800:GOTO100 220 IF K=&H2A THEN A(0)=A(1)*A(0):GOSUB800:GOTO100 230 IF K=&H2F AND A(0)<>0 THEN A(0)=A(1)/A(0):GOSUB800:GOTO100 240 IF K=&H20 THEN A(0)=-A(0):I=0:GOSUB700:GOTO100 250 IF K=&H58 THEN GOSUB600:GOTO100 260 IF K=&H1F THEN GOSUB900:GOTO100 270 IF K=&H1E THEN GOSUB950:GOTO100 280 IF K=&HED GOTO10 390 GOTO100 400 IF EN=1 THEN GOSUB550:A(0)=V:EN=0:IM=1:GOTO420 410 IF IM=1 THEN A(0)=A(0)*DM+V ELSE A(0)=V:IM=1 420 I=0:GOSUB 700:RETURN 450 IF IM=0 THEN A(0)=0:EN=0 ELSE A(0)=A(0)\DM 460 I=0:GOSUB 700:RETURN 500 IF DM=10 THEN DM=16 ELSE DM=10 510 GOSUB650:RETURN 550 A(3)=A(2):A(2)=A(1):A(1)=A(0):GOSUB650:RETURN 600 I=A(0):A(0)=A(1):A(1)=I 610 FORI=0TO1:GOSUB700:NEXT 620 RETURN 650 FORI=0TO3:GOSUB700:NEXT 660 GOSUB850:RETURN 700 A=A(I):LOCATE 8,3-I 710 IF DM=10 THEN PRINT USING "###########";A;:RETURN 720 IF A>=0 AND A<=32767 THEN PRINT " ";HEX$(A);:RETURN 730 IF A<-2^31 OR A>=2^32 THEN PRINT " ????????";:RETURN 740 IF A<0 THEN X=2^32+A ELSE X=A 750 H=X\MW:L=X MOD MW 760 IF H>32767 THEN H=H-MW 770 IF L>32767 THEN L=L-MW 780 PRINT " ";HEX$(H);HEX$(L);:RETURN 800 A(1)=A(2):A(2)=A(3):A(3)=0 810 GOSUB650:RETURN 850 LOCATE 0,0:PRINT USING "Mode:##";DM;:RETURN 900 I=A(0):A(0)=A(1):A(1)=A(2):A(2)=A(3):A(3)=I 910 GOSUB650:RETURN 950 I=A(3):A(3)=A(2):A(2)=A(1):A(1)=A(0):A(0)=I 960 GOSUB650:RETURN 2000 CLS:LOCATE0,0 2010 PRINT "SPC:+/-" 2020 PRINT "X:X<=>Y" 2030 PRINT CHR$(&HE3);":Up" 2040 PRINT CHR$(&HE5);":Down"; 2050 LOCATE9,0:PRINT "Fx:Reset" 2060 LOCATE 0,0:K$=INPUT$(1):RETURN