start tok64 d64-WSgKJU 100 POKE 53272,23:POKE53280,1:POKE53281,1:GOTO150 110 pharoah's needles by rON wagner 64 mods 3/30/82 by wim 120 ---------------------------- 130 from 'public domain',mse,svp 140 ---------------------------- 150 FOR k=1 TO 5 160 d(k)=0 170 NEXT k 180 p(1)=1470:p(2)=1483:p(3)=1496 190 c$="{space*12}public domain{space*14}" 200 PRINT"{clear}{black}{space*11}PHARAOH'S{space*2}NEEDLES" 210 PRINT"{down*3}{space*4}THE GAME{sh space}OF{sh space}KINGS IS{sh space}UPON{sh space}YOU.{down}" 220 PRINT"I WILL SET{sh space}UP {sh space}THREE{sh space} NEEDLES {sh space}WITH{sh space}THE" 230 PRINT"NUMBER{sh space}OF DISKS{space*3}THAT{space*2}YOU{space*2}REQUEST ON" 240 PRINT"NEEDLE{sh space}#1. YOU{sh space}ARE{sh space}REQUIRED{sh space}TO{sh space}MOVE{sh space}THE" 250 PRINT"DISKS{sh space}ONE{sh space}AT{sh space}A{sh space}TIME{sh space}TO{sh space}THE{sh space}THIRD{sh space}NEEDLE" 260 PRINT"YOU{sh space}WILL{sh space}NOT{sh space}BE{sh space}ALLOWED{sh space}TO{sh space}PUT{sh space}A{sh space}LARGER" 270 PRINT"DISK{sh space}ON{sh space}A{sh space}SMALLER{sh space}ONE.TO{sh space}MOVE{sh space}THE{sh space}DISKS" 280 PRINT"FIRST{sh space}PRESS{sh space}THE{sh space}NEEDLE{sh space}# FROM{sh space}WHICH{sh space}THE" 290 PRINT"DISK{sh space}WILL{sh space}MOVE,{sh space}THEN{sh space}PRESS{sh space}THE{sh space}NEEDLE{sh space}#" 300 PRINT"TO{sh space}WHICH{sh space}YOU{sh space}WANT{sh space}THE{sh space}DISK{sh space}TO{sh space}MOVE." 310 PRINT"{space*2}I WILL{sh space}THEN MOVE{sh space}THE{sh space}TOP{sh space}DISK OVER{sh space}TO" 320 PRINT"THE{sh space}REQUESTED NEEDLE." 330 PRINT"{space*2}TO{sh space}CLEAR{sh space}A{sh space}WRONG{sh space}FIRST{sh space}MOVE{sh space}ENTER{sh space}# 0" 340 PRINT"{down}HOW{sh space}MANY{sh space}DISKS WILL{sh space}YOU{sh space}REQUIRE (1-9)?"; 350 GET nd$:IF nd$="" GOTO 350 360 nd=VAL(nd$) 370 IF nd<1 OR nd>9 GOTO 350 380 PRINT nd:mo=(2^nd)-1 390 IF nd>6 THEN PRINT"WARNING,"; 400 PRINTnd;" DISKS{sh space}WILL{sh space}TAKE"mo;"MOVES!" 410 PRINT"{down}FOR{sh space}A{sh space}PERFECT{sh space}GAME." 420 FOR k=1 TO 3000:NEXT k 430 PRINT"{clear}";:POKE53272,21 440 PRINT"{space*11}{pink}pharaoh's{space*2}needles{black}" 450 PRINT"{yellow}{space*2}N{cm t*3}M"TAB(33)"N{cm t*3}M" 460 PRINT" N {sh asterisk}{sh -}{sh asterisk} M"TAB(32)"N {sh asterisk}{sh -}{sh asterisk} M" 470 PRINT"N{space*3}{cm x}{space*3}M{space*6}{black}";nd;" disks{space*7}{yellow}N{space*3}{cm z}{space*3}M"; 480 PRINT"{cm t}P{space*2}-{space*2}O{cm t}{space*22}{cm t}P{space*2}-{space*2}O{cm t}{black}" 490 PRINTTAB(10)"your move number";mn 500 PRINT"{down*4}"; 510 FOR k=1 TO nd+1 520 PRINTTAB(6)"{black}{cm +}"TAB(19)"{cm +}"TAB(32)"{cm +}{black}" 530 NEXT k 540 PRINT"{orange}{reverse on}{space*40}{reverse off}"; 550 PRINT"{reverse on}{space*6}{black}1{orange}{space*12}{black}2{orange}{space*12}{black}3{orange}{space*7}{reverse off}"; 560 PRINT"{reverse on}{space*40}{reverse off}{black}"; 570 PRINT"{right*6}{up*4}"; 580 ON nd GOTO 1230,1220,1210,1200,1190,1180,1170,1160,1150 590 d(4)=d(1) 600 PRINT"{home}{down*8}move from needle ? "; 610 GET nf$:IF nf$="" THEN GOTO 610 620 nf=VAL(nf$) 630 IF nf<1 OR nf>3 THEN GOTO 610 640 IF d(nf)=0 THEN GOTO 610 650 PRINT nf;"{space*3}to needle ? "; 660 GET tn$:IF tn$="" THEN GOTO 660 670 tn=VAL(tn$) 680 IF tn=0 THEN GOTO 1080 690 IF tn<1 OR tn>3 THEN GOTO 660 700 IF tn=nf THEN GOTO 1080 710 IF d(tn)=0 THEN GOTO 750 720 IF d(nf)1 THEN PRINT"{right*13}"; 800 IF nf>2 THEN PRINT"{right*13}"; 810 IF PEEK(p)=102 THEN p=p+40:PRINT"{down}";:dd=dd+1:GOTO 810 820 dm=PEEK(p)-176 830 FOR k=1 TO dd 840 ON dm GOSUB 1250,1340,1430,1520,1610,1730,1850,1970,2100 850 NEXT k 860 lr=(tn-nf)*13 870 IF lr<0 THEN GOTO 920 880 FOR k=1 TO lr 890 ON dm GOSUB 1300,1390,1480,1570,1690,1810,1930,2050,2180 900 NEXT k 910 GOTO 960 920 lr=ABS(lr) 930 FOR k=1 TO lr 940 ON dm GOSUB 1320,1410,1500,1590,1710,1830,1950,2080,2210 950 NEXT k 960 p=p(tn) 970 ON dm GOSUB 1280,1370,1460,1550,1660,1780,1900,2020,2150 980 IF PEEK(p+40)<>102 THEN GOTO 1020 990 ON dm GOSUB 1270,1360,1450,1540,1640,1760,1880,2000,2130 1000 p=p+40 1010 GOTO 980 1020 dn=INT(dm*10^(9-dm)) 1030 d(tn)=INT(d(tn)+dn) 1040 d(nf)=INT(d(nf)-dn) 1050 mn=mn+1 1060 IF INT(d(3))= INT(d(4)) THEN GOTO 1100 1070 PRINT"{home}{down*6}{right*26}";mn 1080 PRINT"{home}{down*8}";c$;"{up}"; 1090 GOTO 600 1100 PRINT"{home}{down*8}";c$;"{up}"; 1110 PRINT nd;" disks{space*2}moved{space*2}in{space*2}only{space*2}";mn;"moves !" 1120 GETr$:IF r$=""GOTO1120 1130 RUN 1140 REM draw inital disk pile 1150 PRINT"{left*6}{cm c}{reverse on}{cm i*5}9{cm i*5}{reverse off}{cm v}{left*7}{up}";:d(1)=d(1)+9 1160 PRINT"{left*5}{reverse on}{cm i*5}8{cm i*5}{reverse off}{left*6}{up}";:d(1)=d(1)+80 1170 PRINT"{left*5}{cm c}{reverse on}{cm i*4}7{cm i*4}{reverse off}{cm v}{left*6}{up}";:d(1)=d(1)+700 1180 PRINT"{left*4}{reverse on}{cm i*4}6{cm i*4}{reverse off}{left*5}{up}";:d(1)=d(1)+6000 1190 PRINT"{left*4}{cm c}{reverse on}{cm i*3}5{cm i*3}{reverse off}{cm v}{left*5}{up}";:d(1)=d(1)+50000 1200 PRINT"{left*3}{reverse on}{cm i*3}4{cm i*3}{reverse off}{left*4}{up}";:d(1)=d(1)+400000 1210 PRINT"{left*3}{cm c}{reverse on}{cm i*2}3{cm i*2}{reverse off}{cm v}{left*4}{up}";:d(1)=d(1)+3000000 1220 PRINT"{left*2}{reverse on}{cm i*2}2{cm i*2}{reverse off}{left*3}{up}";:d(1)=d(1)+2*10^7 1230 PRINT"{left*2}{cm c}{reverse on}{cm i}1{cm i}{reverse off}{cm v}":d(1)=d(1)+1*10^8:GOTO 590 1240 REM 1 up 1250 PRINT"{left*2}{up}{cm d}{cm i}{reverse on} {reverse off}{cm i}{cm f}{left*5}{down}{space*2}{cm +}{space*2}{up}{left*5}{cm c}{reverse on}{cm i}1{cm i}{reverse off}{cm v}{left*3}";:RETURN 1260 REM 1 down 1270 PRINT"{left*2}{cm d}{cm i}{reverse on} {reverse off}{cm i}{cm f}{down}{left*5}{cm c}{reverse on}{cm i}1{cm i}{reverse off}{cm v}{up}{left*5}{space*2}{cm +}{space*2}{left*3}{down}";:RETURN 1280 PRINT"{left*2}{cm d}{cm i}{reverse on} {reverse off}{cm i}{cm f}{down}{left*5}{cm c}{reverse on}{cm i}1{cm i}{reverse off}{cm v}{up}{left*5}{space*5}{left*3}{down}";:RETURN 1290 REM 1 right 1300 PRINT"{right*2}{reverse on}{cm i}{reverse off}{left*5} {reverse on}{cm i}1{cm i*2}{reverse off}{cm v}{left*5}{cm c}{reverse on}{cm i}1{reverse off}{left}";:RETURN 1310 REM 1 left 1320 PRINT"{left*2}{reverse on}{cm i*2}1{cm i}{reverse off} {left*6}{cm c}{reverse on}{cm i}1{cm i}{reverse off}{cm v}{left*3}";:RETURN 1330 REM 2 up 1340 PRINT"{left*2}{up}{cm i*2}{reverse on} {reverse off}{cm i*2}{left*5}{down}{space*2}{cm +}{space*2}{up}{left*5}{reverse on}{cm i*2}2{cm i*2}{reverse off}{left*3}";:RETURN 1350 REM 2 down 1360 PRINT"{left*2}{cm i*2}{reverse on} {reverse off}{cm i*2}{down}{left*5}{reverse on}{cm i*2}2{cm i*2}{reverse off}{up}{left*5}{space*2}{cm +}{space*2}{left*3}{down}";:RETURN 1370 PRINT"{left*2}{cm i*2}{reverse on} {reverse off}{cm i*2}{down}{left*5}{reverse on}{cm i*2}2{cm i*2}{reverse off}{up}{left*5}{space*5}{left*3}{down}";:RETURN 1380 REM 2 right 1390 PRINT"{right*3}{cm v}{left*6}{cm c}{reverse on}{cm i}{right*3}{cm i}{left*6}{reverse off} {reverse on}{cm i*2}2{cm i*2}{reverse off}{left*3}";:RETURN 1400 REM 2 left 1410 PRINT"{left*3}{cm c}{reverse on}{cm i*2}2{cm i}{reverse off}{cm v}{left*6}{reverse on}{cm i*2}2{cm i*2}{reverse off} {left*4}";:RETURN 1420 REM 3 up 1430 PRINT"{left*3}{up}{cm d}{cm i*2}{reverse on} {reverse off}{cm i*2}{cm f}{left*7}{down}{space*3}{cm +}{space*3}{up}{left*7}{cm c}{reverse on}{cm i*2}3{cm i*2}{reverse off}{cm v}{left*4}";:RETURN 1440 REM 3 down 1450 PRINT"{left*3}{cm d}{cm i*2}{reverse on} {reverse off}{cm i*2}{cm f}{down}{left*7}{cm c}{reverse on}{cm i*2}3{cm i*2}{reverse off}{cm v}{up}{left*7}{space*3}{cm +}{space*3}{left*4}{down}";:RETURN 1460 PRINT"{left*3}{cm d}{cm i*2}{reverse on} {reverse off}{cm i*2}{cm f}{down}{left*7}{cm c}{reverse on}{cm i*2}3{cm i*2}{reverse off}{cm v}{up}{left*7}{space*7}{left*4}{down}";:RETURN 1470 REM 3 right 1480 PRINT"{right*3}{reverse on}{cm i}{reverse off}{left*7} {reverse on}{cm i*2}3{cm i*3}{reverse off}{cm v}{left*7}{cm c}{reverse on}{cm i*2}3{cm i}{reverse off}{left*2}";:RETURN 1490 REM 3 left 1500 PRINT"{left*3}{reverse on}{cm i*3}3{cm i*2}{reverse off} {left*8}{cm c}{reverse on}{cm i*2}3{cm i*2}{reverse off}{cm v}{left*4}";:RETURN 1510 REM 4 up 1520 PRINT"{left*3}{up}{cm i*3}{reverse on} {reverse off}{cm i*3}{left*7}{down}{space*3}{cm +}{space*3}{up}{left*7}{reverse on}{cm i*3}4{cm i*3}{reverse off}{left*4}";:RETURN 1530 REM 4 down 1540 PRINT"{left*3}{cm i*3}{reverse on} {reverse off}{cm i*3}{down}{left*7}{reverse on}{cm i*3}4{cm i*3}{reverse off}{up}{left*7}{space*3}{cm +}{space*3}{left*4}{down}";:RETURN 1550 PRINT"{left*3}{cm i*3}{reverse on} {reverse off}{cm i*3}{down}{left*7}{reverse on}{cm i*3}4{cm i*3}{reverse off}{up}{left*7}{space*7}{left*4}{down}";:RETURN 1560 REM 4 right 1570 PRINT"{right*4}{cm v}{left*8}{cm c}{reverse on}{cm i*2}{right*3}{cm i*2}{left*8}{reverse off} {reverse on}{cm i*3}4{cm i*3}{reverse off}{left*4}";:RETURN 1580 REM 4 left 1590 PRINT"{left*4}{cm c}{reverse on}{cm i*3}4{cm i*2}{reverse off}{cm v}{left*8}{reverse on}{cm i*3}4{cm i*3}{reverse off} {left*5}";:RETURN 1600 REM 5 up 1610 PRINT"{left*4}{up}{cm d}{cm i*3}{reverse on} {reverse off}{cm i*3}{cm f}{left*9}{down}{space*4}{cm +}{space*4}{up}{left*9}{cm c}{reverse on}{cm i*3}5{cm i*3}{reverse off}{cm v}{left*5}"; 1620 RETURN 1630 REM 5 down 1640 PRINT"{left*4}{cm d}{cm i*3}{reverse on} {reverse off}{cm i*3}{cm f}{down}{left*9}{cm c}{reverse on}{cm i*3}5{cm i*3}{reverse off}{cm v}{up}{left*9}{space*4}{cm +}{space*4}{left*5}{down}"; 1650 RETURN 1660 PRINT"{left*4}{cm d}{cm i*3}{reverse on} {reverse off}{cm i*3}{cm f}{down}{left*9}{cm c}{reverse on}{cm i*3}5{cm i*3}{reverse off}{cm v}{up}{left*9}{space*9}{left*5}{down}"; 1670 RETURN 1680 REM 5 right 1690 PRINT"{right*4}{reverse on}{cm i}{reverse off}{left*9} {reverse on}{cm i*3}5{cm i*4}{reverse off}{cm v}{left*9}{cm c}{reverse on}{cm i*3}5{cm i*2}{reverse off}{left*3}";:RETURN 1700 REM 5 left 1710 PRINT"{left*4}{reverse on}{cm i*4}5{cm i*3}{reverse off} {left*10}{cm c}{reverse on}{cm i*3}5{cm i*3}{reverse off}{cm v}{left*5}";:RETURN 1720 REM 6 up 1730 PRINT"{left*4}{up}{cm i*4}{reverse on} {reverse off}{cm i*4}{left*9}{down}{space*4}{cm +}{space*4}{up}{left*9}{reverse on}{cm i*4}6{cm i*4}{reverse off}{left*5}"; 1740 RETURN 1750 REM 6 down 1760 PRINT"{left*4}{cm i*4}{reverse on} {reverse off}{cm i*4}{down}{left*9}{reverse on}{cm i*4}6{cm i*4}{reverse off}{up}{left*9}{space*4}{cm +}{space*4}{left*5}{down}"; 1770 RETURN 1780 PRINT"{left*4}{cm i*4}{reverse on} {reverse off}{cm i*4}{down}{left*9}{reverse on}{cm i*4}6{cm i*4}{reverse off}{up}{left*9}{space*9}{left*5}{down}"; 1790 RETURN 1800 REM 6 right 1810 PRINT"{right*5}{cm v}{left*10}{cm c}{reverse on}{cm i*3}{right*3}{cm i*3}{left*10}{reverse off} {reverse on}{cm i*4}6{cm i*4}{reverse off}{left*5}";:RETURN 1820 REM 6 left 1830 PRINT"{left*5}{cm c}{reverse on}{cm i*4}6{cm i*3}{reverse off}{cm v}{left*10}{reverse on}{cm i*4}6{cm i*4}{reverse off} {left*6}";:RETURN 1840 REM 7 up 1850 PRINT"{left*5}{up}{cm d}{cm i*4}{reverse on} {reverse off}{cm i*4}{cm f}{left*11}{down}{space*5}{cm +}{space*5}{up}{left*11}"; 1860 PRINT"{cm c}{reverse on}{cm i*4}7{cm i*4}{reverse off}{cm v}{left*6}";:RETURN 1870 REM 7 down 1880 PRINT"{left*5}{cm d}{cm i*4}{reverse on} {reverse off}{cm i*4}{cm f}{down}{left*11}{cm c}{reverse on}{cm i*4}7{cm i*4}{reverse off}{cm v}{up}{left*11}"; 1890 PRINT"{space*5}{cm +}{space*5}{left*6}{down}";:RETURN 1900 PRINT"{left*5}{cm d}{cm i*4}{reverse on} {reverse off}{cm i*4}{cm f}{down}{left*11}{cm c}{reverse on}{cm i*4}7{cm i*4}{reverse off}{cm v}{up}{left*11}"; 1910 PRINT"{space*11}{left*6}{down}";:RETURN 1920 REM 7 right 1930 PRINT"{right*5}{reverse on}{cm i}{reverse off}{left*11} {reverse on}{cm i*4}7{cm i*5}{reverse off}{cm v}{left*11}{cm c}{reverse on}{cm i*4}7{cm i*2}{reverse off}{left*3}";:RETURN 1940 REM 7 left 1950 PRINT"{left*5}{reverse on}{cm i*5}7{cm i*4}{reverse off} {left*12}{cm c}{reverse on}{cm i*4}7{cm i*4}{reverse off}{cm v}{left*6}";:RETURN 1960 REM 8 up 1970 PRINT"{left*5}{up}{cm i*5}{reverse on} {reverse off}{cm i*5}{left*11}{down}{space*5}{cm +}{space*5}{up}{left*11}"; 1980 PRINT"{reverse on}{cm i*5}8{cm i*5}{reverse off}{left*6}";:RETURN 1990 REM 8 down 2000 PRINT"{left*5}{cm i*5}{reverse on} {reverse off}{cm i*5}{down}{left*11}{reverse on}{cm i*5}8{cm i*5}{reverse off}{up}{left*11}"; 2010 PRINT"{space*5}{cm +}{space*5}{left*6}{down}";:RETURN 2020 PRINT"{left*5}{cm i*5}{reverse on} {reverse off}{cm i*5}{down}{left*11}{reverse on}{cm i*5}8{cm i*5}{reverse off}{up}{left*11}"; 2030 PRINT"{space*11}{left*6}{down}";:RETURN 2040 REM 8 right 2050 PRINT"{right*6}{cm v}{left*12}{cm c}{reverse on}{cm i*4}{right*3}{cm i*4}{left*12}{reverse off} {reverse on}{cm i*5}8{cm i*5}{reverse off}{left*6}"; 2060 RETURN 2070 REM 8 left 2080 PRINT"{left*6}{cm c}{reverse on}{cm i*5}8{cm i*4}{reverse off}{cm v}{left*12}{reverse on}{cm i*5}8{cm i*5}{reverse off} {left*7}";:RETURN 2090 REM 9 up 2100 PRINT"{left*6}{up}{cm d}{cm i*5}{reverse on} {reverse off}{cm i*5}{cm f}{left*13}{down}{space*6}{cm +}{space*6}{up}{left*13}"; 2110 PRINT"{cm c}{reverse on}{cm i*5}9{cm i*5}{reverse off}{cm v}{left*7}";:RETURN 2120 REM 9 down 2130 PRINT"{left*6}{cm d}{cm i*5}{reverse on} {reverse off}{cm i*5}{cm f}{down}{left*13}{cm c}{reverse on}{cm i*5}9{cm i*5}{reverse off}{cm v}{up}{left*13}"; 2140 PRINT"{space*6}{cm +}{space*6}{left*7}{down}";:RETURN 2150 PRINT"{left*6}{cm d}{cm i*5}{reverse on} {reverse off}{cm i*5}{cm f}{down}{left*13}{cm c}{reverse on}{cm i*5}9{cm i*5}{reverse off}{cm v}{up}{left*13}"; 2160 PRINT"{space*13}{left*7}{down}";:RETURN 2170 REM 9 right 2180 PRINT"{right*6}{reverse on}{cm i}{reverse off}{left*13} {reverse on}{cm i*5}9{cm i*6}{reverse off}{cm v}{left*13}{cm c}{reverse on}{cm i*5}7{cm i*2}{reverse off}{left*3}"; 2190 RETURN 2200 REM 9 left 2210 PRINT"{left*6}{reverse on}{cm i*6}9{cm i*5}{reverse off} {left*14}{cm c}{reverse on}{cm i*5}9{cm i*5}{reverse off}{cm v}{left*7}";:RETURN 2220 GETr$:IF r$=""GOTO2220 2230 END stop tok64 (bastext 1.0)