10 REM Periodic Table 20 REM (c) M.Bobrowski 5'91 30 MODE132:HIMEM=&5800:LOMEM=PAGE+&2600:ONERRORMODE7:@%=&90A:OSCLI"FX4":END 40 PROCinit:CALLT%:PROCtitle 50 REPEAT:PROCchoice:PROCproperties:UNTIL FALSE 60 : 70 DEF PROCinit 80 DIM S$(105),N$(105),M(105),O$(6):FORI%=1TO105:READ S$(I%),N$(I%),M(I%):NEXT:Q$=STRING$(64," "):U$=STRING$(20," ") 90 O$(1)="1s":O$(2)=O$(1)+"2s2p":O$(3)=O$(2)+"3s3p":O$(4)=O$(3)+"3d4s4p":O$(5)=O$(4)+"4d5s5p":O$(6)=O$(5)+"4f5d6s6p":*FX4,1 100 T%=PAGE+&1D11:T%?5=(PAGE+&1D2C)DIV256:T%?9=(PAGE+&1D2C)MOD256:T%?23=LOMEM DIV256:S%=PAGE+&1A28:D%=S%+&6A:U%=S%+&D4:H%=S%+&13E:G%=H%+1:V%=S%+&212:W%=V%+1:N%=19+RND(34):d%=S%-&41:!&82=&A08FF0B:!&86=&DFE:ENDPROC 110 : 120 DEFPROCchoice:PROCcursor(N%):PROCwindow 130 REPEAT:M%=N%:PROCget:PROCcursor(M%):PROCcursor(N%):PROCwindow:UNTIL K%=13:PROCcursor(N%):ENDPROC 140 DEFPROCget:REPEAT:SOUND1,-8,200,2:*FX21 150 K%=GET:IF K%=136 N%=N%-1:IF N%=0 N%=1 160 IF K%=137 N%=N%+1:IF N%=106 N%=105 170 IF K%=138 N%=N%?D% ELSE IF K%=139 N%=N%?U% 180 UNTIL(K%>135 AND K%<140)ORK%=13:ENDPROC 190 DEFPROCcursor(N%):J%=2*N%:X%=256*J%?H%+J%?G%:Y%=256*J%?V%+J%?W%:MOVEX%,Y%:GCOL4,1:PLOT0,-26,35:PLOT0,56,0:PLOT81,0,-70:PLOT0,-4,0:PLOT0,-56,0:PLOT81,0,70:ENDPROC 200 DEFPROCwindow:GCOL0,1:MOVE280,692:DRAW280,895:DRAW760,895:DRAW760,692:DRAW280,692:VDU24,320;700;756;860;16 210 Z%=@%:VDU5:L%=478-32*LENSTR$N%:MOVEL%,860:PRINT;N%:@%=&20307:MOVE520,860:PRINT;M(N%):@%=Z%:L%=2-LENS$(N%):MOVE474+L%*16,812:PROCdbl(S$(N%)):L%=13-LENN$(N%):MOVE320+L%*14,740:PRINTN$(N%):VDU4,26:ENDPROC 220 : 230 DEFPROCproperties:RESTORE460:FORQ%=1TON%:READQ$,U$:NEXT 240 OSCLI"FX112,2":OSCLI"FX113,2":CLS:VDU20:MOVE0,200:DRAW0,990:DRAW1279,990:DRAW1279,200:DRAW0,200:MOVE0,910:DRAW1279,910:MOVE0,460:DRAW1279,460 250 PRINTTAB(19-(LENN$(N%))DIV2,2)N$(N%)'TAB(2,5)"chemical symbol";TAB(23)S$(N%)'TAB(2,7)"atomic number";TAB(23);N%'TAB(2,9)"atomic mass";TAB(23);M(N%)'TAB(2,11)"properties";TAB(23); 260 IF N%?S%=0 OR N%?S%=4 PRINT"metal" ELSE IF N%?S%=2 PRINT"amphoteric" ELSE PRINT"non-metal" 270 PRINTTAB(2,13)"state of aggregation ";:IF N%?S%<3 PRINT"solid" ELSEIF N%?S%=3 PRINT"gas" ELSE PRINT"liquid" 280 PRINTTAB(2,15)"oxidation states";:IFLENU$>14 PRINT" "U$ ELSEPRINTTAB(23)U$ 290 PRINTTAB(4,19)"electron configuration of atoms":IF N%<3THEN300 ELSEIFN%>2ANDN%<11Q$=O$(1)+Q$ ELSEIFN%>10ANDN%<19Q$=O$(2)+Q$ ELSEIFN%>18ANDN%<37Q$=O$(3)+Q$ ELSEIFN%>36ANDN%<55Q$=O$(4)+Q$ ELSEIFN%>54ANDN%<87Q$=O$(5)+Q$ ELSEQ$=O$(6)+Q$ 300 IF N%<55 PRINTTAB((39-LENQ$)DIV2,21);Q$ ELSE PRINTTAB(2,21)LEFT$(Q$,35)TAB(2,23)RIGHT$(Q$,LENQ$-35) 310 SOUND1,-10,60,2:SOUND1,-10,76,2:SOUND1,-10,88,2:SOUND1,-10,108,2:PRINTTAB(12,30)"Press Space Bar";:REPEATUNTILGET=32:OSCLI"FX112,1":OSCLI"FX113,1":VDU19,0,7;0;19,1,0|:ENDPROC 320 : 330 DEFPROCtitle:GCOL0,129:GCOL0,0:VDU5,24,4;935;1275;1019;16:MOVE76,1003:PROCdbl("Periodic Table of Chemical Elements"):VDU24,4;4;1275;100;16:MOVE64,88:PRINT"To select an element use cursor keys":MOVE368,44:PRINT"then press RETURN" 331 GCOL0,128:GCOL0,1:VDU26,4:ENDPROC 340 DEFPROCdbl(A$):LOCALA%,I%:FORI%=1TOLENA$:A%=ASCMID$(A$,I%,1):CALLd%:NEXT:ENDPROC 350 : 360 DATA H,Hydrogen,1.008,He,Helium,4.003,Li,Lithium,6.941,Be,Beryllium,9.012,B,Boron,10.81,C,Carbon,12.012,N,Nitrogen,14.007,O,Oxygen,15.999,F,Fluorine,18.998,Ne,Neon,20.179,Na,Sodium,22.990,Mg,Magnesium,24.305,Al,Aluminium,26.982 370 DATA Si,Silicon,28.086,P,Phosphorus,30.974,S,Sulphur,32.06,Cl,Chlorine,35.453,Ar,Argon,39.948,K,Potassium,39.098,Ca,Calcium,40.08,Sc,Scandium,44.956,Ti,Titanium,47.9,V,Vanadium,50.941,Cr,Chromium,51.996,Mn,Manganese,54.938 380 DATA Fe,Iron,55.847,Co,Cobalt,58.933,Ni,Nickel,58.7,Cu,Copper,63.546,Zn,Zinc,65.38,Ga,Gallium,69.72,Ge,Germanium,72.59,As,Arsenic,74.922,Se,Selenium,78.96,Br,Bromine,79.904,Kr,Krypton,83.8,Rb,Rubidium,85.468,Sr,Strontium,87.62 390 DATA Y,Yttrium,88.906,Zr,Zirconium,91.22,Nb,Niobium,92.906,Mo,Molybdenum,95.94,Tc,Technetium,96.906,Ru,Ruthenium,101.07,Rh,Rhodium,102.906,Pd,Palladium,106.4,Ag,Silver,107.868,Cd,Cadmium,112.4,In,Indium,114.82,Sn,Tin,118.69 400 DATA Sb,Antimony,121.75,Te,Tellurium,127.6,I,Iodine,126.905,Xe,Xenon,131.3,Cs,Caesium,132.905,Ba,Barium,137.34,La,Lanthanum,138.906,Ce,Cerium,140.12,Pr,Praseodymium,140.908,Nd,Neodymium,144.24,Pm,Promethium,144.913,Sm,Samarium,150.4 410 DATA Eu,Europium,151.96,Gd,Gadolinium,157.25,Tb,Terbium,158.925,Dy,Dysprosium,162.5,Ho,Holmium,164.930,Er,Erbium,167.26,Tm,Thulium,168.934,Yb,Ytterbium,173.04,Lu,Lutetium,174.97,Hf,Hafnium,178.49,Ta,Tantalum,180.948,W,Tungsten,183.85 420 DATA Re,Rhenium,186.207,Os,Osmium,190.2,Ir,Iridium,192.22,Pt,Platinum,195.09,Au,Gold,196.967,Hg,Mercury,200.59,Tl,Thallium,204.37,Pb,Lead,207.2,Bi,Bismuth,208.98,Po,Polonium,208.982,At,Astatine,209.987,Rn,Radon,222.018 430 DATA Fr,Francium,223.019,Ra,Radium,226.025,Ac,Actinium,227.028,Th,Thorium,232.038,Pa,Protactinium,231.036,U,Uranium,238.029,Np,Neptunium,237.048,Pu,Plutonium,244.064,Am,Americium,243.061,Cm,Curium,247.07,Bk,Berkelium,247.07 440 DATA Cf,Californium,251.08,Es,Einsteinium,254.088,Fm,Fermium,257.095,Md,Mendelevium,258.1,No,Nobelium,255.093,Lr,Lawrencium,260.1,Ku,Kurchatovium,261.1,Ha,Hahnium,260 450 : 460 DATA "1s","+1,(-1)","1s",0,"2s","+1","2s","+2","2s2p","+3","2s2p","-4,+4,(+2)","2s2p","-3,+3,+5,(+1,+2,+4)","2s2p","-2,(-1)","2s2p","-1","2s2p",0,"3s","+1","3s","+2","3s3p","+3","3s3p","-4,+4,(+2)" 470 DATA "3s3p","+3,+5,(-3)","3s3p","-2,+6,(+4)","3s3p","-1,+7,(+1,+3,+5,+6)","3s3p",0,"4s","+1","4s","+2","3d4s","+3","3d4s","+4,(+2,+3)","3d4s","+5,(+1,+2,+3,+4)","3d4s","+3,+6,(+2)","3d4s","+2,+7,(+3,+4,+6)" 480 DATA "3d4s","+2,+3","3d4s","+2,(+3)","3d4s","+2,(+1,+3)","3d4s","+2,(+1)","3d4s","+2","3d4s4p","+3","3d4s4p","+4,(+2)","3d4s4p","+3,+5,(-3)","3d4s4p","-2,+6,(+4)","3d4s4p","-1,(+1,+4,+5,+7)" 490 DATA "3d4s4p","0,(+2,+4)","5s","+1","5s","+2","4d5s","+3","4d5s","+4","4d5s","+5,(+2,+3)","4d5s","+6,(+2,+3,+4)","4d5s","+4,+7,(+6)","4d5s","+4,(+2,+3,+6,+8)","4d5s","+3,(+2,+4,+5,+6)","4d","+2,(+4)" 500 DATA "4d5s","+1,(+2)","4d5s","+2","4d5s5p","+3","4d5s5p","+4,(+2)","4d5s5p","+3,+5,(-3)","4d5s5p","-2,+6,(+4)","4d5s5p","-1,(+1,+5,+7)","4d5s5p","0,(+1,+2,+4,+6)","6s","+1","6s","+2","5d6s","+3" 510 DATA "4f5d6s","+3,+4","4f5d6s","+3,(+4)","4f5d6s","+3","4f5d6s","+3","4f5d6s","+2,+3","4f5d6s","+2,+3","4f5d6s","+3","4f5d6s","+3,(+4)","4f5d6s","+3","4f5d6s","+3","4f5d6s","+3" 520 DATA "4f5d6s","+3,(+2)","4f5d6s","+3,(+2)","4f5d6s","+3","4f5d6s","+4","4f5d6s","+5,(+3,+4)","4f5d6s","+6,(+2,+3,+4,+5)","4f5d6s","+4,+7,(+6)","4f5d6s","+6,+8,(+3,+4)","4f5d6s","+3,+4,(+6)" 530 DATA "4f5d6s","+2,+4,(+3,+6)","4f5d6s","+3,(+1)","4f5d6s","+2,(+1)","4f5d6s6p","+3,(+1)","4f5d6s6p","+2,+4","4f5d6s6p","+3,(+5)","4f5d6s6p","(+2,+4)","4f5d6s6p","(+1,+5,+7)" 540 DATA "4f5d6s6p","0,(+4)","7s","+1","7s","+2","6d7s","+3","5f6d7s","+4","5f6d7s","+5,(+4)","5f6d7s","+6,(+3,+4,+5)","5f6d7s","+5,(+3,+4,+6)","5f6d7s","+4,(+3,+5,+6)","5f6d7s","+3,(+4,+5,+6)" 550 DATA "5f6d7s","+3,(+4)","5f6d7s","+3","5f6d7s","+3","5f6d7s","+3","5f6d7s","+3","5f6d7s","+3,(+2)","5f6d7s","+3,(+2)","5f6d7s","+3","5f6d7s","+4","5f6d7s","+5"