home *** CD-ROM | disk | FTP | other *** search
/ Carousel Volume 2 #1 / carousel.iso / mactosh / code / p_towerh.sit < prev    next >
SHell self-extracting ARchive  |  1988-10-09  |  23.3 KB

open in: MacOS 8.1     |     Win98     |     DOS

view JSON data     |     view as text

This file was processed as: SHell self-extracting ARchive (archive/shar).

You can browse this item here: p_towerh.sit

ConfidenceProgramDetectionMatch TypeSupport
100% dexvert SHell self-extracting ARchive (archive/shar) magic Supported
100% dexvert Mailbox/MIME Entity (archive/mbox) magic Supported
100% dexvert Internet Message Format (text/imf) magic Supported
66% dexvert Stuffit Archive (archive/sit) ext Supported
1% dexvert Text File (text/txt) fallback Supported
100% file Mailbox text, 1st line "From SHULMAN@sdr.slb.com Wed May 4 23:36:55 1988", ASCII text default
100% TrID E-Mail message (Var. 2) default
100% checkBytes Printable ASCII default
100% perlTextCheck Likely Text (Perl) default
100% siegfried fmt/329 Shell Archive Format default
100% detectItEasy Format: plain text[LF] default (weak)
100% xdgMime application/mbox default



hex view
+--------+-------------------------+-------------------------+--------+--------+
|00000000| 46 72 6f 6d 20 53 48 55 | 4c 4d 41 4e 40 73 64 72 |From SHU|LMAN@sdr|
|00000010| 2e 73 6c 62 2e 63 6f 6d | 20 57 65 64 20 4d 61 79 |.slb.com| Wed May|
|00000020| 20 20 34 20 32 33 3a 33 | 36 3a 35 35 20 31 39 38 | 4 23:3|6:55 198|
|00000030| 38 0a 50 61 74 68 3a 20 | 75 74 61 73 74 72 6f 21 |8.Path: |utastro!|
|00000040| 75 74 2d 73 61 6c 6c 79 | 21 69 6d 34 75 21 74 75 |ut-sally|!im4u!tu|
|00000050| 74 2e 63 69 73 2e 6f 68 | 69 6f 2d 73 74 61 74 65 |t.cis.oh|io-state|
|00000060| 2e 65 64 75 21 62 6c 6f | 6f 6d 2d 62 65 61 63 6f |.edu!blo|om-beaco|
|00000070| 6e 21 67 61 74 65 63 68 | 21 70 75 72 64 75 65 21 |n!gatech|!purdue!|
|00000080| 64 65 63 77 72 6c 21 68 | 70 6c 61 62 73 21 66 65 |decwrl!h|plabs!fe|
|00000090| 6c 69 78 21 64 68 77 36 | 38 6b 21 6d 61 63 69 6e |lix!dhw6|8k!macin|
|000000a0| 74 6f 73 68 0a 46 72 6f | 6d 3a 20 53 48 55 4c 4d |tosh.Fro|m: SHULM|
|000000b0| 41 4e 40 73 64 72 2e 73 | 6c 62 2e 63 6f 6d 20 28 |AN@sdr.s|lb.com (|
|000000c0| 4a 65 66 66 72 65 79 20 | 53 68 75 6c 6d 61 6e 29 |Jeffrey |Shulman)|
|000000d0| 0a 4e 65 77 73 67 72 6f | 75 70 73 3a 20 63 6f 6d |.Newsgro|ups: com|
|000000e0| 70 2e 73 6f 75 72 63 65 | 73 2e 6d 61 63 0a 53 75 |p.source|s.mac.Su|
|000000f0| 62 6a 65 63 74 3a 20 54 | 6f 77 65 72 73 20 6f 66 |bject: T|owers of|
|00000100| 20 48 61 6e 6f 69 0a 4d | 65 73 73 61 67 65 2d 49 | Hanoi.M|essage-I|
|00000110| 44 3a 20 3c 37 36 37 33 | 40 64 68 77 36 38 6b 2e |D: <7673|@dhw68k.|
|00000120| 63 74 73 2e 63 6f 6d 3e | 0a 44 61 74 65 3a 20 35 |cts.com>|.Date: 5|
|00000130| 20 4d 61 79 20 38 38 20 | 30 34 3a 33 36 3a 35 35 | May 88 |04:36:55|
|00000140| 20 47 4d 54 0a 53 65 6e | 64 65 72 3a 20 6d 61 63 | GMT.Sen|der: mac|
|00000150| 69 6e 74 6f 73 68 40 64 | 68 77 36 38 6b 2e 63 74 |intosh@d|hw68k.ct|
|00000160| 73 2e 63 6f 6d 0a 4c 69 | 6e 65 73 3a 20 37 32 35 |s.com.Li|nes: 725|
|00000170| 0a 41 70 70 72 6f 76 65 | 64 3a 20 69 6e 66 6f 2d |.Approve|d: info-|
|00000180| 6d 61 63 40 73 75 6d 65 | 78 2d 61 69 6d 2e 73 74 |mac@sume|x-aim.st|
|00000190| 61 6e 66 6f 72 64 2e 65 | 64 75 0a 0a 5b 54 6f 77 |anford.e|du..[Tow|
|000001a0| 65 72 73 20 6f 66 20 48 | 61 6e 6f 69 20 2d 20 55 |ers of H|anoi - U|
|000001b0| 70 6c 6f 61 64 65 64 20 | 66 72 6f 6d 20 44 65 6c |ploaded |from Del|
|000001c0| 70 68 69 20 62 79 20 4a | 65 66 66 20 53 68 75 6c |phi by J|eff Shul|
|000001d0| 6d 61 6e 5d 0a 0a 4e 61 | 6d 65 3a 20 54 4f 57 45 |man]..Na|me: TOWE|
|000001e0| 52 53 20 4f 46 20 48 41 | 4e 4f 49 0a 44 61 74 65 |RS OF HA|NOI.Date|
|000001f0| 3a 20 33 2d 41 50 52 2d | 31 39 38 38 20 31 37 3a |: 3-APR-|1988 17:|
|00000200| 30 39 20 62 79 20 53 4f | 43 43 45 52 4b 49 4e 47 |09 by SO|CCERKING|
|00000210| 0a 0a 54 68 69 73 20 69 | 73 20 74 68 65 20 73 61 |..This i|s the sa|
|00000220| 6d 65 20 6f 6c 64 20 74 | 6f 77 65 72 73 20 6f 66 |me old t|owers of|
|00000230| 20 68 61 6e 6f 69 20 70 | 72 6f 62 6c 65 6d 20 62 | hanoi p|roblem b|
|00000240| 75 74 20 77 69 74 68 20 | 61 20 66 65 77 20 6e 65 |ut with |a few ne|
|00000250| 77 20 74 77 69 73 74 73 | 2e 0a 49 66 20 79 6f 75 |w twists|..If you|
|00000260| 20 61 72 65 20 69 6e 74 | 65 72 65 73 74 65 64 20 | are int|erested |
|00000270| 79 6f 75 20 63 61 6e 20 | 63 68 65 63 6b 20 6f 75 |you can |check ou|
|00000280| 74 20 74 68 65 20 73 6f | 75 72 63 65 20 63 6f 64 |t the so|urce cod|
|00000290| 65 2e 20 20 54 68 69 73 | 20 70 72 6f 67 72 61 6d |e. This| program|
|000002a0| 0a 69 73 20 73 69 6d 70 | 6c 79 20 66 6f 72 20 79 |.is simp|ly for y|
|000002b0| 6f 75 72 20 65 6e 6a 6f | 79 6d 65 6e 74 20 61 6e |our enjo|yment an|
|000002c0| 64 20 63 75 72 69 6f 73 | 69 74 79 2e 20 20 49 20 |d curios|ity. I |
|000002d0| 68 6f 70 65 20 79 6f 75 | 20 65 6e 6a 6f 79 20 69 |hope you| enjoy i|
|000002e0| 74 2e 20 20 44 6f 65 73 | 0a 6e 6f 74 20 72 75 6e |t. Does|.not run|
|000002f0| 20 75 6e 64 65 72 20 4d | 75 6c 74 69 46 69 6e 64 | under M|ultiFind|
|00000300| 65 72 2e 0a 0a 5b 4d 6f | 64 65 72 61 74 6f 72 27 |er...[Mo|derator'|
|00000310| 73 20 4e 6f 74 65 3a 20 | 54 68 65 20 61 70 70 6c |s Note: |The appl|
|00000320| 69 63 61 74 69 6f 6e 20 | 61 6e 64 20 61 20 50 61 |ication |and a Pa|
|00000330| 63 6b 49 74 20 61 72 63 | 68 69 76 65 20 6f 66 20 |ckIt arc|hive of |
|00000340| 74 68 65 20 73 6f 75 72 | 63 65 0a 20 61 6e 64 20 |the sour|ce. and |
|00000350| 4c 69 67 68 74 73 70 65 | 65 64 20 50 61 73 63 61 |Lightspe|ed Pasca|
|00000360| 6c 20 70 72 6f 6a 65 63 | 74 20 68 61 76 65 20 62 |l projec|t have b|
|00000370| 65 65 6e 20 70 6f 73 74 | 65 64 20 69 6e 20 63 6f |een post|ed in co|
|00000380| 6d 70 2e 62 69 6e 61 72 | 69 65 73 2e 6d 61 63 2e |mp.binar|ies.mac.|
|00000390| 5d 0a 0a 2d 2d 2d 0a 23 | 21 20 2f 62 69 6e 2f 73 |]..---.#|! /bin/s|
|000003a0| 68 0a 23 20 54 68 69 73 | 20 69 73 20 61 20 73 68 |h.# This| is a sh|
|000003b0| 65 6c 6c 20 61 72 63 68 | 69 76 65 2c 20 6d 65 61 |ell arch|ive, mea|
|000003c0| 6e 69 6e 67 3a 0a 23 20 | 31 2e 20 52 65 6d 6f 76 |ning:.# |1. Remov|
|000003d0| 65 20 65 76 65 72 79 74 | 68 69 6e 67 20 61 62 6f |e everyt|hing abo|
|000003e0| 76 65 20 74 68 65 20 23 | 21 20 2f 62 69 6e 2f 73 |ve the #|! /bin/s|
|000003f0| 68 20 6c 69 6e 65 2e 0a | 23 20 32 2e 20 53 61 76 |h line..|# 2. Sav|
|00000400| 65 20 74 68 65 20 72 65 | 73 75 6c 74 69 6e 67 20 |e the re|sulting |
|00000410| 74 65 78 74 20 69 6e 20 | 61 20 66 69 6c 65 2e 0a |text in |a file..|
|00000420| 23 20 33 2e 20 45 78 65 | 63 75 74 65 20 74 68 65 |# 3. Exe|cute the|
|00000430| 20 66 69 6c 65 20 77 69 | 74 68 20 2f 62 69 6e 2f | file wi|th /bin/|
|00000440| 73 68 20 28 6e 6f 74 20 | 63 73 68 29 20 74 6f 20 |sh (not |csh) to |
|00000450| 63 72 65 61 74 65 20 74 | 68 65 20 66 69 6c 65 73 |create t|he files|
|00000460| 3a 0a 23 09 54 6f 77 65 | 72 73 2e 6c 70 0a 23 20 |:.#.Towe|rs.lp.# |
|00000470| 54 68 69 73 20 61 72 63 | 68 69 76 65 20 63 72 65 |This arc|hive cre|
|00000480| 61 74 65 64 3a 20 57 65 | 64 20 4d 61 79 20 20 34 |ated: We|d May 4|
|00000490| 20 30 38 3a 31 36 3a 30 | 34 20 31 39 38 38 0a 23 | 08:16:0|4 1988.#|
|000004a0| 20 42 79 3a 09 52 6f 67 | 65 72 20 4c 2e 20 4c 6f | By:.Rog|er L. Lo|
|000004b0| 6e 67 20 28 6d 61 63 69 | 6e 74 6f 73 68 40 64 68 |ng (maci|ntosh@dh|
|000004c0| 77 36 38 6b 2e 63 74 73 | 2e 63 6f 6d 29 0a 65 78 |w68k.cts|.com).ex|
|000004d0| 70 6f 72 74 20 50 41 54 | 48 3b 20 50 41 54 48 3d |port PAT|H; PATH=|
|000004e0| 2f 62 69 6e 3a 24 50 41 | 54 48 0a 65 63 68 6f 20 |/bin:$PA|TH.echo |
|000004f0| 73 68 61 72 3a 20 65 78 | 74 72 61 63 74 69 6e 67 |shar: ex|tracting|
|00000500| 20 22 27 54 6f 77 65 72 | 73 2e 6c 70 27 22 20 27 | "'Tower|s.lp'" '|
|00000510| 28 32 31 35 35 32 20 63 | 68 61 72 61 63 74 65 72 |(21552 c|haracter|
|00000520| 73 29 27 0a 69 66 20 74 | 65 73 74 20 2d 66 20 27 |s)'.if t|est -f '|
|00000530| 54 6f 77 65 72 73 2e 6c | 70 27 0a 74 68 65 6e 0a |Towers.l|p'.then.|
|00000540| 09 65 63 68 6f 20 73 68 | 61 72 3a 20 77 69 6c 6c |.echo sh|ar: will|
|00000550| 20 6e 6f 74 20 6f 76 65 | 72 2d 77 72 69 74 65 20 | not ove|r-write |
|00000560| 65 78 69 73 74 69 6e 67 | 20 66 69 6c 65 20 22 27 |existing| file "'|
|00000570| 54 6f 77 65 72 73 2e 6c | 70 27 22 0a 65 6c 73 65 |Towers.l|p'".else|
|00000580| 0a 73 65 64 20 27 73 2f | 5e 58 2f 2f 27 20 3c 3c |.sed 's/|^X//' <<|
|00000590| 20 5c 53 48 41 52 5f 45 | 4f 46 20 3e 20 27 54 6f | \SHAR_E|OF > 'To|
|000005a0| 77 65 72 73 2e 6c 70 27 | 0a 58 50 52 4f 47 52 41 |wers.lp'|.XPROGRA|
|000005b0| 4d 20 52 6f 74 42 61 72 | 63 62 3b 0a 58 7b 4e 4f |M RotBar|cb;.X{NO|
|000005c0| 54 45 53 3a 7d 0a 58 7b | 2a 41 20 62 61 72 20 69 |TES:}.X{|*A bar i|
|000005d0| 73 20 61 20 72 69 6e 67 | 20 6f 6e 20 61 20 70 65 |s a ring| on a pe|
|000005e0| 67 7d 0a 58 7b 2a 41 6c | 6c 20 62 61 72 73 20 75 |g}.X{*Al|l bars u|
|000005f0| 73 65 20 74 68 65 20 73 | 61 6d 65 20 62 69 74 6d |se the s|ame bitm|
|00000600| 61 70 20 74 6f 20 72 65 | 73 74 6f 72 65 20 77 68 |ap to re|store wh|
|00000610| 61 74 20 69 74 20 68 61 | 73 20 65 72 61 73 65 64 |at it ha|s erased|
|00000620| 7d 0a 58 7b 2a 41 20 6d | 6f 76 65 20 69 73 20 77 |}.X{*A m|ove is w|
|00000630| 68 65 6e 20 61 20 62 61 | 72 20 67 6f 65 73 20 66 |hen a ba|r goes f|
|00000640| 72 6f 6d 20 6f 6e 65 20 | 70 65 67 20 74 6f 20 61 |rom one |peg to a|
|00000650| 6e 74 68 65 72 7d 0a 58 | 09 43 4f 4e 53 54 0a 58 |nther}.X|.CONST.X|
|00000660| 09 09 6b 41 6e 67 6c 65 | 20 3d 20 39 3b 20 7b 61 |..kAngle| = 9; {a|
|00000670| 6e 67 6c 65 20 62 65 74 | 77 65 65 6e 20 65 61 63 |ngle bet|ween eac|
|00000680| 68 20 74 75 72 6e 20 6f | 66 20 74 68 65 20 62 61 |h turn o|f the ba|
|00000690| 72 7d 0a 58 09 09 6b 4e | 75 6d 54 75 72 6e 20 3d |r}.X..kN|umTurn =|
|000006a0| 20 35 3b 20 7b 39 30 20 | 64 69 76 20 39 7d 0a 58 | 5; {90 |div 9}.X|
|000006b0| 09 09 6b 42 61 73 65 20 | 3d 20 31 30 3b 20 7b 6e |..kBase |= 10; {n|
|000006c0| 75 6d 74 75 72 6e 20 2a | 20 32 7d 0a 58 09 09 6b |umturn *| 2}.X..k|
|000006d0| 42 61 72 57 69 64 20 3d | 20 34 3b 20 7b 77 69 64 |BarWid =| 4; {wid|
|000006e0| 74 68 20 6f 66 20 62 61 | 72 20 64 69 76 20 32 7d |th of ba|r div 2}|
|000006f0| 0a 58 09 09 6b 4e 75 6d | 46 72 61 6d 65 20 3d 20 |.X..kNum|Frame = |
|00000700| 34 30 3b 20 7b 6e 75 6d | 74 75 72 6e 20 2a 20 38 |40; {num|turn * 8|
|00000710| 20 7d 0a 58 09 09 6b 50 | 69 20 3d 20 33 2e 31 34 | }.X..kP|i = 3.14|
|00000720| 31 35 39 32 36 35 34 3b | 0a 58 09 09 6b 41 6c 74 |1592654;|.X..kAlt|
|00000730| 20 3d 20 36 37 3b 20 7b | 48 65 69 67 68 74 20 77 | = 67; {|Height w|
|00000740| 68 65 6e 20 62 61 72 20 | 73 68 6f 75 6c 64 20 73 |hen bar |should s|
|00000750| 77 69 74 63 68 20 64 69 | 72 65 63 74 69 6f 6e 73 |witch di|rections|
|00000760| 7d 0a 58 09 09 6b 50 65 | 67 31 20 3d 20 38 30 3b |}.X..kPe|g1 = 80;|
|00000770| 20 7b 50 6f 73 20 6f 66 | 20 70 65 67 20 41 7d 0a | {Pos of| peg A}.|
|00000780| 58 09 09 6b 50 65 67 32 | 20 3d 20 32 35 36 3b 20 |X..kPeg2| = 256; |
|00000790| 7b 50 6f 73 20 6f 66 20 | 70 65 67 20 42 7d 0a 58 |{Pos of |peg B}.X|
|000007a0| 09 09 6b 50 65 67 33 20 | 3d 20 34 33 32 3b 20 7b |..kPeg3 |= 432; {|
|000007b0| 50 6f 73 20 6f 66 20 70 | 65 67 20 43 7d 0a 58 09 |Pos of p|eg C}.X.|
|000007c0| 09 6b 56 65 6c 20 3d 20 | 34 3b 20 7b 56 65 6c 6f |.kVel = |4; {Velo|
|000007d0| 63 69 74 79 20 61 74 20 | 77 68 69 63 68 20 70 65 |city at |which pe|
|000007e0| 67 73 20 74 72 61 76 65 | 6c 7d 0a 58 09 09 6b 4d |gs trave|l}.X..kM|
|000007f0| 61 78 42 61 72 20 3d 20 | 36 3b 20 7b 4d 61 78 69 |axBar = |6; {Maxi|
|00000800| 6d 75 6e 20 6e 75 6d 62 | 65 72 20 6f 66 20 62 61 |mun numb|er of ba|
|00000810| 72 73 7d 0a 58 09 09 6b | 4d 61 78 4d 6f 76 65 20 |rs}.X..k|MaxMove |
|00000820| 3d 20 32 3b 20 7b 4d 61 | 78 69 6d 75 6e 20 6e 75 |= 2; {Ma|ximun nu|
|00000830| 6d 62 65 72 20 6f 66 20 | 62 61 72 73 20 6d 6f 76 |mber of |bars mov|
|00000840| 69 6e 67 20 61 74 20 6f | 6e 65 20 74 69 6d 65 7d |ing at o|ne time}|
|00000850| 0a 58 09 09 6b 4d 61 78 | 51 75 65 20 3d 20 31 30 |.X..kMax|Que = 10|
|00000860| 30 3b 20 7b 6d 61 78 69 | 6d 75 6e 20 6e 75 6d 62 |0; {maxi|mun numb|
|00000870| 65 72 20 6f 66 20 65 6c | 65 6d 65 6e 74 73 20 69 |er of el|ements i|
|00000880| 6e 20 71 75 65 7d 0a 58 | 09 09 6b 44 4c 4f 47 20 |n que}.X|..kDLOG |
|00000890| 3d 20 31 32 39 3b 20 7b | 44 69 61 6c 6f 67 20 49 |= 129; {|Dialog I|
|000008a0| 44 7d 0a 58 0a 58 09 54 | 59 50 45 0a 58 09 09 74 |D}.X.X.T|YPE.X..t|
|000008b0| 50 65 67 20 3d 20 28 41 | 2c 20 42 2c 20 43 29 3b |Peg = (A|, B, C);|
|000008c0| 0a 58 09 09 74 42 61 72 | 20 3d 20 30 2e 2e 6b 4d |.X..tBar| = 0..kM|
|000008d0| 61 78 42 61 72 3b 0a 58 | 09 09 74 4d 6f 76 65 20 |axBar;.X|..tMove |
|000008e0| 3d 20 30 2e 2e 6b 4d 61 | 78 4d 6f 76 65 3b 0a 58 |= 0..kMa|xMove;.X|
|000008f0| 09 09 74 51 75 65 4e 75 | 6d 20 3d 20 31 2e 2e 6b |..tQueNu|m = 1..k|
|00000900| 4d 61 78 51 75 65 3b 0a | 58 09 09 74 46 72 61 6d |MaxQue;.|X..tFram|
|00000910| 65 20 3d 20 30 2e 2e 6b | 4e 75 6d 46 72 61 6d 65 |e = 0..k|NumFrame|
|00000920| 3b 0a 58 0a 58 09 09 74 | 45 6c 65 6d 65 6e 74 20 |;.X.X..t|Element |
|00000930| 3d 20 52 45 43 4f 52 44 | 20 7b 45 61 63 68 20 65 |= RECORD| {Each e|
|00000940| 6c 65 6d 65 6e 74 20 69 | 6e 20 74 68 65 20 71 75 |lement i|n the qu|
|00000950| 65 75 65 20 68 6f 6c 64 | 73 20 61 20 6d 6f 76 65 |eue hold|s a move|
|00000960| 7d 0a 58 09 09 09 09 66 | 46 72 6f 6d 20 3a 20 74 |}.X....f|From : t|
|00000970| 50 65 67 3b 0a 58 09 09 | 09 09 66 54 6f 20 3a 20 |Peg;.X..|..fTo : |
|00000980| 74 50 65 67 3b 0a 58 09 | 09 09 45 4e 44 3b 0a 58 |tPeg;.X.|..END;.X|
|00000990| 0a 58 7b 41 20 73 74 61 | 63 6b 20 68 6f 6c 64 73 |.X{A sta|ck holds|
|000009a0| 20 74 68 65 20 62 61 72 | 73 20 6f 6e 20 65 61 63 | the bar|s on eac|
|000009b0| 68 20 70 65 67 7d 0a 58 | 09 09 74 53 74 61 63 6b |h peg}.X|..tStack|
|000009c0| 20 3d 20 52 45 43 4f 52 | 44 0a 58 09 09 09 09 66 | = RECOR|D.X....f|
|000009d0| 45 6c 65 6d 65 6e 74 73 | 20 3a 20 41 52 52 41 59 |Elements| : ARRAY|
|000009e0| 5b 74 42 61 72 5d 20 4f | 46 20 74 42 61 72 3b 0a |[tBar] O|F tBar;.|
|000009f0| 58 09 09 09 09 66 54 6f | 73 20 3a 20 74 42 61 72 |X....fTo|s : tBar|
|00000a00| 3b 0a 58 09 09 09 45 4e | 44 3b 0a 58 0a 58 7b 54 |;.X...EN|D;.X.X{T|
|00000a10| 68 65 20 51 75 65 20 68 | 6f 6c 64 73 20 74 68 65 |he Que h|olds the|
|00000a20| 20 6d 6f 76 65 73 20 77 | 61 69 74 69 6e 67 20 74 | moves w|aiting t|
|00000a30| 6f 20 62 65 20 70 72 65 | 66 6f 72 6d 65 64 7d 0a |o be pre|formed}.|
|00000a40| 58 09 09 74 51 75 65 75 | 65 20 3d 20 52 45 43 4f |X..tQueu|e = RECO|
|00000a50| 52 44 0a 58 09 09 09 09 | 66 45 6c 65 6d 65 6e 74 |RD.X....|fElement|
|00000a60| 73 20 3a 20 41 52 52 41 | 59 5b 74 51 75 65 4e 75 |s : ARRA|Y[tQueNu|
|00000a70| 6d 5d 20 4f 46 20 74 45 | 6c 65 6d 65 6e 74 3b 0a |m] OF tE|lement;.|
|00000a80| 58 09 09 09 09 66 46 72 | 6f 6e 74 2c 20 66 52 65 |X....fFr|ont, fRe|
|00000a90| 61 72 20 3a 20 74 51 75 | 65 4e 75 6d 3b 0a 58 09 |ar : tQu|eNum;.X.|
|00000aa0| 09 09 45 4e 44 3b 0a 58 | 0a 58 7b 48 6f 6c 64 20 |..END;.X|.X{Hold |
|00000ab0| 74 68 65 20 69 6e 66 6f | 72 6d 61 74 69 6f 6e 20 |the info|rmation |
|00000ac0| 66 6f 72 20 65 61 63 68 | 20 66 72 61 6d 65 20 6f |for each| frame o|
|00000ad0| 66 20 61 20 62 61 72 7d | 0a 58 09 09 74 42 61 72 |f a bar}|.X..tBar|
|00000ae0| 44 61 74 61 20 3d 20 52 | 45 43 4f 52 44 0a 58 09 |Data = R|ECORD.X.|
|00000af0| 09 09 09 66 52 67 6e 20 | 3a 20 52 67 6e 48 61 6e |...fRgn |: RgnHan|
|00000b00| 64 6c 65 3b 0a 58 09 09 | 09 09 66 4f 72 67 20 3a |dle;.X..|..fOrg :|
|00000b10| 20 70 6f 69 6e 74 3b 0a | 58 09 09 09 45 4e 44 3b | point;.|X...END;|
|00000b20| 0a 58 0a 58 7b 48 6f 6c | 64 20 74 68 65 20 69 6e |.X.X{Hol|d the in|
|00000b30| 66 6f 72 6d 61 74 69 6f | 6e 20 66 6f 72 20 74 68 |formatio|n for th|
|00000b40| 65 20 62 61 72 7d 0a 58 | 7b 4e 4f 54 45 53 3a 7d |e bar}.X|{NOTES:}|
|00000b50| 0a 58 7b 2a 4d 65 6d 6f | 72 79 20 69 73 20 72 61 |.X{*Memo|ry is ra|
|00000b60| 64 69 63 61 6c 6c 79 20 | 73 61 63 72 69 66 69 63 |dically |sacrific|
|00000b70| 65 64 20 66 6f 72 20 73 | 70 65 65 64 7d 0a 58 7b |ed for s|peed}.X{|
|00000b80| 2a 66 41 6c 6d 6f 73 74 | 20 69 73 20 75 73 65 64 |*fAlmost| is used|
|00000b90| 20 74 6f 20 74 65 6c 6c | 20 4d 6f 76 65 42 61 72 | to tell| MoveBar|
|00000ba0| 73 20 74 68 61 74 20 74 | 68 65 20 62 61 72 20 68 |s that t|he bar h|
|00000bb0| 61 73 20 72 65 61 63 68 | 65 64 20 69 74 73 20 6c |as reach|ed its l|
|00000bc0| 6f 63 20 62 75 74 7d 0a | 58 7b 20 20 69 74 20 73 |oc but}.|X{ it s|
|00000bd0| 74 69 6c 6c 20 6e 65 65 | 64 73 20 74 6f 20 73 70 |till nee|ds to sp|
|00000be0| 69 6e 7d 0a 58 7b 2a 57 | 68 65 6e 20 61 20 62 61 |in}.X{*W|hen a ba|
|00000bf0| 72 20 69 73 20 61 74 20 | 73 6f 6d 65 20 70 65 67 |r is at |some peg|
|00000c00| 20 61 6e 64 20 74 68 65 | 20 62 61 72 20 61 62 6f | and the| bar abo|
|00000c10| 76 65 20 73 70 69 6e 73 | 20 69 74 20 77 69 6c 6c |ve spins| it will|
|00000c20| 7d 0a 58 7b 20 20 65 72 | 61 73 65 20 74 68 65 20 |}.X{ er|ase the |
|00000c30| 62 61 72 73 20 75 6e 64 | 65 72 6e 65 61 74 68 20 |bars und|erneath |
|00000c40| 69 74 20 62 65 63 61 75 | 73 65 20 74 68 65 79 20 |it becau|se they |
|00000c50| 61 72 65 20 6e 6f 74 20 | 70 61 72 74 20 6f 66 20 |are not |part of |
|00000c60| 67 53 61 76 65 50 6f 72 | 74 7d 0a 58 7b 20 20 54 |gSavePor|t}.X{ T|
|00000c70| 6f 20 66 69 78 20 74 68 | 69 73 20 77 65 20 73 61 |o fix th|is we sa|
|00000c80| 76 65 20 74 68 65 20 62 | 69 74 73 20 75 6e 64 65 |ve the b|its unde|
|00000c90| 72 6e 65 61 74 68 20 74 | 68 65 20 62 61 72 20 61 |rneath t|he bar a|
|00000ca0| 74 20 61 20 70 65 67 20 | 69 6e 20 66 53 61 76 65 |t a peg |in fSave|
|00000cb0| 42 69 74 73 7d 0a 58 7b | 20 20 61 6e 64 20 72 65 |Bits}.X{| and re|
|00000cc0| 73 74 6f 72 65 20 74 68 | 65 6d 20 61 66 74 65 72 |store th|em after|
|00000cd0| 20 74 68 65 20 70 65 67 | 20 6d 6f 76 65 73 7d 0a | the peg| moves}.|
|00000ce0| 58 7b 2a 41 73 20 6d 75 | 63 68 20 69 6e 66 6f 72 |X{*As mu|ch infor|
|00000cf0| 6d 61 74 69 6f 6e 20 74 | 6f 20 72 65 61 6c 61 74 |mation t|o realat|
|00000d00| 65 64 20 74 6f 20 61 20 | 62 61 72 20 61 73 20 70 |ed to a |bar as p|
|00000d10| 6f 73 73 69 62 6c 65 20 | 69 73 20 73 74 6f 72 65 |ossible |is store|
|00000d20| 64 20 69 6e 20 74 42 61 | 72 49 6e 66 6f 7d 0a 58 |d in tBa|rInfo}.X|
|00000d30| 09 09 74 42 61 72 49 6e | 66 6f 20 3d 20 52 45 43 |..tBarIn|fo = REC|
|00000d40| 4f 52 44 0a 58 09 09 09 | 09 66 46 72 61 6d 65 20 |ORD.X...|.fFrame |
|00000d50| 3a 20 41 52 52 41 59 5b | 74 46 72 61 6d 65 5d 20 |: ARRAY[|tFrame] |
|00000d60| 4f 46 20 74 42 61 72 44 | 61 74 61 3b 20 7b 48 6f |OF tBarD|ata; {Ho|
|00000d70| 6c 64 20 74 68 65 20 66 | 72 61 6d 65 73 20 6f 66 |ld the f|rames of|
|00000d80| 20 74 68 65 20 62 61 72 | 7d 0a 58 09 09 09 09 66 | the bar|}.X....f|
|00000d90| 49 6e 64 20 3a 20 74 46 | 72 61 6d 65 3b 20 20 20 |Ind : tF|rame; |
|00000da0| 20 20 7b 48 6f 6c 64 20 | 74 68 65 20 63 75 72 72 | {Hold |the curr|
|00000db0| 65 6e 74 20 69 6e 64 65 | 78 20 69 6e 74 6f 20 66 |ent inde|x into f|
|00000dc0| 46 72 61 6d 65 7d 0a 58 | 09 09 09 09 66 4c 61 73 |Frame}.X|....fLas|
|00000dd0| 74 49 6e 64 20 3a 20 74 | 46 72 61 6d 65 3b 20 7b |tInd : t|Frame; {|
|00000de0| 48 6f 6c 64 20 74 68 65 | 20 6c 61 73 74 20 69 6e |Hold the| last in|
|00000df0| 64 65 78 20 69 6e 74 6f | 20 74 68 65 20 66 46 72 |dex into| the fFr|
|00000e00| 61 6d 65 7d 0a 58 09 09 | 09 09 66 49 6e 64 46 69 |ame}.X..|..fIndFi|
|00000e10| 6c 6c 20 3a 20 74 46 72 | 61 6d 65 3b 20 7b 48 6f |ll : tFr|ame; {Ho|
|00000e20| 6c 64 20 74 68 65 20 69 | 6e 64 65 78 20 74 6f 20 |ld the i|ndex to |
|00000e30| 74 68 65 20 6c 61 73 74 | 20 68 6f 72 7a 20 66 72 |the last| horz fr|
|00000e40| 61 6d 65 7d 0a 58 09 09 | 09 09 66 52 61 64 20 3a |ame}.X..|..fRad :|
|00000e50| 20 69 6e 74 65 67 65 72 | 3b 20 20 20 20 7b 48 6f | integer|; {Ho|
|00000e60| 6c 64 20 74 68 65 20 72 | 61 64 69 75 73 20 6f 66 |ld the r|adius of|
|00000e70| 20 74 68 65 20 62 61 72 | 7d 0a 58 09 09 09 09 66 | the bar|}.X....f|
|00000e80| 4c 6f 63 20 3a 20 70 6f | 69 6e 74 3b 20 20 20 20 |Loc : po|int; |
|00000e90| 20 20 7b 48 6f 6c 64 20 | 74 68 65 20 63 75 72 72 | {Hold |the curr|
|00000ea0| 65 6e 74 20 6c 6f 63 61 | 74 69 6f 6e 20 6f 66 20 |ent loca|tion of |
|00000eb0| 74 68 65 20 62 61 72 7d | 0a 58 09 09 09 09 66 44 |the bar}|.X....fD|
|00000ec0| 65 73 74 4c 6f 63 20 3a | 20 70 6f 69 6e 74 3b 20 |estLoc :| point; |
|00000ed0| 20 7b 48 6f 6c 64 20 74 | 68 65 20 64 65 73 74 69 | {Hold t|he desti|
|00000ee0| 6e 61 74 69 6f 6e 20 6c | 6f 63 61 74 69 6f 6e 7d |nation l|ocation}|
|00000ef0| 0a 58 09 09 09 09 66 56 | 65 6c 20 3a 20 70 6f 69 |.X....fV|el : poi|
|00000f00| 6e 74 3b 20 20 20 20 20 | 20 7b 48 6f 6c 64 20 74 |nt; | {Hold t|
|00000f10| 68 65 20 63 75 72 72 65 | 6e 74 20 76 65 6c 6f 63 |he curre|nt veloc|
|00000f20| 69 74 79 20 6f 66 20 74 | 68 65 20 62 61 72 7d 0a |ity of t|he bar}.|
|00000f30| 58 09 09 09 09 66 4f 6c | 64 52 65 63 74 20 3a 20 |X....fOl|dRect : |
|00000f40| 72 65 63 74 3b 20 20 20 | 7b 48 6f 6c 64 20 74 68 |rect; |{Hold th|
|00000f50| 65 20 70 72 65 76 69 6f | 75 73 20 70 6f 73 69 74 |e previo|us posit|
|00000f60| 69 6f 6e 20 6f 66 20 74 | 68 65 20 62 61 72 7d 0a |ion of t|he bar}.|
|00000f70| 58 09 09 09 09 66 43 6f | 6c 6f 72 20 3a 20 50 61 |X....fCo|lor : Pa|
|00000f80| 74 74 65 72 6e 3b 20 20 | 7b 48 6f 6c 64 20 74 68 |ttern; |{Hold th|
|00000f90| 65 20 63 6f 6c 6f 72 20 | 6f 66 20 74 68 65 20 62 |e color |of the b|
|00000fa0| 61 72 7d 0a 58 09 09 09 | 09 66 41 6c 6d 6f 73 74 |ar}.X...|.fAlmost|
|00000fb0| 20 3a 20 62 6f 6f 6c 65 | 61 6e 3b 20 7b 55 73 65 | : boole|an; {Use|
|00000fc0| 64 20 74 6f 20 74 65 6c | 6c 20 73 6f 6d 65 20 70 |d to tel|l some p|
|00000fd0| 72 6f 63 20 74 68 61 74 | 20 74 68 65 20 62 61 72 |roc that| the bar|
|00000fe0| 20 73 74 69 6c 6c 20 6e | 65 65 64 73 20 74 6f 20 | still n|eeds to |
|00000ff0| 73 70 69 6e 7d 0a 58 09 | 09 09 09 66 53 61 76 65 |spin}.X.|...fSave|
|00001000| 42 69 74 73 20 3a 20 42 | 69 74 4d 61 70 3b 20 7b |Bits : B|itMap; {|
|00001010| 55 73 65 64 20 74 6f 20 | 73 61 76 65 20 74 68 65 |Used to |save the|
|00001020| 20 62 69 74 73 20 6f 66 | 20 67 53 61 76 65 50 6f | bits of| gSavePo|
|00001030| 72 74 7d 0a 58 09 09 09 | 09 66 54 6f 20 3a 20 74 |rt}.X...|.fTo : t|
|00001040| 50 65 67 3b 20 20 20 20 | 20 20 20 20 7b 44 65 73 |Peg; | {Des|
|00001050| 74 69 6e 61 74 69 6f 6e | 20 70 65 67 7d 0a 58 09 |tination| peg}.X.|
|00001060| 09 09 45 4e 44 3b 0a 58 | 0a 58 7b 54 68 69 73 20 |..END;.X|.X{This |
|00001070| 72 65 63 6f 72 64 20 73 | 74 6f 72 65 73 20 74 68 |record s|tores th|
|00001080| 65 20 73 74 61 63 6b 20 | 6f 66 20 62 61 72 73 20 |e stack |of bars |
|00001090| 6f 6e 20 69 74 7d 0a 58 | 7b 61 6e 64 20 69 66 20 |on it}.X|{and if |
|000010a0| 74 68 69 73 20 70 65 67 | 20 69 73 20 66 72 65 65 |this peg| is free|
|000010b0| 20 74 6f 20 6d 6f 76 65 | 20 61 20 62 61 72 20 74 | to move| a bar t|
|000010c0| 6f 7d 0a 58 09 09 74 50 | 65 67 49 6e 66 6f 20 3d |o}.X..tP|egInfo =|
|000010d0| 20 52 45 43 4f 52 44 0a | 58 09 09 09 09 66 46 72 | RECORD.|X....fFr|
|000010e0| 65 65 20 3a 20 62 6f 6f | 6c 65 61 6e 3b 20 7b 50 |ee : boo|lean; {P|
|000010f0| 65 67 20 61 76 61 69 6c | 61 62 6c 65 3f 7d 0a 58 |eg avail|able?}.X|
|00001100| 09 09 09 09 66 42 61 72 | 73 20 3a 20 74 53 74 61 |....fBar|s : tSta|
|00001110| 63 6b 3b 20 20 7b 53 74 | 61 63 6b 20 6f 66 20 62 |ck; {St|ack of b|
|00001120| 61 72 73 7d 0a 58 09 09 | 09 45 4e 44 3b 0a 58 0a |ars}.X..|.END;.X.|
|00001130| 58 09 09 74 42 61 72 73 | 20 3d 20 41 52 52 41 59 |X..tBars| = ARRAY|
|00001140| 5b 74 42 61 72 5d 20 4f | 46 20 74 42 61 72 49 6e |[tBar] O|F tBarIn|
|00001150| 66 6f 3b 20 7b 48 6f 6c | 64 20 61 6c 6c 20 62 61 |fo; {Hol|d all ba|
|00001160| 72 73 7d 0a 58 09 09 74 | 50 65 67 73 20 3d 20 41 |rs}.X..t|Pegs = A|
|00001170| 52 52 41 59 5b 74 50 65 | 67 5d 20 4f 46 20 74 50 |RRAY[tPe|g] OF tP|
|00001180| 65 67 49 6e 66 6f 3b 20 | 7b 48 6f 6c 64 20 61 6c |egInfo; |{Hold al|
|00001190| 6c 20 50 65 67 73 7d 0a | 58 09 09 74 4d 6f 76 65 |l Pegs}.|X..tMove|
|000011a0| 42 61 72 73 20 3d 20 41 | 52 52 41 59 5b 74 4d 6f |Bars = A|RRAY[tMo|
|000011b0| 76 65 5d 20 4f 46 20 74 | 42 61 72 3b 20 7b 48 6f |ve] OF t|Bar; {Ho|
|000011c0| 6c 64 20 6d 6f 76 69 6e | 67 20 62 61 72 73 7d 0a |ld movin|g bars}.|
|000011d0| 58 09 09 74 50 65 67 50 | 6f 73 69 74 69 6f 6e 73 |X..tPegP|ositions|
|000011e0| 20 3d 20 41 52 52 41 59 | 5b 74 50 65 67 5d 20 4f | = ARRAY|[tPeg] O|
|000011f0| 46 20 69 6e 74 65 67 65 | 72 3b 20 7b 48 6f 6c 64 |F intege|r; {Hold|
|00001200| 20 70 6f 73 69 74 69 6f | 6e 73 20 6f 66 20 50 65 | positio|ns of Pe|
|00001210| 67 73 7d 0a 58 09 09 74 | 42 61 72 50 6f 73 69 74 |gs}.X..t|BarPosit|
|00001220| 69 6f 6e 73 20 3d 20 41 | 52 52 41 59 5b 74 42 61 |ions = A|RRAY[tBa|
|00001230| 72 5d 20 4f 46 20 69 6e | 74 65 67 65 72 3b 20 7b |r] OF in|teger; {|
|00001240| 48 6f 6c 64 20 70 6f 73 | 69 74 69 6f 6e 73 20 6f |Hold pos|itions o|
|00001250| 66 20 62 61 72 73 7d 0a | 58 0a 58 09 56 41 52 0a |f bars}.|X.X.VAR.|
|00001260| 58 09 09 67 53 61 76 65 | 50 6f 72 74 20 3a 20 47 |X..gSave|Port : G|
|00001270| 72 61 66 50 74 72 3b 20 | 7b 48 6f 6c 64 20 74 68 |rafPtr; |{Hold th|
|00001280| 65 20 70 6f 72 74 20 77 | 68 69 63 68 20 73 61 76 |e port w|hich sav|
|00001290| 65 73 20 74 68 65 20 69 | 6d 61 67 65 7d 0a 58 09 |es the i|mage}.X.|
|000012a0| 09 67 44 72 61 77 50 6f | 72 74 20 3a 20 47 72 61 |.gDrawPo|rt : Gra|
|000012b0| 66 50 74 72 3b 20 7b 48 | 6f 6c 64 20 74 68 65 20 |fPtr; {H|old the |
|000012c0| 70 6f 72 74 20 74 6f 20 | 64 72 61 77 20 69 6e 7d |port to |draw in}|
|000012d0| 0a 58 09 09 67 4e 75 6d | 42 61 72 73 20 3a 20 74 |.X..gNum|Bars : t|
|000012e0| 42 61 72 3b 20 20 20 20 | 20 7b 48 6f 6c 64 20 74 |Bar; | {Hold t|
|000012f0| 68 65 20 6e 75 6d 62 65 | 72 20 6f 66 20 62 61 72 |he numbe|r of bar|
|00001300| 73 7d 0a 58 09 09 67 42 | 61 72 20 3a 20 74 42 61 |s}.X..gB|ar : tBa|
|00001310| 72 73 3b 20 20 20 20 20 | 20 20 20 7b 48 6f 6c 64 |rs; | {Hold|
|00001320| 20 74 68 65 20 62 61 72 | 73 7d 0a 58 09 09 67 50 | the bar|s}.X..gP|
|00001330| 65 67 20 3a 20 74 50 65 | 67 73 3b 20 20 20 20 20 |eg : tPe|gs; |
|00001340| 20 20 20 7b 48 6f 6c 64 | 20 74 68 65 20 70 65 67 | {Hold| the peg|
|00001350| 73 7d 0a 58 09 09 67 4d | 6f 76 65 51 75 65 20 3a |s}.X..gM|oveQue :|
|00001360| 20 74 51 75 65 75 65 3b | 20 20 20 7b 48 6f 6c 64 | tQueue;| {Hold|
|00001370| 20 74 68 65 20 6d 6f 76 | 65 20 71 75 65 75 65 7d | the mov|e queue}|
|00001380| 0a 58 09 09 67 4d 6f 76 | 65 42 61 72 20 3a 20 74 |.X..gMov|eBar : t|
|00001390| 4d 6f 76 65 42 61 72 73 | 3b 20 7b 48 6f 6c 64 20 |MoveBars|; {Hold |
|000013a0| 74 68 65 20 6d 6f 76 69 | 6e 67 20 62 61 72 73 7d |the movi|ng bars}|
|000013b0| 0a 58 09 09 67 50 65 67 | 50 6f 73 20 3a 20 74 50 |.X..gPeg|Pos : tP|
|000013c0| 65 67 50 6f 73 69 74 69 | 6f 6e 73 3b 20 7b 48 6f |egPositi|ons; {Ho|
|000013d0| 6c 64 20 74 68 65 20 70 | 65 67 20 70 6f 73 69 74 |ld the p|eg posit|
|000013e0| 69 6f 6e 73 7d 0a 58 09 | 09 67 42 61 72 50 6f 73 |ions}.X.|.gBarPos|
|000013f0| 20 3a 20 74 42 61 72 50 | 6f 73 69 74 69 6f 6e 73 | : tBarP|ositions|
|00001400| 3b 20 7b 48 6f 6c 64 20 | 74 68 65 20 62 61 72 20 |; {Hold |the bar |
|00001410| 70 6f 73 69 74 69 6f 6e | 73 7d 0a 58 09 09 67 45 |position|s}.X..gE|
|00001420| 72 61 73 65 52 67 6e 20 | 3a 20 52 67 6e 48 61 6e |raseRgn |: RgnHan|
|00001430| 64 6c 65 3b 20 20 20 7b | 48 6f 6c 64 20 74 68 65 |dle; {|Hold the|
|00001440| 20 65 72 61 73 65 20 72 | 65 67 69 6f 6e 20 69 6e | erase r|egion in|
|00001450| 20 50 6c 6f 74 42 61 72 | 20 74 6f 20 73 61 76 65 | PlotBar| to save|
|00001460| 20 74 69 6d 65 7d 0a 58 | 0a 58 7b 21 21 21 21 21 | time}.X|.X{!!!!!|
|00001470| 21 21 21 21 21 21 21 21 | 21 21 21 21 21 21 21 21 |!!!!!!!!|!!!!!!!!|
|00001480| 21 21 21 21 21 21 21 21 | 21 21 21 21 21 21 21 21 |!!!!!!!!|!!!!!!!!|
|00001490| 21 21 21 21 21 21 21 21 | 21 21 21 21 21 21 21 21 |!!!!!!!!|!!!!!!!!|
|000014a0| 21 21 21 21 21 21 21 21 | 21 21 21 21 21 21 21 21 |!!!!!!!!|!!!!!!!!|
|000014b0| 21 21 21 21 21 21 21 21 | 7d 0a 58 7b 53 74 61 63 |!!!!!!!!|}.X{Stac|
|000014c0| 6b 20 72 6f 75 74 69 6e | 65 73 7d 0a 58 7b 21 21 |k routin|es}.X{!!|
|000014d0| 21 21 21 21 21 21 21 21 | 21 21 21 21 21 21 21 21 |!!!!!!!!|!!!!!!!!|
|000014e0| 21 21 21 21 21 21 21 21 | 21 21 21 21 21 21 21 21 |!!!!!!!!|!!!!!!!!|
|000014f0| 21 21 21 21 21 21 21 21 | 21 21 21 21 21 21 21 21 |!!!!!!!!|!!!!!!!!|
|00001500| 21 21 21 21 21 21 21 21 | 21 21 21 21 21 21 21 21 |!!!!!!!!|!!!!!!!!|
|00001510| 21 21 21 21 21 21 21 21 | 21 21 21 7d 0a 58 0a 58 |!!!!!!!!|!!!}.X.X|
|00001520| 7b 2a 2a 2a 2a 2a 2a 2a | 2a 2a 2a 2a 2a 2a 2a 2a |{*******|********|
|00001530| 2a 2a 2a 2a 2a 2a 2a 2a | 2a 2a 2a 2a 2a 2a 2a 2a |********|********|
|00001540| 2a 2a 2a 2a 2a 2a 2a 2a | 2a 2a 2a 2a 2a 2a 2a 2a |********|********|
|00001550| 2a 2a 2a 2a 2a 2a 2a 2a | 2a 2a 2a 2a 2a 2a 2a 2a |********|********|
|00001560| 2a 2a 2a 2a 2a 2a 2a 2a | 2a 2a 2a 2a 2a 2a 7d 0a |********|******}.|
|00001570| 58 7b 49 6e 69 74 20 74 | 68 65 20 73 74 61 63 6b |X{Init t|he stack|
|00001580| 20 70 50 65 67 7d 0a 58 | 7b 2a 2a 2a 2a 2a 2a 2a | pPeg}.X|{*******|
|00001590| 2a 2a 2a 2a 2a 2a 2a 2a | 2a 2a 2a 2a 2a 2a 2a 2a |********|********|
|000015a0| 2a 2a 2a 2a 2a 2a 2a 2a | 2a 2a 2a 2a 2a 2a 2a 2a |********|********|
|000015b0| 2a 2a 2a 2a 2a 2a 2a 2a | 2a 2a 2a 2a 2a 2a 2a 2a |********|********|
|000015c0| 2a 2a 2a 2a 2a 2a 2a 2a | 2a 2a 2a 2a 2a 2a 2a 2a |********|********|
|000015d0| 2a 2a 2a 2a 2a 2a 7d 0a | 58 09 50 52 4f 43 45 44 |******}.|X.PROCED|
|000015e0| 55 52 45 20 49 6e 69 74 | 53 74 61 63 6b 20 28 70 |URE Init|Stack (p|
|000015f0| 50 65 67 20 3a 20 74 50 | 65 67 29 3b 0a 58 09 42 |Peg : tP|eg);.X.B|
|00001600| 45 47 49 4e 0a 58 09 09 | 67 50 65 67 5b 70 50 65 |EGIN.X..|gPeg[pPe|
|00001610| 67 5d 2e 66 42 61 72 73 | 2e 66 54 6f 73 20 3a 3d |g].fBars|.fTos :=|
|00001620| 20 30 3b 0a 58 09 45 4e | 44 3b 0a 58 0a 58 7b 2a | 0;.X.EN|D;.X.X{*|
|00001630| 2a 2a 2a 2a 2a 2a 2a 2a | 2a 2a 2a 2a 2a 2a 2a 2a |********|********|
|00001640| 2a 2a 2a 2a 2a 2a 2a 2a | 2a 2a 2a 2a 2a 2a 2a 2a |********|********|
|00001650| 2a 2a 2a 2a 2a 2a 2a 2a | 2a 2a 2a 2a 2a 2a 2a 2a |********|********|
|00001660| 2a 2a 2a 2a 2a 2a 2a 2a | 2a 2a 2a 2a 2a 2a 2a 2a |********|********|
|00001670| 2a 2a 2a 2a 2a 2a 2a 2a | 2a 2a 2a 2a 7d 0a 58 7b |********|****}.X{|
|00001680| 50 75 73 68 20 70 42 61 | 72 20 6f 6e 74 6f 20 74 |Push pBa|r onto t|
|00001690| 68 65 20 73 74 61 63 6b | 20 6f 66 20 70 50 65 67 |he stack| of pPeg|
|000016a0| 7d 0a 58 7b 2a 2a 2a 2a | 2a 2a 2a 2a 2a 2a 2a 2a |}.X{****|********|
|000016b0| 2a 2a 2a 2a 2a 2a 2a 2a | 2a 2a 2a 2a 2a 2a 2a 2a |********|********|
|000016c0| 2a 2a 2a 2a 2a 2a 2a 2a | 2a 2a 2a 2a 2a 2a 2a 2a |********|********|
|000016d0| 2a 2a 2a 2a 2a 2a 2a 2a | 2a 2a 2a 2a 2a 2a 2a 2a |********|********|
|000016e0| 2a 2a 2a 2a 2a 2a 2a 2a | 2a 2a 2a 2a 2a 2a 2a 2a |********|********|
|000016f0| 2a 7d 0a 58 09 50 52 4f | 43 45 44 55 52 45 20 50 |*}.X.PRO|CEDURE P|
|00001700| 75 73 68 20 28 70 42 61 | 72 20 3a 20 74 42 61 72 |ush (pBa|r : tBar|
|00001710| 3b 0a 58 09 09 09 09 09 | 09 09 09 09 70 50 65 67 |;.X.....|....pPeg|
|00001720| 20 3a 20 74 50 65 67 29 | 3b 0a 58 09 09 56 41 52 | : tPeg)|;.X..VAR|
|00001730| 0a 58 09 09 09 6c 54 65 | 6d 70 20 3a 20 72 65 63 |.X...lTe|mp : rec|
|00001740| 74 3b 0a 58 09 42 45 47 | 49 4e 0a 58 09 09 57 49 |t;.X.BEG|IN.X..WI|
|00001750| 54 48 20 67 50 65 67 5b | 70 50 65 67 5d 2e 66 42 |TH gPeg[|pPeg].fB|
|00001760| 61 72 73 20 44 4f 0a 58 | 09 09 09 42 45 47 49 4e |ars DO.X|...BEGIN|
|00001770| 0a 58 09 09 09 09 66 54 | 6f 73 20 3a 3d 20 66 54 |.X....fT|os := fT|
|00001780| 6f 73 20 2b 20 31 3b 0a | 58 09 09 09 09 66 45 6c |os + 1;.|X....fEl|
|00001790| 65 6d 65 6e 74 73 5b 66 | 54 6f 73 5d 20 3a 3d 20 |ements[f|Tos] := |
|000017a0| 70 42 61 72 3b 0a 58 09 | 09 09 45 4e 44 3b 0a 58 |pBar;.X.|..END;.X|
|000017b0| 09 09 57 49 54 48 20 67 | 42 61 72 5b 70 42 61 72 |..WITH g|Bar[pBar|
|000017c0| 5d 20 44 4f 20 7b 57 65 | 20 6d 75 73 74 20 44 72 |] DO {We| must Dr|
|000017d0| 61 77 20 74 68 65 20 62 | 61 72 20 69 6e 20 67 53 |aw the b|ar in gS|
|000017e0| 61 76 65 50 6f 72 74 7d | 0a 58 09 09 09 42 45 47 |avePort}|.X...BEG|
|000017f0| 49 4e 0a 58 7b 43 61 6c | 63 75 6c 61 74 65 20 69 |IN.X{Cal|culate i|
|00001800| 74 73 20 72 65 63 74 61 | 6e 67 6c 65 20 6f 6e 20 |ts recta|ngle on |
|00001810| 74 68 65 20 73 63 72 65 | 65 6e 7d 0a 58 09 09 09 |the scre|en}.X...|
|00001820| 09 53 65 74 52 65 63 74 | 28 6c 54 65 6d 70 2c 20 |.SetRect|(lTemp, |
|00001830| 66 4c 6f 63 2e 68 20 2d | 20 66 52 61 64 2c 20 66 |fLoc.h -| fRad, f|
|00001840| 4c 6f 63 2e 76 20 2d 20 | 34 2c 20 66 4c 6f 63 2e |Loc.v - |4, fLoc.|
|00001850| 68 20 2b 20 66 52 61 64 | 2c 20 66 4c 6f 63 2e 76 |h + fRad|, fLoc.v|
|00001860| 20 2b 20 34 29 3b 0a 58 | 09 09 09 09 53 65 74 50 | + 4);.X|....SetP|
|00001870| 6f 72 74 28 67 53 61 76 | 65 50 6f 72 74 29 3b 0a |ort(gSav|ePort);.|
|00001880| 58 7b 53 61 76 65 20 67 | 53 61 76 65 50 6f 72 74 |X{Save g|SavePort|
|00001890| 27 73 20 62 69 74 73 7d | 0a 58 09 09 09 09 43 6f |'s bits}|.X....Co|
|000018a0| 70 79 42 69 74 73 28 67 | 53 61 76 65 50 6f 72 74 |pyBits(g|SavePort|
|000018b0| 5e 2e 70 6f 72 74 42 69 | 74 73 2c 20 66 53 61 76 |^.portBi|ts, fSav|
|000018c0| 65 42 69 74 73 2c 20 6c | 54 65 6d 70 2c 20 66 53 |eBits, l|Temp, fS|
|000018d0| 61 76 65 42 69 74 73 2e | 62 6f 75 6e 64 73 2c 20 |aveBits.|bounds, |
|000018e0| 73 72 63 63 6f 70 79 2c | 20 4e 49 4c 29 3b 0a 58 |srccopy,| NIL);.X|
|000018f0| 09 09 09 09 46 69 6c 6c | 52 67 6e 28 66 46 72 61 |....Fill|Rgn(fFra|
|00001900| 6d 65 5b 66 49 6e 64 46 | 69 6c 6c 5d 2e 66 52 67 |me[fIndF|ill].fRg|
|00001910| 6e 2c 20 66 43 6f 6c 6f | 72 29 3b 20 7b 44 72 61 |n, fColo|r); {Dra|
|00001920| 77 20 69 74 20 69 6e 20 | 67 53 61 76 65 50 6f 72 |w it in |gSavePor|
|00001930| 74 7d 0a 58 09 09 09 09 | 53 65 74 50 6f 72 74 28 |t}.X....|SetPort(|
|00001940| 67 44 72 61 77 50 6f 72 | 74 29 3b 0a 58 09 09 09 |gDrawPor|t);.X...|
|00001950| 45 4e 44 3b 0a 58 09 45 | 4e 44 3b 0a 58 0a 58 7b |END;.X.E|ND;.X.X{|
|00001960| 2a 2a 2a 2a 2a 2a 2a 2a | 2a 2a 2a 2a 2a 2a 2a 2a |********|********|
|00001970| 2a 2a 2a 2a 2a 2a 2a 2a | 2a 2a 2a 2a 2a 2a 2a 2a |********|********|
|00001980| 2a 2a 2a 2a 2a 2a 2a 2a | 2a 2a 2a 2a 2a 2a 2a 2a |********|********|
|00001990| 2a 2a 2a 2a 2a 2a 2a 2a | 2a 2a 2a 2a 2a 2a 2a 2a |********|********|
|000019a0| 2a 2a 2a 2a 2a 2a 2a 2a | 2a 2a 2a 2a 2a 7d 0a 58 |********|*****}.X|
|000019b0| 7b 47 65 74 20 76 42 61 | 72 20 6f 75 74 20 6f 66 |{Get vBa|r out of|
|000019c0| 20 74 68 65 20 73 74 61 | 63 6b 20 6f 66 20 70 50 | the sta|ck of pP|
|000019d0| 65 67 7d 0a 58 7b 2a 2a | 2a 2a 2a 2a 2a 2a 2a 2a |eg}.X{**|********|
|000019e0| 2a 2a 2a 2a 2a 2a 2a 2a | 2a 2a 2a 2a 2a 2a 2a 2a |********|********|
|000019f0| 2a 2a 2a 2a 2a 2a 2a 2a | 2a 2a 2a 2a 2a 2a 2a 2a |********|********|
|00001a00| 2a 2a 2a 2a 2a 2a 2a 2a | 2a 2a 2a 2a 2a 2a 2a 2a |********|********|
|00001a10| 2a 2a 2a 2a 2a 2a 2a 2a | 2a 2a 2a 2a 2a 2a 2a 2a |********|********|
|00001a20| 2a 2a 2a 7d 0a 58 09 50 | 52 4f 43 45 44 55 52 45 |***}.X.P|ROCEDURE|
|00001a30| 20 50 6f 70 20 28 56 41 | 52 20 76 42 61 72 20 3a | Pop (VA|R vBar :|
|00001a40| 20 74 42 61 72 3b 0a 58 | 09 09 09 09 09 09 09 09 | tBar;.X|........|
|00001a50| 09 70 50 65 67 20 3a 20 | 74 50 65 67 29 3b 0a 58 |.pPeg : |tPeg);.X|
|00001a60| 09 09 56 41 52 0a 58 09 | 09 09 6c 54 65 6d 70 20 |..VAR.X.|..lTemp |
|00001a70| 3a 20 72 65 63 74 3b 0a | 58 09 42 45 47 49 4e 0a |: rect;.|X.BEGIN.|
|00001a80| 58 09 09 57 49 54 48 20 | 67 50 65 67 5b 70 50 65 |X..WITH |gPeg[pPe|
|00001a90| 67 5d 2e 66 42 61 72 73 | 20 44 4f 0a 58 09 09 09 |g].fBars| DO.X...|
|00001aa0| 42 45 47 49 4e 0a 58 09 | 09 09 09 76 42 61 72 20 |BEGIN.X.|...vBar |
|00001ab0| 3a 3d 20 66 45 6c 65 6d | 65 6e 74 73 5b 66 54 6f |:= fElem|ents[fTo|
|00001ac0| 73 5d 3b 0a 58 09 09 09 | 09 66 54 6f 73 20 3a 3d |s];.X...|.fTos :=|
|00001ad0| 20 66 54 6f 73 20 2d 20 | 31 3b 0a 58 09 09 09 45 | fTos - |1;.X...E|
|00001ae0| 4e 44 3b 0a 58 09 09 57 | 49 54 48 20 67 42 61 72 |ND;.X..W|ITH gBar|
|00001af0| 5b 76 42 61 72 5d 20 44 | 4f 20 7b 52 65 73 74 6f |[vBar] D|O {Resto|
|00001b00| 72 65 20 74 68 65 20 73 | 61 76 65 64 20 62 69 74 |re the s|aved bit|
|00001b10| 73 7d 0a 58 09 09 09 42 | 45 47 49 4e 0a 58 09 09 |s}.X...B|EGIN.X..|
|00001b20| 09 09 53 65 74 52 65 63 | 74 28 6c 54 65 6d 70 2c |..SetRec|t(lTemp,|
|00001b30| 20 66 4c 6f 63 2e 68 20 | 2d 20 66 52 61 64 2c 20 | fLoc.h |- fRad, |
|00001b40| 66 4c 6f 63 2e 76 20 2d | 20 34 2c 20 66 4c 6f 63 |fLoc.v -| 4, fLoc|
|00001b50| 2e 68 20 2b 20 66 52 61 | 64 2c 20 66 4c 6f 63 2e |.h + fRa|d, fLoc.|
|00001b60| 76 20 2b 20 34 29 3b 0a | 58 09 09 09 09 43 6f 70 |v + 4);.|X....Cop|
|00001b70| 79 42 69 74 73 28 66 53 | 61 76 65 42 69 74 73 2c |yBits(fS|aveBits,|
|00001b80| 20 67 53 61 76 65 50 6f | 72 74 5e 2e 70 6f 72 74 | gSavePo|rt^.port|
|00001b90| 42 69 74 73 2c 20 66 53 | 61 76 65 42 69 74 73 2e |Bits, fS|aveBits.|
|00001ba0| 62 6f 75 6e 64 73 2c 20 | 6c 54 65 6d 70 2c 20 73 |bounds, |lTemp, s|
|00001bb0| 72 63 63 6f 70 79 2c 20 | 4e 49 4c 29 3b 0a 58 09 |rccopy, |NIL);.X.|
|00001bc0| 09 09 45 4e 44 3b 0a 58 | 09 45 4e 44 3b 0a 58 0a |..END;.X|.END;.X.|
|00001bd0| 58 7b 21 21 21 21 21 21 | 21 21 21 21 21 21 21 21 |X{!!!!!!|!!!!!!!!|
|00001be0| 21 21 21 21 21 21 21 21 | 21 21 21 21 21 21 21 21 |!!!!!!!!|!!!!!!!!|
|00001bf0| 21 21 21 21 21 21 21 21 | 21 21 21 21 21 21 21 21 |!!!!!!!!|!!!!!!!!|
|00001c00| 21 21 21 21 21 21 21 21 | 21 21 21 21 21 21 21 21 |!!!!!!!!|!!!!!!!!|
|00001c10| 21 21 21 21 21 21 21 21 | 21 21 21 21 21 21 21 7d |!!!!!!!!|!!!!!!!}|
|00001c20| 0a 58 7b 51 75 65 75 65 | 20 72 6f 75 74 69 6e 65 |.X{Queue| routine|
|00001c30| 73 7d 0a 58 7b 21 21 21 | 21 21 21 21 21 21 21 21 |s}.X{!!!|!!!!!!!!|
|00001c40| 21 21 21 21 21 21 21 21 | 21 21 21 21 21 21 21 21 |!!!!!!!!|!!!!!!!!|
|00001c50| 21 21 21 21 21 21 21 21 | 21 21 21 21 21 21 21 21 |!!!!!!!!|!!!!!!!!|
|00001c60| 21 21 21 21 21 21 21 21 | 21 21 21 21 21 21 21 21 |!!!!!!!!|!!!!!!!!|
|00001c70| 21 21 21 21 21 21 21 21 | 21 21 21 21 21 21 21 21 |!!!!!!!!|!!!!!!!!|
|00001c80| 21 21 7d 0a 58 0a 58 7b | 2a 2a 2a 2a 2a 2a 2a 2a |!!}.X.X{|********|
|00001c90| 2a 2a 2a 2a 2a 2a 2a 2a | 2a 2a 2a 2a 2a 2a 2a 2a |********|********|
|00001ca0| 2a 2a 2a 2a 2a 2a 2a 2a | 2a 2a 2a 2a 2a 2a 2a 2a |********|********|
|00001cb0| 2a 2a 2a 2a 2a 2a 2a 2a | 2a 2a 2a 2a 2a 2a 2a 2a |********|********|
|00001cc0| 2a 2a 2a 2a 2a 2a 2a 2a | 2a 2a 2a 2a 2a 2a 2a 2a |********|********|
|00001cd0| 2a 2a 2a 2a 2a 7d 0a 58 | 7b 49 6e 69 74 20 74 68 |*****}.X|{Init th|
|00001ce0| 65 20 51 75 65 75 65 7d | 0a 58 7b 2a 2a 2a 2a 2a |e Queue}|.X{*****|
|00001cf0| 2a 2a 2a 2a 2a 2a 2a 2a | 2a 2a 2a 2a 2a 2a 2a 2a |********|********|
|00001d00| 2a 2a 2a 2a 2a 2a 2a 2a | 2a 2a 2a 2a 2a 2a 2a 2a |********|********|
|00001d10| 2a 2a 2a 2a 2a 2a 2a 2a | 2a 2a 2a 2a 2a 2a 2a 2a |********|********|
|00001d20| 2a 2a 2a 2a 2a 2a 2a 2a | 2a 2a 2a 2a 2a 2a 2a 2a |********|********|
|00001d30| 2a 2a 2a 2a 2a 2a 2a 2a | 7d 0a 58 09 50 52 4f 43 |********|}.X.PROC|
|00001d40| 45 44 55 52 45 20 49 6e | 69 74 51 75 65 3b 0a 58 |EDURE In|itQue;.X|
|00001d50| 09 42 45 47 49 4e 0a 58 | 09 09 67 4d 6f 76 65 51 |.BEGIN.X|..gMoveQ|
|00001d60| 75 65 2e 66 46 72 6f 6e | 74 20 3a 3d 20 31 3b 0a |ue.fFron|t := 1;.|
|00001d70| 58 09 09 67 4d 6f 76 65 | 51 75 65 2e 66 52 65 61 |X..gMove|Que.fRea|
|00001d80| 72 20 3a 3d 20 31 3b 0a | 58 09 45 4e 44 3b 0a 58 |r := 1;.|X.END;.X|
|00001d90| 0a 58 7b 2a 2a 2a 2a 2a | 2a 2a 2a 2a 2a 2a 2a 2a |.X{*****|********|
|00001da0| 2a 2a 2a 2a 2a 2a 2a 2a | 2a 2a 2a 2a 2a 2a 2a 2a |********|********|
|00001db0| 2a 2a 2a 2a 2a 2a 2a 2a | 2a 2a 2a 2a 2a 2a 2a 2a |********|********|
|00001dc0| 2a 2a 2a 2a 2a 2a 2a 2a | 2a 2a 2a 2a 2a 2a 2a 2a |********|********|
|00001dd0| 2a 2a 2a 2a 2a 2a 2a 2a | 2a 2a 2a 2a 2a 2a 2a 2a |********|********|
|00001de0| 7d 0a 58 7b 47 65 74 20 | 74 68 65 20 6e 65 78 74 |}.X{Get |the next|
|00001df0| 20 69 6e 64 65 78 20 69 | 6e 74 6f 20 74 68 65 20 | index i|nto the |
|00001e00| 71 75 65 75 65 7d 0a 58 | 7b 2a 2a 2a 2a 2a 2a 2a |queue}.X|{*******|
|00001e10| 2a 2a 2a 2a 2a 2a 2a 2a | 2a 2a 2a 2a 2a 2a 2a 2a |********|********|
|00001e20| 2a 2a 2a 2a 2a 2a 2a 2a | 2a 2a 2a 2a 2a 2a 2a 2a |********|********|
|00001e30| 2a 2a 2a 2a 2a 2a 2a 2a | 2a 2a 2a 2a 2a 2a 2a 2a |********|********|
|00001e40| 2a 2a 2a 2a 2a 2a 2a 2a | 2a 2a 2a 2a 2a 2a 2a 2a |********|********|
|00001e50| 2a 2a 2a 2a 2a 2a 7d 0a | 58 09 50 52 4f 43 45 44 |******}.|X.PROCED|
|00001e60| 55 52 45 20 4e 65 78 74 | 49 6e 64 20 28 56 41 52 |URE Next|Ind (VAR|
|00001e70| 20 76 49 6e 64 20 3a 20 | 74 51 75 65 4e 75 6d 29 | vInd : |tQueNum)|
|00001e80| 3b 0a 58 09 42 45 47 49 | 4e 0a 58 09 09 49 46 20 |;.X.BEGI|N.X..IF |
|00001e90| 76 49 6e 64 20 3d 20 6b | 4d 61 78 51 75 65 20 54 |vInd = k|MaxQue T|
|00001ea0| 48 45 4e 0a 58 09 09 09 | 76 49 6e 64 20 3a 3d 20 |HEN.X...|vInd := |
|00001eb0| 31 0a 58 09 09 45 4c 53 | 45 0a 58 09 09 09 76 49 |1.X..ELS|E.X...vI|
|00001ec0| 6e 64 20 3a 3d 20 76 49 | 6e 64 20 2b 20 31 3b 0a |nd := vI|nd + 1;.|
|00001ed0| 58 09 45 4e 44 3b 0a 58 | 0a 58 7b 2a 2a 2a 2a 2a |X.END;.X|.X{*****|
|00001ee0| 2a 2a 2a 2a 2a 2a 2a 2a | 2a 2a 2a 2a 2a 2a 2a 2a |********|********|
|00001ef0| 2a 2a 2a 2a 2a 2a 2a 2a | 2a 2a 2a 2a 2a 2a 2a 2a |********|********|
|00001f00| 2a 2a 2a 2a 2a 2a 2a 2a | 2a 2a 2a 2a 2a 2a 2a 2a |********|********|
|00001f10| 2a 2a 2a 2a 2a 2a 2a 2a | 2a 2a 2a 2a 2a 2a 2a 2a |********|********|
|00001f20| 2a 2a 2a 2a 2a 2a 2a 2a | 7d 0a 58 7b 45 6e 71 20 |********|}.X{Enq |
|00001f30| 74 68 69 73 20 6d 6f 76 | 65 7d 0a 58 7b 2a 2a 2a |this mov|e}.X{***|
|00001f40| 2a 2a 2a 2a 2a 2a 2a 2a | 2a 2a 2a 2a 2a 2a 2a 2a |********|********|
|00001f50| 2a 2a 2a 2a 2a 2a 2a 2a | 2a 2a 2a 2a 2a 2a 2a 2a |********|********|
|00001f60| 2a 2a 2a 2a 2a 2a 2a 2a | 2a 2a 2a 2a 2a 2a 2a 2a |********|********|
|00001f70| 2a 2a 2a 2a 2a 2a 2a 2a | 2a 2a 2a 2a 2a 2a 2a 2a |********|********|
|00001f80| 2a 2a 2a 2a 2a 2a 2a 2a | 2a 2a 7d 0a 58 09 50 52 |********|**}.X.PR|
|00001f90| 4f 43 45 44 55 52 45 20 | 45 6e 71 20 28 70 46 72 |OCEDURE |Enq (pFr|
|00001fa0| 6f 6d 2c 20 70 54 6f 20 | 3a 20 74 50 65 67 29 3b |om, pTo |: tPeg);|
|00001fb0| 0a 58 09 42 45 47 49 4e | 0a 58 09 09 57 49 54 48 |.X.BEGIN|.X..WITH|
|00001fc0| 20 67 4d 6f 76 65 51 75 | 65 20 44 4f 0a 58 09 09 | gMoveQu|e DO.X..|
|00001fd0| 09 42 45 47 49 4e 0a 58 | 09 09 09 09 66 45 6c 65 |.BEGIN.X|....fEle|
|00001fe0| 6d 65 6e 74 73 5b 66 52 | 65 61 72 5d 2e 66 46 72 |ments[fR|ear].fFr|
|00001ff0| 6f 6d 20 3a 3d 20 70 46 | 72 6f 6d 3b 0a 58 09 09 |om := pF|rom;.X..|
|00002000| 09 09 66 45 6c 65 6d 65 | 6e 74 73 5b 66 52 65 61 |..fEleme|nts[fRea|
|00002010| 72 5d 2e 66 54 6f 20 3a | 3d 20 70 54 6f 3b 0a 58 |r].fTo :|= pTo;.X|
|00002020| 09 09 09 09 4e 65 78 74 | 49 6e 64 28 66 52 65 61 |....Next|Ind(fRea|
|00002030| 72 29 3b 0a 58 09 09 09 | 45 4e 44 3b 0a 58 09 45 |r);.X...|END;.X.E|
|00002040| 4e 44 3b 0a 58 0a 58 7b | 2a 2a 2a 2a 2a 2a 2a 2a |ND;.X.X{|********|
|00002050| 2a 2a 2a 2a 2a 2a 2a 2a | 2a 2a 2a 2a 2a 2a 2a 2a |********|********|
|00002060| 2a 2a 2a 2a 2a 2a 2a 2a | 2a 2a 2a 2a 2a 2a 2a 2a |********|********|
|00002070| 2a 2a 2a 2a 2a 2a 2a 2a | 2a 2a 2a 2a 2a 2a 2a 2a |********|********|
|00002080| 2a 2a 2a 2a 2a 2a 2a 2a | 2a 2a 2a 2a 2a 2a 2a 2a |********|********|
|00002090| 2a 2a 2a 2a 2a 7d 0a 58 | 7b 44 65 71 20 74 68 65 |*****}.X|{Deq the|
|000020a0| 20 6e 65 78 74 20 6d 6f | 76 65 20 61 6e 64 20 70 | next mo|ve and p|
|000020b0| 75 74 20 69 74 20 69 6e | 74 6f 20 76 45 6c 65 6d |ut it in|to vElem|
|000020c0| 7d 0a 58 7b 2a 2a 2a 2a | 2a 2a 2a 2a 2a 2a 2a 2a |}.X{****|********|
|000020d0| 2a 2a 2a 2a 2a 2a 2a 2a | 2a 2a 2a 2a 2a 2a 2a 2a |********|********|
|000020e0| 2a 2a 2a 2a 2a 2a 2a 2a | 2a 2a 2a 2a 2a 2a 2a 2a |********|********|
|000020f0| 2a 2a 2a 2a 2a 2a 2a 2a | 2a 2a 2a 2a 2a 2a 2a 2a |********|********|
|00002100| 2a 2a 2a 2a 2a 2a 2a 2a | 2a 2a 2a 2a 2a 2a 2a 2a |********|********|
|00002110| 2a 7d 0a 58 09 50 52 4f | 43 45 44 55 52 45 20 44 |*}.X.PRO|CEDURE D|
|00002120| 65 71 20 28 56 41 52 20 | 76 45 6c 65 6d 20 3a 20 |eq (VAR |vElem : |
|00002130| 74 45 6c 65 6d 65 6e 74 | 29 3b 0a 58 09 42 45 47 |tElement|);.X.BEG|
|00002140| 49 4e 0a 58 09 09 57 49 | 54 48 20 67 4d 6f 76 65 |IN.X..WI|TH gMove|
|00002150| 51 75 65 20 44 4f 0a 58 | 09 09 09 42 45 47 49 4e |Que DO.X|...BEGIN|
|00002160| 0a 58 09 09 09 09 76 45 | 6c 65 6d 20 3a 3d 20 66 |.X....vE|lem := f|
|00002170| 45 6c 65 6d 65 6e 74 73 | 5b 66 46 72 6f 6e 74 5d |Elements|[fFront]|
|00002180| 3b 0a 58 09 09 09 09 4e | 65 78 74 49 6e 64 28 66 |;.X....N|extInd(f|
|00002190| 46 72 6f 6e 74 29 3b 0a | 58 09 09 09 45 4e 44 3b |Front);.|X...END;|
|000021a0| 0a 58 09 45 4e 44 3b 0a | 58 0a 58 7b 2a 2a 2a 2a |.X.END;.|X.X{****|
|000021b0| 2a 2a 2a 2a 2a 2a 2a 2a | 2a 2a 2a 2a 2a 2a 2a 2a |********|********|
|000021c0| 2a 2a 2a 2a 2a 2a 2a 2a | 2a 2a 2a 2a 2a 2a 2a 2a |********|********|
|000021d0| 2a 2a 2a 2a 2a 2a 2a 2a | 2a 2a 2a 2a 2a 2a 2a 2a |********|********|
|000021e0| 2a 2a 2a 2a 2a 2a 2a 2a | 2a 2a 2a 2a 2a 2a 2a 2a |********|********|
|000021f0| 2a 2a 2a 2a 2a 2a 2a 2a | 2a 7d 0a 58 7b 47 65 74 |********|*}.X{Get|
|00002200| 20 74 68 65 20 6d 6f 76 | 65 20 74 6f 20 62 65 20 | the mov|e to be |
|00002210| 72 65 74 75 72 6e 65 64 | 20 61 74 20 74 68 65 20 |returned| at the |
|00002220| 6e 65 78 74 20 44 65 71 | 7d 0a 58 7b 2a 2a 2a 2a |next Deq|}.X{****|
|00002230| 2a 2a 2a 2a 2a 2a 2a 2a | 2a 2a 2a 2a 2a 2a 2a 2a |********|********|
|00002240| 2a 2a 2a 2a 2a 2a 2a 2a | 2a 2a 2a 2a 2a 2a 2a 2a |********|********|
|00002250| 2a 2a 2a 2a 2a 2a 2a 2a | 2a 2a 2a 2a 2a 2a 2a 2a |********|********|
|00002260| 2a 2a 2a 2a 2a 2a 2a 2a | 2a 2a 2a 2a 2a 2a 2a 2a |********|********|
|00002270| 2a 2a 2a 2a 2a 2a 2a 2a | 2a 7d 0a 58 09 50 52 4f |********|*}.X.PRO|
|00002280| 43 45 44 55 52 45 20 54 | 6f 70 45 6c 65 6d 20 28 |CEDURE T|opElem (|
|00002290| 56 41 52 20 76 45 6c 65 | 6d 20 3a 20 74 45 6c 65 |VAR vEle|m : tEle|
|000022a0| 6d 65 6e 74 29 3b 0a 58 | 09 42 45 47 49 4e 0a 58 |ment);.X|.BEGIN.X|
|000022b0| 09 09 57 49 54 48 20 67 | 4d 6f 76 65 51 75 65 20 |..WITH g|MoveQue |
|000022c0| 44 4f 0a 58 09 09 09 76 | 45 6c 65 6d 20 3a 3d 20 |DO.X...v|Elem := |
|000022d0| 66 45 6c 65 6d 65 6e 74 | 73 5b 66 46 72 6f 6e 74 |fElement|s[fFront|
|000022e0| 5d 3b 0a 58 09 45 4e 44 | 3b 0a 58 0a 58 7b 2a 2a |];.X.END|;.X.X{**|
|000022f0| 2a 2a 2a 2a 2a 2a 2a 2a | 2a 2a 2a 2a 2a 2a 2a 2a |********|********|
|00002300| 2a 2a 2a 2a 2a 2a 2a 2a | 2a 2a 2a 2a 2a 2a 2a 2a |********|********|
|00002310| 2a 2a 2a 2a 2a 2a 2a 2a | 2a 2a 2a 2a 2a 2a 2a 2a |********|********|
|00002320| 2a 2a 2a 2a 2a 2a 2a 2a | 2a 2a 2a 2a 2a 2a 2a 2a |********|********|
|00002330| 2a 2a 2a 2a 2a 2a 2a 2a | 2a 2a 2a 7d 0a 58 7b 52 |********|***}.X{R|
|00002340| 65 74 75 72 6e 20 74 72 | 75 65 20 69 66 20 74 68 |eturn tr|ue if th|
|00002350| 65 20 71 75 65 20 69 73 | 20 65 6d 70 74 79 7d 0a |e que is| empty}.|
|00002360| 58 7b 2a 2a 2a 2a 2a 2a | 2a 2a 2a 2a 2a 2a 2a 2a |X{******|********|
|00002370| 2a 2a 2a 2a 2a 2a 2a 2a | 2a 2a 2a 2a 2a 2a 2a 2a |********|********|
|00002380| 2a 2a 2a 2a 2a 2a 2a 2a | 2a 2a 2a 2a 2a 2a 2a 2a |********|********|
|00002390| 2a 2a 2a 2a 2a 2a 2a 2a | 2a 2a 2a 2a 2a 2a 2a 2a |********|********|
|000023a0| 2a 2a 2a 2a 2a 2a 2a 2a | 2a 2a 2a 2a 2a 2a 2a 7d |********|*******}|
|000023b0| 0a 58 09 46 55 4e 43 54 | 49 4f 4e 20 45 6d 70 74 |.X.FUNCT|ION Empt|
|000023c0| 79 51 75 65 20 3a 20 62 | 6f 6f 6c 65 61 6e 3b 0a |yQue : b|oolean;.|
|000023d0| 58 09 42 45 47 49 4e 0a | 58 09 09 45 6d 70 74 79 |X.BEGIN.|X..Empty|
|000023e0| 51 75 65 20 3a 3d 20 67 | 4d 6f 76 65 51 75 65 2e |Que := g|MoveQue.|
|000023f0| 66 46 72 6f 6e 74 20 3d | 20 67 4d 6f 76 65 51 75 |fFront =| gMoveQu|
|00002400| 65 2e 66 52 65 61 72 3b | 0a 58 09 45 4e 44 3b 0a |e.fRear;|.X.END;.|
|00002410| 58 0a 58 7b 21 21 21 21 | 21 21 21 21 21 21 21 21 |X.X{!!!!|!!!!!!!!|
|00002420| 21 21 21 21 21 21 21 21 | 21 21 21 21 21 21 21 21 |!!!!!!!!|!!!!!!!!|
|00002430| 21 21 21 21 21 21 21 21 | 21 21 21 21 21 21 21 21 |!!!!!!!!|!!!!!!!!|
|00002440| 21 21 21 21 21 21 21 21 | 21 21 21 21 21 21 21 21 |!!!!!!!!|!!!!!!!!|
|00002450| 21 21 21 21 21 21 21 21 | 21 21 21 21 21 21 21 21 |!!!!!!!!|!!!!!!!!|
|00002460| 21 7d 0a 58 7b 44 72 61 | 77 69 6e 67 20 72 6f 75 |!}.X{Dra|wing rou|
|00002470| 74 69 6e 65 73 7d 0a 58 | 7b 21 21 21 21 21 21 21 |tines}.X|{!!!!!!!|
|00002480| 21 21 21 21 21 21 21 21 | 21 21 21 21 21 21 21 21 |!!!!!!!!|!!!!!!!!|
|00002490| 21 21 21 21 21 21 21 21 | 21 21 21 21 21 21 21 21 |!!!!!!!!|!!!!!!!!|
|000024a0| 21 21 21 21 21 21 21 21 | 21 21 21 21 21 21 21 21 |!!!!!!!!|!!!!!!!!|
|000024b0| 21 21 21 21 21 21 21 21 | 21 21 21 21 21 21 21 21 |!!!!!!!!|!!!!!!!!|
|000024c0| 21 21 21 21 21 21 7d 0a | 58 0a 58 7b 2a 2a 2a 2a |!!!!!!}.|X.X{****|
|000024d0| 2a 2a 2a 2a 2a 2a 2a 2a | 2a 2a 2a 2a 2a 2a 2a 2a |********|********|
|000024e0| 2a 2a 2a 2a 2a 2a 2a 2a | 2a 2a 2a 2a 2a 2a 2a 2a |********|********|
|000024f0| 2a 2a 2a 2a 2a 2a 2a 2a | 2a 2a 2a 2a 2a 2a 2a 2a |********|********|
|00002500| 2a 2a 2a 2a 2a 2a 2a 2a | 2a 2a 2a 2a 2a 2a 2a 2a |********|********|
|00002510| 2a 2a 2a 2a 2a 2a 2a 2a | 2a 7d 0a 58 7b 50 6c 6f |********|*}.X{Plo|
|00002520| 74 20 70 42 61 72 20 75 | 73 69 6e 67 20 61 6c 6c |t pBar u|sing all|
|00002530| 20 74 68 65 20 69 6e 66 | 6f 20 69 6e 20 69 74 73 | the inf|o in its|
|00002540| 20 72 65 63 6f 72 64 7d | 0a 58 7b 2a 2a 2a 2a 2a | record}|.X{*****|
|00002550| 2a 2a 2a 2a 2a 2a 2a 2a | 2a 2a 2a 2a 2a 2a 2a 2a |********|********|
|00002560| 2a 2a 2a 2a 2a 2a 2a 2a | 2a 2a 2a 2a 2a 2a 2a 2a |********|********|
|00002570| 2a 2a 2a 2a 2a 2a 2a 2a | 2a 2a 2a 2a 2a 2a 2a 2a |********|********|
|00002580| 2a 2a 2a 2a 2a 2a 2a 2a | 2a 2a 2a 2a 2a 2a 2a 2a |********|********|
|00002590| 2a 2a 2a 2a 2a 2a 2a 2a | 7d 0a 58 09 50 52 4f 43 |********|}.X.PROC|
|000025a0| 45 44 55 52 45 20 50 6c | 6f 74 42 61 72 20 28 70 |EDURE Pl|otBar (p|
|000025b0| 42 61 72 20 3a 20 74 42 | 61 72 29 3b 0a 58 0a 58 |Bar : tB|ar);.X.X|
|000025c0| 7b 20 20 2a 2a 2a 2a 2a | 2a 2a 2a 2a 2a 2a 2a 2a |{ *****|********|
|000025d0| 2a 2a 2a 2a 2a 2a 2a 2a | 2a 2a 2a 2a 2a 2a 2a 2a |********|********|
|000025e0| 2a 2a 2a 2a 2a 2a 2a 2a | 2a 2a 2a 2a 2a 2a 2a 2a |********|********|
|000025f0| 2a 2a 2a 2a 2a 2a 2a 2a | 2a 2a 2a 2a 2a 2a 2a 2a |********|********|
|00002600| 2a 2a 2a 2a 2a 2a 2a 2a | 2a 2a 2a 2a 2a 2a 7d 0a |********|******}.|
|00002610| 58 7b 20 20 4d 6f 76 65 | 20 74 68 65 20 72 65 67 |X{ Move| the reg|
|00002620| 69 6f 6e 73 20 63 65 6e | 74 65 72 20 74 6f 20 74 |ions cen|ter to t|
|00002630| 68 65 20 61 62 73 6f 6c | 75 74 65 20 6c 6f 63 61 |he absol|ute loca|
|00002640| 74 69 6f 6e 20 28 70 4c | 6f 63 68 2c 70 4c 6f 63 |tion (pL|och,pLoc|
|00002650| 76 29 7d 0a 58 7b 20 20 | 2a 2a 2a 2a 2a 2a 2a 2a |v)}.X{ |********|
|00002660| 2a 2a 2a 2a 2a 2a 2a 2a | 2a 2a 2a 2a 2a 2a 2a 2a |********|********|
|00002670| 2a 2a 2a 2a 2a 2a 2a 2a | 2a 2a 2a 2a 2a 2a 2a 2a |********|********|
|00002680| 2a 2a 2a 2a 2a 2a 2a 2a | 2a 2a 2a 2a 2a 2a 2a 2a |********|********|
|00002690| 2a 2a 2a 2a 2a 2a 2a 2a | 2a 2a 2a 2a 2a 2a 2a 2a |********|********|
|000026a0| 2a 2a 2a 7d 0a 58 09 09 | 50 52 4f 43 45 44 55 52 |***}.X..|PROCEDUR|
|000026b0| 45 20 4d 6f 76 65 52 67 | 6e 20 28 70 42 61 72 44 |E MoveRg|n (pBarD|
|000026c0| 61 74 61 20 3a 20 74 42 | 61 72 44 61 74 61 3b 0a |ata : tB|arData;.|
|000026d0| 58 09 09 09 09 09 09 09 | 09 09 09 70 4c 6f 63 68 |X.......|...pLoch|
|000026e0| 2c 20 70 4c 6f 63 76 20 | 3a 20 69 6e 74 65 67 65 |, pLocv |: intege|
|000026f0| 72 29 3b 0a 58 09 09 09 | 56 41 52 0a 58 09 09 09 |r);.X...|VAR.X...|
|00002700| 09 64 68 2c 20 64 76 20 | 3a 20 69 6e 74 65 67 65 |.dh, dv |: intege|
|00002710| 72 3b 0a 58 09 09 42 45 | 47 49 4e 0a 58 09 09 09 |r;.X..BE|GIN.X...|
|00002720| 57 49 54 48 20 70 42 61 | 72 44 61 74 61 2e 66 52 |WITH pBa|rData.fR|
|00002730| 67 6e 5e 5e 2e 72 67 6e | 42 42 6f 78 2c 20 70 42 |gn^^.rgn|BBox, pB|
|00002740| 61 72 44 61 74 61 20 44 | 4f 0a 58 09 09 09 09 42 |arData D|O.X....B|
|00002750| 45 47 49 4e 0a 58 09 09 | 09 09 09 4f 66 66 73 65 |EGIN.X..|...Offse|
|00002760| 74 52 67 6e 28 70 42 61 | 72 44 61 74 61 2e 66 52 |tRgn(pBa|rData.fR|
|00002770| 67 6e 2c 20 66 4f 72 67 | 2e 68 20 2d 20 6c 65 66 |gn, fOrg|.h - lef|
|00002780| 74 2c 20 66 4f 72 67 2e | 76 20 2d 20 74 6f 70 29 |t, fOrg.|v - top)|
|00002790| 3b 0a 58 09 09 09 09 09 | 4f 66 66 73 65 74 52 67 |;.X.....|OffsetRg|
|000027a0| 6e 28 70 42 61 72 44 61 | 74 61 2e 66 52 67 6e 2c |n(pBarDa|ta.fRgn,|
|000027b0| 20 70 4c 6f 63 68 2c 20 | 70 4c 6f 63 76 29 3b 0a | pLoch, |pLocv);.|
|000027c0| 58 09 09 09 09 45 4e 44 | 3b 0a 58 09 09 45 4e 44 |X....END|;.X..END|
|000027d0| 3b 0a 58 0a 58 09 42 45 | 47 49 4e 0a 58 09 09 57 |;.X.X.BE|GIN.X..W|
|000027e0| 49 54 48 20 67 42 61 72 | 5b 70 42 61 72 5d 20 44 |ITH gBar|[pBar] D|
|000027f0| 4f 0a 58 09 09 09 42 45 | 47 49 4e 0a 58 09 09 09 |O.X...BE|GIN.X...|
|00002800| 09 66 49 6e 64 20 3a 3d | 20 66 49 6e 64 20 2b 20 |.fInd :=| fInd + |
|00002810| 31 3b 20 7b 49 6e 63 20 | 74 68 65 20 69 6e 64 65 |1; {Inc |the inde|
|00002820| 78 7d 0a 58 09 09 09 09 | 4d 6f 76 65 52 67 6e 28 |x}.X....|MoveRgn(|
|00002830| 66 46 72 61 6d 65 5b 66 | 49 6e 64 5d 2c 20 66 4c |fFrame[f|Ind], fL|
|00002840| 6f 63 2e 68 2c 20 66 4c | 6f 63 2e 76 29 3b 20 7b |oc.h, fL|oc.v); {|
|00002850| 4d 6f 76 65 20 74 68 65 | 20 72 65 67 69 6f 6e 74 |Move the| regiont|
|00002860| 6f 20 74 68 65 20 6e 65 | 77 20 6c 6f 63 7d 0a 58 |o the ne|w loc}.X|
|00002870| 09 09 09 09 44 69 66 66 | 52 67 6e 28 66 46 72 61 |....Diff|Rgn(fFra|
|00002880| 6d 65 5b 66 4c 61 73 74 | 49 6e 64 5d 2e 66 52 67 |me[fLast|Ind].fRg|
|00002890| 6e 2c 20 66 46 72 61 6d | 65 5b 66 49 6e 64 5d 2e |n, fFram|e[fInd].|
|000028a0| 66 52 67 6e 2c 20 67 45 | 72 61 73 65 52 67 6e 29 |fRgn, gE|raseRgn)|
|000028b0| 3b 20 7b 43 61 6c 63 20 | 74 68 65 20 65 72 61 73 |; {Calc |the eras|
|000028c0| 65 20 72 67 6e 7d 0a 58 | 09 09 09 09 46 69 6c 6c |e rgn}.X|....Fill|
|000028d0| 52 67 6e 28 66 46 72 61 | 6d 65 5b 66 49 6e 64 5d |Rgn(fFra|me[fInd]|
|000028e0| 2e 66 52 67 6e 2c 20 66 | 43 6f 6c 6f 72 29 3b 20 |.fRgn, f|Color); |
|000028f0| 7b 44 72 61 77 20 74 68 | 65 20 62 61 72 7d 0a 58 |{Draw th|e bar}.X|
|00002900| 7b 52 65 73 74 6f 72 65 | 20 74 68 65 20 42 69 74 |{Restore| the Bit|
|00002910| 73 7d 0a 58 09 09 09 09 | 43 6f 70 79 42 69 74 73 |s}.X....|CopyBits|
|00002920| 28 67 53 61 76 65 50 6f | 72 74 5e 2e 70 6f 72 74 |(gSavePo|rt^.port|
|00002930| 42 69 74 73 2c 20 67 44 | 72 61 77 50 6f 72 74 5e |Bits, gD|rawPort^|
|00002940| 2e 70 6f 72 74 42 69 74 | 73 2c 20 66 4f 6c 64 52 |.portBit|s, fOldR|
|00002950| 65 63 74 2c 20 66 4f 6c | 64 52 65 63 74 2c 20 73 |ect, fOl|dRect, s|
|00002960| 72 63 63 6f 70 79 2c 20 | 67 45 72 61 73 65 52 67 |rccopy, |gEraseRg|
|00002970| 6e 29 3b 0a 58 09 09 09 | 09 66 4c 61 73 74 49 6e |n);.X...|.fLastIn|
|00002980| 64 20 3a 3d 20 66 49 6e | 64 3b 0a 58 09 09 09 09 |d := fIn|d;.X....|
|00002990| 53 65 74 52 65 63 74 28 | 66 4f 6c 64 52 65 63 74 |SetRect(|fOldRect|
|000029a0| 2c 20 66 4c 6f 63 2e 68 | 20 2d 20 66 52 61 64 2c |, fLoc.h| - fRad,|
|000029b0| 20 66 4c 6f 63 2e 76 20 | 2d 20 66 52 61 64 2c 20 | fLoc.v |- fRad, |
|000029c0| 66 4c 6f 63 2e 68 20 2b | 20 66 52 61 64 2c 20 66 |fLoc.h +| fRad, f|
|000029d0| 4c 6f 63 2e 76 20 2b 20 | 66 52 61 64 29 3b 0a 58 |Loc.v + |fRad);.X|
|000029e0| 09 09 09 09 49 46 20 66 | 49 6e 64 20 3d 20 6b 4e |....IF f|Ind = kN|
|000029f0| 75 6d 46 72 61 6d 65 20 | 54 48 45 4e 0a 58 09 09 |umFrame |THEN.X..|
|00002a00| 09 09 09 66 49 6e 64 20 | 3a 3d 20 30 3b 0a 58 09 |...fInd |:= 0;.X.|
|00002a10| 09 09 45 4e 44 3b 0a 58 | 09 45 4e 44 3b 0a 58 0a |..END;.X|.END;.X.|
|00002a20| 58 7b 2a 2a 2a 2a 2a 2a | 2a 2a 2a 2a 2a 2a 2a 2a |X{******|********|
|00002a30| 2a 2a 2a 2a 2a 2a 2a 2a | 2a 2a 2a 2a 2a 2a 2a 2a |********|********|
|00002a40| 2a 2a 2a 2a 2a 2a 2a 2a | 2a 2a 2a 2a 2a 2a 2a 2a |********|********|
|00002a50| 2a 2a 2a 2a 2a 2a 2a 2a | 2a 2a 2a 2a 2a 2a 2a 2a |********|********|
|00002a60| 2a 2a 2a 2a 2a 2a 2a 2a | 2a 2a 2a 2a 2a 2a 2a 7d |********|*******}|
|00002a70| 0a 58 7b 53 74 61 72 74 | 20 74 68 65 20 6d 6f 76 |.X{Start| the mov|
|00002a80| 65 20 69 6e 20 70 45 6c | 65 6d 7d 0a 58 7b 2a 2a |e in pEl|em}.X{**|
|00002a90| 2a 2a 2a 2a 2a 2a 2a 2a | 2a 2a 2a 2a 2a 2a 2a 2a |********|********|
|00002aa0| 2a 2a 2a 2a 2a 2a 2a 2a | 2a 2a 2a 2a 2a 2a 2a 2a |********|********|
|00002ab0| 2a 2a 2a 2a 2a 2a 2a 2a | 2a 2a 2a 2a 2a 2a 2a 2a |********|********|
|00002ac0| 2a 2a 2a 2a 2a 2a 2a 2a | 2a 2a 2a 2a 2a 2a 2a 2a |********|********|
|00002ad0| 2a 2a 2a 2a 2a 2a 2a 2a | 2a 2a 2a 7d 0a 58 09 50 |********|***}.X.P|
|00002ae0| 52 4f 43 45 44 55 52 45 | 20 53 74 61 72 74 4d 6f |ROCEDURE| StartMo|
|00002af0| 76 65 20 28 70 45 6c 65 | 6d 20 3a 20 74 45 6c 65 |ve (pEle|m : tEle|
|00002b00| 6d 65 6e 74 29 3b 0a 58 | 09 09 56 41 52 0a 58 09 |ment);.X|..VAR.X.|
|00002b10| 09 09 6c 42 61 72 20 3a | 20 74 42 61 72 3b 0a 58 |..lBar :| tBar;.X|
|00002b20| 09 09 09 6c 4d 6f 76 65 | 20 3a 20 74 4d 6f 76 65 |...lMove| : tMove|
|00002b30| 3b 0a 58 09 42 45 47 49 | 4e 0a 58 09 09 67 50 65 |;.X.BEGI|N.X..gPe|
|00002b40| 67 5b 70 45 6c 65 6d 2e | 66 54 6f 5d 2e 66 46 72 |g[pElem.|fTo].fFr|
|00002b50| 65 65 20 3a 3d 20 66 61 | 6c 73 65 3b 20 7b 4d 61 |ee := fa|lse; {Ma|
|00002b60| 72 6b 20 74 68 65 20 64 | 65 73 74 20 70 65 67 20 |rk the d|est peg |
|00002b70| 61 73 20 75 73 65 64 7d | 0a 58 09 09 70 6f 70 28 |as used}|.X..pop(|
|00002b80| 6c 42 61 72 2c 20 70 45 | 6c 65 6d 2e 66 46 72 6f |lBar, pE|lem.fFro|
|00002b90| 6d 29 3b 20 7b 47 65 74 | 20 74 68 65 20 62 61 72 |m); {Get| the bar|
|00002ba0| 20 74 6f 20 6d 6f 76 65 | 7d 0a 58 09 09 57 49 54 | to move|}.X..WIT|
|00002bb0| 48 20 67 42 61 72 5b 6c | 42 61 72 5d 20 44 4f 20 |H gBar[l|Bar] DO |
|00002bc0| 7b 49 6e 69 74 20 74 68 | 65 20 62 61 72 20 74 6f |{Init th|e bar to|
|00002bd0| 20 6d 6f 76 65 7d 0a 58 | 09 09 09 42 45 47 49 4e | move}.X|...BEGIN|
|00002be0| 0a 58 09 09 09 09 66 41 | 6c 6d 6f 73 74 20 3a 3d |.X....fA|lmost :=|
|00002bf0| 20 66 61 6c 73 65 3b 0a | 58 09 09 09 09 53 65 74 | false;.|X....Set|
|00002c00| 50 74 28 66 56 65 6c 2c | 20 30 2c 20 2d 6b 56 65 |Pt(fVel,| 0, -kVe|
|00002c10| 6c 29 3b 0a 58 09 09 09 | 09 53 65 74 50 74 28 66 |l);.X...|.SetPt(f|
|00002c20| 44 65 73 74 4c 6f 63 2c | 20 67 50 65 67 50 6f 73 |DestLoc,| gPegPos|
|00002c30| 5b 70 45 6c 65 6d 2e 66 | 54 6f 5d 2c 20 67 42 61 |[pElem.f|To], gBa|
|00002c40| 72 50 6f 73 5b 67 50 65 | 67 5b 70 45 6c 65 6d 2e |rPos[gPe|g[pElem.|
|00002c50| 66 54 6f 5d 2e 66 42 61 | 72 73 2e 66 54 6f 73 20 |fTo].fBa|rs.fTos |
|00002c60| 2b 20 31 5d 29 3b 0a 58 | 09 09 09 09 66 54 6f 20 |+ 1]);.X|....fTo |
|00002c70| 3a 3d 20 70 45 6c 65 6d | 2e 66 54 6f 3b 0a 58 09 |:= pElem|.fTo;.X.|
|00002c80| 09 09 45 4e 44 3b 0a 58 | 7b 50 75 74 20 74 68 65 |..END;.X|{Put the|
|00002c90| 20 62 61 72 20 69 6e 74 | 6f 20 74 68 65 20 6e 65 | bar int|o the ne|
|00002ca0| 78 74 20 61 76 61 69 6c | 61 62 6c 65 20 73 6c 6f |xt avail|able slo|
|00002cb0| 74 20 69 6e 20 67 4d 6f | 76 65 42 61 72 7d 0a 58 |t in gMo|veBar}.X|
|00002cc0| 09 09 6c 4d 6f 76 65 20 | 3a 3d 20 30 3b 0a 58 09 |..lMove |:= 0;.X.|
|00002cd0| 09 52 45 50 45 41 54 0a | 58 09 09 09 6c 4d 6f 76 |.REPEAT.|X...lMov|
|00002ce0| 65 20 3a 3d 20 6c 4d 6f | 76 65 20 2b 20 31 3b 0a |e := lMo|ve + 1;.|
|00002cf0| 58 09 09 09 49 46 20 67 | 4d 6f 76 65 42 61 72 5b |X...IF g|MoveBar[|
|00002d00| 6c 4d 6f 76 65 5d 20 3d | 20 30 20 54 48 45 4e 0a |lMove] =| 0 THEN.|
|00002d10| 58 09 09 09 09 42 45 47 | 49 4e 0a 58 09 09 09 09 |X....BEG|IN.X....|
|00002d20| 09 67 4d 6f 76 65 42 61 | 72 5b 6c 4d 6f 76 65 5d |.gMoveBa|r[lMove]|
|00002d30| 20 3a 3d 20 6c 42 61 72 | 3b 0a 58 09 09 09 09 09 | := lBar|;.X.....|
|00002d40| 6c 4d 6f 76 65 20 3a 3d | 20 6b 4d 61 78 4d 6f 76 |lMove :=| kMaxMov|
|00002d50| 65 3b 0a 58 09 09 09 09 | 45 4e 44 3b 0a 58 09 09 |e;.X....|END;.X..|
|00002d60| 55 4e 54 49 4c 20 6c 4d | 6f 76 65 20 3d 20 6b 4d |UNTIL lM|ove = kM|
|00002d70| 61 78 4d 6f 76 65 3b 0a | 58 09 45 4e 44 3b 0a 58 |axMove;.|X.END;.X|
|00002d80| 0a 58 7b 2a 2a 2a 2a 2a | 2a 2a 2a 2a 2a 2a 2a 2a |.X{*****|********|
|00002d90| 2a 2a 2a 2a 2a 2a 2a 2a | 2a 2a 2a 2a 2a 2a 2a 2a |********|********|
|00002da0| 2a 2a 2a 2a 2a 2a 2a 2a | 2a 2a 2a 2a 2a 2a 2a 2a |********|********|
|00002db0| 2a 2a 2a 2a 2a 2a 2a 2a | 2a 2a 2a 2a 2a 2a 2a 2a |********|********|
|00002dc0| 2a 2a 2a 2a 2a 2a 2a 2a | 2a 2a 2a 2a 2a 2a 2a 2a |********|********|
|00002dd0| 7d 0a 58 7b 4d 6f 76 65 | 20 74 68 65 20 62 61 72 |}.X{Move| the bar|
|00002de0| 73 20 69 6e 20 67 4d 6f | 76 65 42 61 72 7d 0a 58 |s in gMo|veBar}.X|
|00002df0| 7b 2a 2a 2a 2a 2a 2a 2a | 2a 2a 2a 2a 2a 2a 2a 2a |{*******|********|
|00002e00| 2a 2a 2a 2a 2a 2a 2a 2a | 2a 2a 2a 2a 2a 2a 2a 2a |********|********|
|00002e10| 2a 2a 2a 2a 2a 2a 2a 2a | 2a 2a 2a 2a 2a 2a 2a 2a |********|********|
|00002e20| 2a 2a 2a 2a 2a 2a 2a 2a | 2a 2a 2a 2a 2a 2a 2a 2a |********|********|
|00002e30| 2a 2a 2a 2a 2a 2a 2a 2a | 2a 2a 2a 2a 2a 2a 7d 0a |********|******}.|
|00002e40| 58 09 50 52 4f 43 45 44 | 55 52 45 20 4d 6f 76 65 |X.PROCED|URE Move|
|00002e50| 42 61 72 73 3b 0a 58 09 | 09 56 41 52 0a 58 09 09 |Bars;.X.|.VAR.X..|
|00002e60| 09 78 20 3a 20 74 4d 6f | 76 65 3b 0a 58 0a 58 7b |.x : tMo|ve;.X.X{|
|00002e70| 20 20 2a 2a 2a 2a 2a 2a | 2a 2a 2a 2a 2a 2a 2a 2a | ******|********|
|00002e80| 2a 2a 2a 2a 2a 2a 2a 2a | 2a 2a 2a 2a 2a 2a 2a 2a |********|********|
|00002e90| 2a 2a 2a 2a 2a 2a 2a 2a | 2a 2a 2a 2a 2a 2a 2a 2a |********|********|
|00002ea0| 2a 2a 2a 2a 2a 2a 2a 2a | 2a 2a 2a 2a 2a 2a 2a 2a |********|********|
|00002eb0| 2a 2a 2a 2a 2a 2a 2a 2a | 2a 2a 2a 2a 2a 7d 0a 58 |********|*****}.X|
|00002ec0| 7b 20 20 41 64 6a 75 73 | 74 20 74 68 65 20 66 4c |{ Adjus|t the fL|
|00002ed0| 6f 63 20 66 69 65 6c 64 | 20 6f 66 20 62 61 72 20 |oc field| of bar |
|00002ee0| 70 42 61 72 20 61 6e 64 | 20 63 68 61 6e 67 65 20 |pBar and| change |
|00002ef0| 64 69 72 65 63 74 69 6f | 6e 20 69 66 20 6e 65 63 |directio|n if nec|
|00002f00| 63 65 73 73 61 72 79 7d | 0a 58 7b 20 20 52 65 74 |cessary}|.X{ Ret|
|00002f10| 75 72 6e 20 74 72 75 65 | 20 69 66 20 62 61 72 20 |urn true| if bar |
|00002f20| 68 61 73 20 61 72 72 69 | 76 65 64 20 61 74 20 64 |has arri|ved at d|
|00002f30| 65 73 74 69 6e 61 74 69 | 6f 6e 7d 0a 58 7b 20 20 |estinati|on}.X{ |
|00002f40| 2a 2a 2a 2a 2a 2a 2a 2a | 2a 2a 2a 2a 2a 2a 2a 2a |********|********|
|00002f50| 2a 2a 2a 2a 2a 2a 2a 2a | 2a 2a 2a 2a 2a 2a 2a 2a |********|********|
|00002f60| 2a 2a 2a 2a 2a 2a 2a 2a | 2a 2a 2a 2a 2a 2a 2a 2a |********|********|
|00002f70| 2a 2a 2a 2a 2a 2a 2a 2a | 2a 2a 2a 2a 2a 2a 2a 2a |********|********|
|00002f80| 2a 2a 2a 2a 2a 2a 2a 2a | 2a 2a 2a 7d 0a 58 09 09 |********|***}.X..|
|00002f90| 46 55 4e 43 54 49 4f 4e | 20 4d 6f 76 65 54 68 65 |FUNCTION| MoveThe|
|00002fa0| 42 61 72 20 28 70 42 61 | 72 20 3a 20 74 42 61 72 |Bar (pBa|r : tBar|
|00002fb0| 29 20 3a 20 62 6f 6f 6c | 65 61 6e 3b 0a 58 09 09 |) : bool|ean;.X..|
|00002fc0| 42 45 47 49 4e 0a 58 09 | 09 09 4d 6f 76 65 54 68 |BEGIN.X.|..MoveTh|
|00002fd0| 65 42 61 72 20 3a 3d 20 | 66 61 6c 73 65 3b 0a 58 |eBar := |false;.X|
|00002fe0| 09 09 09 57 49 54 48 20 | 67 42 61 72 5b 70 42 61 |...WITH |gBar[pBa|
|00002ff0| 72 5d 20 44 4f 20 7b 41 | 64 6a 75 73 74 20 74 68 |r] DO {A|djust th|
|00003000| 65 20 76 65 6c 6f 63 69 | 74 79 20 6f 66 20 74 68 |e veloci|ty of th|
|00003010| 65 20 62 61 72 7d 0a 58 | 09 09 09 09 42 45 47 49 |e bar}.X|....BEGI|
|00003020| 4e 0a 58 09 09 09 09 09 | 49 46 20 66 56 65 6c 2e |N.X.....|IF fVel.|
|00003030| 76 20 3d 20 2d 6b 56 65 | 6c 20 54 48 45 4e 0a 58 |v = -kVe|l THEN.X|
|00003040| 09 09 09 09 09 09 49 46 | 20 66 4c 6f 63 2e 76 20 |......IF| fLoc.v |
|00003050| 3c 3d 20 6b 41 6c 74 20 | 54 48 45 4e 0a 58 09 09 |<= kAlt |THEN.X..|
|00003060| 09 09 09 09 09 42 45 47 | 49 4e 0a 58 09 09 09 09 |.....BEG|IN.X....|
|00003070| 09 09 09 09 66 56 65 6c | 2e 76 20 3a 3d 20 30 3b |....fVel|.v := 0;|
|00003080| 0a 58 09 09 09 09 09 09 | 09 09 49 46 20 66 4c 6f |.X......|..IF fLo|
|00003090| 63 2e 68 20 3e 20 66 44 | 65 73 74 4c 6f 63 2e 68 |c.h > fD|estLoc.h|
|000030a0| 20 54 48 45 4e 0a 58 09 | 09 09 09 09 09 09 09 09 | THEN.X.|........|
|000030b0| 66 56 65 6c 2e 68 20 3a | 3d 20 2d 6b 56 65 6c 0a |fVel.h :|= -kVel.|
|000030c0| 58 09 09 09 09 09 09 09 | 09 45 4c 53 45 0a 58 09 |X.......|.ELSE.X.|
|000030d0| 09 09 09 09 09 09 09 09 | 66 56 65 6c 2e 68 20 3a |........|fVel.h :|
|000030e0| 3d 20 6b 56 65 6c 3b 0a | 58 09 09 09 09 09 09 09 |= kVel;.|X.......|
|000030f0| 45 4e 44 3b 0a 58 09 09 | 09 09 09 49 46 20 66 56 |END;.X..|...IF fV|
|00003100| 65 6c 2e 76 20 3d 20 30 | 20 54 48 45 4e 0a 58 09 |el.v = 0| THEN.X.|
|00003110| 09 09 09 09 09 42 45 47 | 49 4e 0a 58 09 09 09 09 |.....BEG|IN.X....|
|00003120| 09 09 09 49 46 20 66 56 | 65 6c 2e 68 20 3d 20 6b |...IF fV|el.h = k|
|00003130| 56 65 6c 20 54 48 45 4e | 0a 58 09 09 09 09 09 09 |Vel THEN|.X......|
|00003140| 09 09 49 46 20 66 4c 6f | 63 2e 68 20 3e 3d 20 66 |..IF fLo|c.h >= f|
|00003150| 44 65 73 74 4c 6f 63 2e | 68 20 54 48 45 4e 0a 58 |DestLoc.|h THEN.X|
|00003160| 09 09 09 09 09 09 09 09 | 09 42 45 47 49 4e 0a 58 |........|.BEGIN.X|
|00003170| 09 09 09 09 09 09 09 09 | 09 09 66 56 65 6c 2e 68 |........|..fVel.h|
|00003180| 20 3a 3d 20 30 3b 0a 58 | 09 09 09 09 09 09 09 09 | := 0;.X|........|
|00003190| 09 09 66 56 65 6c 2e 76 | 20 3a 3d 20 6b 56 65 6c |..fVel.v| := kVel|
|000031a0| 3b 0a 58 09 09 09 09 09 | 09 09 09 09 45 4e 44 3b |;.X.....|....END;|
|000031b0| 0a 58 09 09 09 09 09 09 | 09 49 46 20 66 56 65 6c |.X......|.IF fVel|
|000031c0| 2e 68 20 3d 20 2d 6b 56 | 65 6c 20 54 48 45 4e 0a |.h = -kV|el THEN.|
|000031d0| 58 09 09 09 09 09 09 09 | 09 49 46 20 66 4c 6f 63 |X.......|.IF fLoc|
|000031e0| 2e 68 20 3c 3d 20 66 44 | 65 73 74 4c 6f 63 2e 68 |.h <= fD|estLoc.h|
|000031f0| 20 54 48 45 4e 0a 58 09 | 09 09 09 09 09 09 09 09 | THEN.X.|........|
|00003200| 42 45 47 49 4e 0a 58 09 | 09 09 09 09 09 09 09 09 |BEGIN.X.|........|
|00003210| 09 66 56 65 6c 2e 68 20 | 3a 3d 20 30 3b 0a 58 09 |.fVel.h |:= 0;.X.|
|00003220| 09 09 09 09 09 09 09 09 | 09 66 56 65 6c 2e 76 20 |........|.fVel.v |
|00003230| 3a 3d 20 6b 56 65 6c 3b | 0a 58 09 09 09 09 09 09 |:= kVel;|.X......|
|00003240| 09 09 09 45 4e 44 3b 0a | 58 09 09 09 09 09 09 45 |...END;.|X......E|
|00003250| 4e 44 3b 0a 58 09 09 09 | 09 09 49 46 20 66 56 65 |ND;.X...|..IF fVe|
|00003260| 6c 2e 76 20 3d 20 6b 56 | 65 6c 20 54 48 45 4e 0a |l.v = kV|el THEN.|
|00003270| 58 09 09 09 09 09 09 49 | 46 20 66 4c 6f 63 2e 76 |X......I|F fLoc.v|
|00003280| 20 3e 3d 20 66 44 65 73 | 74 4c 6f 63 2e 76 20 54 | >= fDes|tLoc.v T|
|00003290| 48 45 4e 0a 58 09 09 09 | 09 09 09 09 66 41 6c 6d |HEN.X...|....fAlm|
|000032a0| 6f 73 74 20 3a 3d 20 74 | 72 75 65 3b 0a 58 09 09 |ost := t|rue;.X..|
|000032b0| 09 09 09 49 46 20 66 41 | 6c 6d 6f 73 74 20 54 48 |...IF fA|lmost TH|
|000032c0| 45 4e 20 7b 64 6f 20 6e | 6f 74 20 61 64 6a 75 73 |EN {do n|ot adjus|
|000032d0| 74 20 66 4c 6f 63 7d 0a | 58 09 09 09 09 09 09 42 |t fLoc}.|X......B|
|000032e0| 45 47 49 4e 0a 58 09 09 | 09 09 09 09 09 49 46 20 |EGIN.X..|.....IF |
|000032f0| 28 66 49 6e 64 20 3d 20 | 31 30 29 20 4f 52 20 28 |(fInd = |10) OR (|
|00003300| 66 49 6e 64 20 3d 20 33 | 30 29 20 54 48 45 4e 0a |fInd = 3|0) THEN.|
|00003310| 58 09 09 09 09 09 09 09 | 09 42 45 47 49 4e 0a 58 |X.......|.BEGIN.X|
|00003320| 09 09 09 09 09 09 09 09 | 09 66 49 6e 64 46 69 6c |........|.fIndFil|
|00003330| 6c 20 3a 3d 20 66 49 6e | 64 20 2b 20 31 3b 0a 58 |l := fIn|d + 1;.X|
|00003340| 09 09 09 09 09 09 09 09 | 09 4d 6f 76 65 54 68 65 |........|.MoveThe|
|00003350| 42 61 72 20 3a 3d 20 74 | 72 75 65 3b 0a 58 09 09 |Bar := t|rue;.X..|
|00003360| 09 09 09 09 09 09 45 4e | 44 3b 0a 58 09 09 09 09 |......EN|D;.X....|
|00003370| 09 09 45 4e 44 0a 58 09 | 09 09 09 09 45 4c 53 45 |..END.X.|....ELSE|
|00003380| 20 7b 41 64 6a 75 73 74 | 20 69 74 7d 0a 58 09 09 | {Adjust| it}.X..|
|00003390| 09 09 09 09 41 64 64 50 | 74 28 66 56 65 6c 2c 20 |....AddP|t(fVel, |
|000033a0| 66 4c 6f 63 29 3b 0a 58 | 09 09 09 09 09 50 6c 6f |fLoc);.X|.....Plo|
|000033b0| 74 42 61 72 28 70 42 61 | 72 29 3b 20 7b 50 6c 6f |tBar(pBa|r); {Plo|
|000033c0| 74 20 74 68 65 20 62 61 | 72 7d 0a 58 09 09 09 09 |t the ba|r}.X....|
|000033d0| 45 4e 44 3b 0a 58 09 09 | 45 4e 44 3b 0a 58 0a 58 |END;.X..|END;.X.X|
|000033e0| 09 42 45 47 49 4e 0a 58 | 7b 55 70 64 61 74 65 20 |.BEGIN.X|{Update |
|000033f0| 65 76 65 72 79 20 62 61 | 72 20 69 6e 20 67 4d 6f |every ba|r in gMo|
|00003400| 76 65 42 61 72 7d 0a 58 | 09 09 46 4f 52 20 78 20 |veBar}.X|..FOR x |
|00003410| 3a 3d 20 31 20 54 4f 20 | 6b 4d 61 78 4d 6f 76 65 |:= 1 TO |kMaxMove|
|00003420| 20 44 4f 0a 58 09 09 09 | 49 46 20 67 4d 6f 76 65 | DO.X...|IF gMove|
|00003430| 42 61 72 5b 78 5d 20 3e | 20 30 20 54 48 45 4e 0a |Bar[x] >| 0 THEN.|
|00003440| 58 09 09 09 09 49 46 20 | 4d 6f 76 65 54 68 65 42 |X....IF |MoveTheB|
|00003450| 61 72 28 67 4d 6f 76 65 | 42 61 72 5b 78 5d 29 20 |ar(gMove|Bar[x]) |
|00003460| 54 48 45 4e 20 7b 57 65 | 20 61 72 72 69 76 65 64 |THEN {We| arrived|
|00003470| 7d 0a 58 09 09 09 09 09 | 42 45 47 49 4e 0a 58 09 |}.X.....|BEGIN.X.|
|00003480| 09 09 09 09 09 50 75 73 | 68 28 67 4d 6f 76 65 42 |.....Pus|h(gMoveB|
|00003490| 61 72 5b 78 5d 2c 20 67 | 42 61 72 5b 67 4d 6f 76 |ar[x], g|Bar[gMov|
|000034a0| 65 42 61 72 5b 78 5d 5d | 2e 66 54 6f 29 3b 0a 58 |eBar[x]]|.fTo);.X|
|000034b0| 09 09 09 09 09 09 67 50 | 65 67 5b 67 42 61 72 5b |......gP|eg[gBar[|
|000034c0| 67 4d 6f 76 65 42 61 72 | 5b 78 5d 5d 2e 66 54 6f |gMoveBar|[x]].fTo|
|000034d0| 5d 2e 66 46 72 65 65 20 | 3a 3d 20 74 72 75 65 3b |].fFree |:= true;|
|000034e0| 0a 58 09 09 09 09 09 09 | 67 4d 6f 76 65 42 61 72 |.X......|gMoveBar|
|000034f0| 5b 78 5d 20 3a 3d 20 30 | 3b 0a 58 09 09 09 09 09 |[x] := 0|;.X.....|
|00003500| 45 4e 44 3b 0a 58 09 45 | 4e 44 3b 0a 58 0a 58 7b |END;.X.E|ND;.X.X{|
|00003510| 21 21 21 21 21 21 21 21 | 21 21 21 21 21 21 21 21 |!!!!!!!!|!!!!!!!!|
|00003520| 21 21 21 21 21 21 21 21 | 21 21 21 21 21 21 21 21 |!!!!!!!!|!!!!!!!!|
|00003530| 21 21 21 21 21 21 21 21 | 21 21 21 21 21 21 21 21 |!!!!!!!!|!!!!!!!!|
|00003540| 21 21 21 21 21 21 21 21 | 21 21 21 21 21 21 21 21 |!!!!!!!!|!!!!!!!!|
|00003550| 21 21 21 21 21 21 21 21 | 21 21 21 21 21 7d 0a 58 |!!!!!!!!|!!!!!}.X|
|00003560| 7b 50 72 6f 63 65 73 73 | 69 6e 67 20 72 6f 75 74 |{Process|ing rout|
|00003570| 69 6e 65 73 7d 0a 58 7b | 21 21 21 21 21 21 21 21 |ines}.X{|!!!!!!!!|
|00003580| 21 21 21 21 21 21 21 21 | 21 21 21 21 21 21 21 21 |!!!!!!!!|!!!!!!!!|
|00003590| 21 21 21 21 21 21 21 21 | 21 21 21 21 21 21 21 21 |!!!!!!!!|!!!!!!!!|
|000035a0| 21 21 21 21 21 21 21 21 | 21 21 21 21 21 21 21 21 |!!!!!!!!|!!!!!!!!|
|000035b0| 21 21 21 21 21 21 21 21 | 21 21 21 21 21 21 21 21 |!!!!!!!!|!!!!!!!!|
|000035c0| 21 21 21 21 21 7d 0a 58 | 0a 58 7b 2a 2a 2a 2a 2a |!!!!!}.X|.X{*****|
|000035d0| 2a 2a 2a 2a 2a 2a 2a 2a | 2a 2a 2a 2a 2a 2a 2a 2a |********|********|
|000035e0| 2a 2a 2a 2a 2a 2a 2a 2a | 2a 2a 2a 2a 2a 2a 2a 2a |********|********|
|000035f0| 2a 2a 2a 2a 2a 2a 2a 2a | 2a 2a 2a 2a 2a 2a 2a 2a |********|********|
|00003600| 2a 2a 2a 2a 2a 2a 2a 2a | 2a 2a 2a 2a 2a 2a 2a 2a |********|********|
|00003610| 2a 2a 2a 2a 2a 2a 2a 2a | 7d 0a 58 7b 2a 2a 2a 2a |********|}.X{****|
|00003620| 2a 2a 2a 2a 2a 2a 2a 2a | 2a 2a 2a 2a 2a 2a 2a 2a |********|********|
|00003630| 2a 2a 2a 2a 2a 2a 2a 2a | 2a 2a 2a 2a 2a 2a 2a 2a |********|********|
|00003640| 2a 2a 2a 2a 2a 2a 2a 2a | 2a 2a 2a 2a 2a 2a 2a 2a |********|********|
|00003650| 2a 2a 2a 2a 2a 2a 2a 2a | 2a 2a 2a 2a 2a 2a 2a 2a |********|********|
|00003660| 2a 2a 2a 2a 2a 2a 2a 2a | 2a 7d 0a 58 7b 44 65 63 |********|*}.X{Dec|
|00003670| 69 64 65 20 69 66 20 77 | 65 20 63 61 6e 20 6d 6f |ide if w|e can mo|
|00003680| 76 65 20 61 20 62 61 72 | 20 61 6e 64 20 72 65 74 |ve a bar| and ret|
|00003690| 75 72 6e 20 74 72 75 65 | 20 69 66 20 6e 6f 74 68 |urn true| if noth|
|000036a0| 69 6e 67 20 6c 65 66 74 | 20 74 6f 20 64 6f 7d 0a |ing left| to do}.|
|000036b0| 58 7b 4e 4f 54 45 3a 20 | 54 68 69 73 20 69 73 20 |X{NOTE: |This is |
|000036c0| 74 68 65 20 68 65 61 72 | 74 20 6f 66 20 74 68 65 |the hear|t of the|
|000036d0| 20 77 68 6f 6c 65 20 70 | 72 6f 67 72 61 6d 7d 0a | whole p|rogram}.|
|000036e0| 58 7b 2a 2a 2a 2a 2a 2a | 2a 2a 2a 2a 2a 2a 2a 2a |X{******|********|
|000036f0| 2a 2a 2a 2a 2a 2a 2a 2a | 2a 2a 2a 2a 2a 2a 2a 2a |********|********|
|00003700| 2a 2a 2a 2a 2a 2a 2a 2a | 2a 2a 2a 2a 2a 2a 2a 2a |********|********|
|00003710| 2a 2a 2a 2a 2a 2a 2a 2a | 2a 2a 2a 2a 2a 2a 2a 2a |********|********|
|00003720| 2a 2a 2a 2a 2a 2a 2a 2a | 2a 2a 2a 2a 2a 2a 2a 7d |********|*******}|
|00003730| 0a 58 7b 2a 2a 2a 2a 2a | 2a 2a 2a 2a 2a 2a 2a 2a |.X{*****|********|
|00003740| 2a 2a 2a 2a 2a 2a 2a 2a | 2a 2a 2a 2a 2a 2a 2a 2a |********|********|
|00003750| 2a 2a 2a 2a 2a 2a 2a 2a | 2a 2a 2a 2a 2a 2a 2a 2a |********|********|
|00003760| 2a 2a 2a 2a 2a 2a 2a 2a | 2a 2a 2a 2a 2a 2a 2a 2a |********|********|
|00003770| 2a 2a 2a 2a 2a 2a 2a 2a | 2a 2a 2a 2a 2a 2a 2a 2a |********|********|
|00003780| 7d 0a 58 09 46 55 4e 43 | 54 49 4f 4e 20 53 79 73 |}.X.FUNC|TION Sys|
|00003790| 74 65 6d 54 69 6d 65 20 | 3a 20 62 6f 6f 6c 65 61 |temTime |: boolea|
|000037a0| 6e 3b 0a 58 09 09 56 41 | 52 0a 58 09 09 09 6c 4d |n;.X..VA|R.X...lM|
|000037b0| 6f 76 65 20 3a 20 74 4d | 6f 76 65 3b 0a 58 09 09 |ove : tM|ove;.X..|
|000037c0| 09 6c 54 65 6d 70 42 20 | 3a 20 62 6f 6f 6c 65 61 |.lTempB |: boolea|
|000037d0| 6e 3b 0a 58 09 09 09 6c | 45 6c 65 6d 20 3a 20 74 |n;.X...l|Elem : t|
|000037e0| 45 6c 65 6d 65 6e 74 3b | 0a 58 09 42 45 47 49 4e |Element;|.X.BEGIN|
|000037f0| 0a 58 09 09 49 46 20 62 | 75 74 74 6f 6e 20 54 48 |.X..IF b|utton TH|
|00003800| 45 4e 20 7b 57 65 20 61 | 72 65 20 74 69 72 65 64 |EN {We a|re tired|
|00003810| 20 6f 66 20 77 61 74 63 | 68 69 6e 67 20 74 68 65 | of watc|hing the|
|00003820| 73 65 20 62 61 72 73 20 | 67 6f 20 69 6e 20 63 69 |se bars |go in ci|
|00003830| 72 63 6c 65 73 7d 0a 58 | 09 09 09 45 78 69 74 54 |rcles}.X|...ExitT|
|00003840| 6f 53 68 65 6c 6c 3b 0a | 58 09 09 6c 54 65 6d 70 |oShell;.|X..lTemp|
|00003850| 42 20 3a 3d 20 74 72 75 | 65 3b 0a 58 7b 49 73 20 |B := tru|e;.X{Is |
|00003860| 74 68 65 72 65 20 72 6f | 6f 6d 20 74 6f 20 69 6e |there ro|om to in|
|00003870| 20 67 4d 6f 76 65 42 61 | 72 7d 0a 58 09 09 46 4f | gMoveBa|r}.X..FO|
|00003880| 52 20 6c 4d 6f 76 65 20 | 3a 3d 20 31 20 54 4f 20 |R lMove |:= 1 TO |
|00003890| 6b 4d 61 78 4d 6f 76 65 | 20 44 4f 0a 58 09 09 09 |kMaxMove| DO.X...|
|000038a0| 6c 54 65 6d 70 42 20 3a | 3d 20 6c 54 65 6d 70 42 |lTempB :|= lTempB|
|000038b0| 20 41 4e 44 20 28 67 4d | 6f 76 65 42 61 72 5b 6c | AND (gM|oveBar[l|
|000038c0| 4d 6f 76 65 5d 20 3c 3e | 20 30 29 3b 0a 58 09 09 |Move] <>| 0);.X..|
|000038d0| 49 46 20 4e 4f 54 20 45 | 6d 70 74 79 51 75 65 20 |IF NOT E|mptyQue |
|000038e0| 41 4e 44 20 4e 4f 54 20 | 6c 54 65 6d 70 42 20 54 |AND NOT |lTempB T|
|000038f0| 48 45 4e 20 7b 41 20 6d | 6f 76 65 20 69 73 20 70 |HEN {A m|ove is p|
|00003900| 6f 73 73 69 62 6c 65 7d | 0a 58 09 09 09 42 45 47 |ossible}|.X...BEG|
|00003910| 49 4e 0a 58 09 09 09 09 | 54 6f 70 45 6c 65 6d 28 |IN.X....|TopElem(|
|00003920| 6c 45 6c 65 6d 29 3b 0a | 58 09 09 09 09 49 46 20 |lElem);.|X....IF |
|00003930| 67 50 65 67 5b 6c 45 6c | 65 6d 2e 66 54 6f 5d 2e |gPeg[lEl|em.fTo].|
|00003940| 66 46 72 65 65 20 41 4e | 44 20 67 50 65 67 5b 6c |fFree AN|D gPeg[l|
|00003950| 45 6c 65 6d 2e 66 46 72 | 6f 6d 5d 2e 66 46 72 65 |Elem.fFr|om].fFre|
|00003960| 65 20 54 48 45 4e 20 7b | 4f 6b 20 74 6f 20 6d 6f |e THEN {|Ok to mo|
|00003970| 76 65 7d 0a 58 09 09 09 | 09 09 42 45 47 49 4e 0a |ve}.X...|..BEGIN.|
|00003980| 58 09 09 09 09 09 09 44 | 65 71 28 6c 45 6c 65 6d |X......D|eq(lElem|
|00003990| 29 3b 0a 58 09 09 09 09 | 09 09 53 74 61 72 74 4d |);.X....|..StartM|
|000039a0| 6f 76 65 28 6c 45 6c 65 | 6d 29 3b 0a 58 09 09 09 |ove(lEle|m);.X...|
|000039b0| 09 09 45 4e 44 3b 0a 58 | 09 09 09 45 4e 44 3b 0a |..END;.X|...END;.|
|000039c0| 58 7b 43 68 65 63 6b 20 | 74 6f 20 73 65 65 20 69 |X{Check |to see i|
|000039d0| 66 20 61 6e 79 74 68 69 | 6e 67 20 6c 65 66 74 20 |f anythi|ng left |
|000039e0| 64 6f 7d 0a 58 09 09 6c | 54 65 6d 70 42 20 3a 3d |do}.X..l|TempB :=|
|000039f0| 20 74 72 75 65 3b 0a 58 | 09 09 46 4f 52 20 6c 4d | true;.X|..FOR lM|
|00003a00| 6f 76 65 20 3a 3d 20 31 | 20 54 4f 20 6b 4d 61 78 |ove := 1| TO kMax|
|00003a10| 4d 6f 76 65 20 44 4f 0a | 58 09 09 09 6c 54 65 6d |Move DO.|X...lTem|
|00003a20| 70 42 20 3a 3d 20 6c 54 | 65 6d 70 42 20 41 4e 44 |pB := lT|empB AND|
|00003a30| 20 28 67 4d 6f 76 65 42 | 61 72 5b 6c 4d 6f 76 65 | (gMoveB|ar[lMove|
|00003a40| 5d 20 3d 20 30 29 3b 0a | 58 09 09 53 79 73 74 65 |] = 0);.|X..Syste|
|00003a50| 6d 54 69 6d 65 20 3a 3d | 20 45 6d 70 74 79 51 75 |mTime :=| EmptyQu|
|00003a60| 65 20 41 4e 44 20 6c 54 | 65 6d 70 42 3b 0a 58 09 |e AND lT|empB;.X.|
|00003a70| 09 4d 6f 76 65 42 61 72 | 73 3b 0a 58 09 45 4e 44 |.MoveBar|s;.X.END|
|00003a80| 3b 0a 58 0a 58 7b 2a 2a | 2a 2a 2a 2a 2a 2a 2a 2a |;.X.X{**|********|
|00003a90| 2a 2a 2a 2a 2a 2a 2a 2a | 2a 2a 2a 2a 2a 2a 2a 2a |********|********|
|00003aa0| 2a 2a 2a 2a 2a 2a 2a 2a | 2a 2a 2a 2a 2a 2a 2a 2a |********|********|
|00003ab0| 2a 2a 2a 2a 2a 2a 2a 2a | 2a 2a 2a 2a 2a 2a 2a 2a |********|********|
|00003ac0| 2a 2a 2a 2a 2a 2a 2a 2a | 2a 2a 2a 2a 2a 2a 2a 2a |********|********|
|00003ad0| 2a 2a 2a 7d 0a 58 7b 43 | 61 6c 63 75 6c 61 74 65 |***}.X{C|alculate|
|00003ae0| 20 74 68 65 20 6d 6f 76 | 65 73 20 74 6f 20 70 72 | the mov|es to pr|
|00003af0| 65 66 6f 72 6d 7d 0a 58 | 7b 2a 2a 2a 2a 2a 2a 2a |eform}.X|{*******|
|00003b00| 2a 2a 2a 2a 2a 2a 2a 2a | 2a 2a 2a 2a 2a 2a 2a 2a |********|********|
|00003b10| 2a 2a 2a 2a 2a 2a 2a 2a | 2a 2a 2a 2a 2a 2a 2a 2a |********|********|
|00003b20| 2a 2a 2a 2a 2a 2a 2a 2a | 2a 2a 2a 2a 2a 2a 2a 2a |********|********|
|00003b30| 2a 2a 2a 2a 2a 2a 2a 2a | 2a 2a 2a 2a 2a 2a 2a 2a |********|********|
|00003b40| 2a 2a 2a 2a 2a 2a 7d 0a | 58 09 50 52 4f 43 45 44 |******}.|X.PROCED|
|00003b50| 55 52 45 20 48 61 6e 6f | 69 20 28 70 4e 75 6d 52 |URE Hano|i (pNumR|
|00003b60| 69 6e 67 73 20 3a 20 74 | 42 61 72 3b 0a 58 09 09 |ings : t|Bar;.X..|
|00003b70| 09 09 09 09 09 09 09 70 | 46 72 6f 6d 2c 20 70 54 |.......p|From, pT|
|00003b80| 6f 2c 20 70 55 73 69 6e | 67 20 3a 20 74 50 65 67 |o, pUsin|g : tPeg|
|00003b90| 29 3b 0a 58 09 42 45 47 | 49 4e 0a 58 09 09 49 46 |);.X.BEG|IN.X..IF|
|00003ba0| 20 53 79 73 74 65 6d 54 | 69 6d 65 20 54 48 45 4e | SystemT|ime THEN|
|00003bb0| 0a 58 09 09 09 3b 0a 58 | 09 09 49 46 20 70 4e 75 |.X...;.X|..IF pNu|
|00003bc0| 6d 52 69 6e 67 73 20 3d | 20 31 20 54 48 45 4e 0a |mRings =| 1 THEN.|
|00003bd0| 58 09 09 09 45 6e 71 28 | 70 46 72 6f 6d 2c 20 70 |X...Enq(|pFrom, p|
|00003be0| 54 6f 29 0a 58 09 09 45 | 4c 53 45 0a 58 09 09 09 |To).X..E|LSE.X...|
|00003bf0| 42 45 47 49 4e 0a 58 09 | 09 09 09 68 61 6e 6f 69 |BEGIN.X.|...hanoi|
|00003c00| 28 70 4e 75 6d 52 69 6e | 67 73 20 2d 20 31 2c 20 |(pNumRin|gs - 1, |
|00003c10| 70 46 72 6f 6d 2c 20 70 | 55 73 69 6e 67 2c 20 70 |pFrom, p|Using, p|
|00003c20| 54 6f 29 3b 0a 58 09 09 | 09 09 45 6e 71 28 70 46 |To);.X..|..Enq(pF|
|00003c30| 72 6f 6d 2c 20 70 54 6f | 29 3b 0a 58 09 09 09 09 |rom, pTo|);.X....|
|00003c40| 68 61 6e 6f 69 28 70 4e | 75 6d 52 69 6e 67 73 20 |hanoi(pN|umRings |
|00003c50| 2d 20 31 2c 20 70 55 73 | 69 6e 67 2c 20 70 54 6f |- 1, pUs|ing, pTo|
|00003c60| 2c 20 70 46 72 6f 6d 29 | 3b 0a 58 09 09 09 45 4e |, pFrom)|;.X...EN|
|00003c70| 44 3b 0a 58 09 45 4e 44 | 3b 0a 58 0a 58 7b 2a 2a |D;.X.END|;.X.X{**|
|00003c80| 2a 2a 2a 2a 2a 2a 2a 2a | 2a 2a 2a 2a 2a 2a 2a 2a |********|********|
|00003c90| 2a 2a 2a 2a 2a 2a 2a 2a | 2a 2a 2a 2a 2a 2a 2a 2a |********|********|
|00003ca0| 2a 2a 2a 2a 2a 2a 2a 2a | 2a 2a 2a 2a 2a 2a 2a 2a |********|********|
|00003cb0| 2a 2a 2a 2a 2a 2a 2a 2a | 2a 2a 2a 2a 2a 2a 2a 2a |********|********|
|00003cc0| 2a 2a 2a 2a 2a 2a 2a 2a | 2a 2a 2a 7d 0a 58 7b 49 |********|***}.X{I|
|00003cd0| 6e 69 74 20 74 68 65 20 | 70 72 6f 67 72 61 6d 7d |nit the |program}|
|00003ce0| 0a 58 7b 2a 2a 2a 2a 2a | 2a 2a 2a 2a 2a 2a 2a 2a |.X{*****|********|
|00003cf0| 2a 2a 2a 2a 2a 2a 2a 2a | 2a 2a 2a 2a 2a 2a 2a 2a |********|********|
|00003d00| 2a 2a 2a 2a 2a 2a 2a 2a | 2a 2a 2a 2a 2a 2a 2a 2a |********|********|
|00003d10| 2a 2a 2a 2a 2a 2a 2a 2a | 2a 2a 2a 2a 2a 2a 2a 2a |********|********|
|00003d20| 2a 2a 2a 2a 2a 2a 2a 2a | 2a 2a 2a 2a 2a 2a 2a 2a |********|********|
|00003d30| 7d 0a 58 09 50 52 4f 43 | 45 44 55 52 45 20 49 6e |}.X.PROC|EDURE In|
|00003d40| 69 74 3b 0a 58 0a 58 7b | 20 20 2a 2a 2a 2a 2a 2a |it;.X.X{| ******|
|00003d50| 2a 2a 2a 2a 2a 2a 2a 2a | 2a 2a 2a 2a 2a 2a 2a 2a |********|********|
|00003d60| 2a 2a 2a 2a 2a 2a 2a 2a | 2a 2a 2a 2a 2a 2a 2a 2a |********|********|
|00003d70| 2a 2a 2a 2a 2a 2a 2a 2a | 2a 2a 2a 2a 2a 2a 2a 2a |********|********|
|00003d80| 2a 2a 2a 2a 2a 2a 2a 2a | 2a 2a 2a 2a 2a 2a 2a 2a |********|********|
|00003d90| 2a 2a 2a 2a 2a 7d 0a 58 | 7b 20 20 47 65 74 20 74 |*****}.X|{ Get t|
|00003da0| 68 65 20 6e 75 6d 62 65 | 72 20 6f 66 20 62 61 72 |he numbe|r of bar|
|00003db0| 73 20 74 6f 20 6d 6f 76 | 65 7d 0a 58 7b 20 20 2a |s to mov|e}.X{ *|
|00003dc0| 2a 2a 2a 2a 2a 2a 2a 2a | 2a 2a 2a 2a 2a 2a 2a 2a |********|********|
|00003dd0| 2a 2a 2a 2a 2a 2a 2a 2a | 2a 2a 2a 2a 2a 2a 2a 2a |********|********|
|00003de0| 2a 2a 2a 2a 2a 2a 2a 2a | 2a 2a 2a 2a 2a 2a 2a 2a |********|********|
|00003df0| 2a 2a 2a 2a 2a 2a 2a 2a | 2a 2a 2a 2a 2a 2a 2a 2a |********|********|
|00003e00| 2a 2a 2a 2a 2a 2a 2a 2a | 2a 2a 7d 0a 58 09 09 50 |********|**}.X..P|
|00003e10| 52 4f 43 45 44 55 52 45 | 20 47 65 74 4e 75 6d 42 |ROCEDURE| GetNumB|
|00003e20| 61 72 73 3b 0a 58 09 09 | 09 56 41 52 0a 58 09 09 |ars;.X..|.VAR.X..|
|00003e30| 09 09 6c 44 6c 6f 67 20 | 3a 20 44 69 61 6c 6f 67 |..lDlog |: Dialog|
|00003e40| 50 74 72 3b 0a 58 09 09 | 09 09 6c 49 74 65 6d 20 |Ptr;.X..|..lItem |
|00003e50| 3a 20 69 6e 74 65 67 65 | 72 3b 0a 58 09 09 09 09 |: intege|r;.X....|
|00003e60| 6c 54 79 70 65 20 3a 20 | 69 6e 74 65 67 65 72 3b |lType : |integer;|
|00003e70| 0a 58 09 09 09 09 6c 49 | 74 65 6d 48 61 6e 64 20 |.X....lI|temHand |
|00003e80| 3a 20 48 61 6e 64 6c 65 | 3b 0a 58 09 09 09 09 6c |: Handle|;.X....l|
|00003e90| 42 6f 78 20 3a 20 52 65 | 63 74 3b 0a 58 09 09 09 |Box : Re|ct;.X...|
|00003ea0| 09 6c 54 65 78 74 20 3a | 20 73 74 72 32 35 35 3b |.lText :| str255;|
|00003eb0| 0a 58 09 09 09 09 6c 52 | 73 6c 74 20 3a 20 6c 6f |.X....lR|slt : lo|
|00003ec0| 6e 67 69 6e 74 3b 0a 58 | 09 09 42 45 47 49 4e 0a |ngint;.X|..BEGIN.|
|00003ed0| 58 09 09 09 6c 44 6c 6f | 67 20 3a 3d 20 47 65 74 |X...lDlo|g := Get|
|00003ee0| 4e 65 77 44 69 61 6c 6f | 67 28 6b 44 4c 4f 47 2c |NewDialo|g(kDLOG,|
|00003ef0| 20 4e 49 4c 2c 20 70 6f | 69 6e 74 65 72 28 2d 31 | NIL, po|inter(-1|
|00003f00| 29 29 3b 0a 58 09 09 09 | 52 45 50 45 41 54 0a 58 |));.X...|REPEAT.X|
|00003f10| 09 09 09 09 4d 6f 64 61 | 6c 44 69 61 6c 6f 67 28 |....Moda|lDialog(|
|00003f20| 4e 49 4c 2c 20 6c 49 74 | 65 6d 29 3b 0a 58 09 09 |NIL, lIt|em);.X..|
|00003f30| 09 09 47 65 74 44 49 74 | 65 6d 28 6c 44 6c 6f 67 |..GetDIt|em(lDlog|
|00003f40| 2c 20 32 2c 20 6c 74 79 | 70 65 2c 20 6c 49 74 65 |, 2, lty|pe, lIte|
|00003f50| 6d 48 61 6e 64 2c 20 6c | 42 6f 78 29 3b 0a 58 09 |mHand, l|Box);.X.|
|00003f60| 09 09 09 47 65 74 49 54 | 65 78 74 28 6c 49 74 65 |...GetIT|ext(lIte|
|00003f70| 6d 48 61 6e 64 2c 20 6c | 54 65 78 74 29 3b 0a 58 |mHand, l|Text);.X|
|00003f80| 09 09 09 09 53 74 72 69 | 6e 67 54 6f 4e 75 6d 28 |....Stri|ngToNum(|
|00003f90| 6c 54 65 78 74 2c 20 6c | 52 73 6c 74 29 3b 0a 58 |lText, l|Rslt);.X|
|00003fa0| 09 09 09 09 67 4e 75 6d | 42 61 72 73 20 3a 3d 20 |....gNum|Bars := |
|00003fb0| 69 6e 74 65 67 65 72 28 | 6c 52 73 6c 74 29 3b 0a |integer(|lRslt);.|
|00003fc0| 58 09 09 09 55 4e 54 49 | 4c 20 28 67 4e 75 6d 42 |X...UNTI|L (gNumB|
|00003fd0| 61 72 73 20 3c 3d 20 36 | 29 20 41 4e 44 20 28 67 |ars <= 6|) AND (g|
|00003fe0| 4e 75 6d 42 61 72 73 20 | 3e 3d 20 33 29 3b 0a 58 |NumBars |>= 3);.X|
|00003ff0| 09 09 09 44 69 73 70 6f | 73 44 69 61 6c 6f 67 28 |...Dispo|sDialog(|
|00004000| 6c 44 6c 6f 67 29 3b 0a | 58 09 09 45 4e 44 3b 0a |lDlog);.|X..END;.|
|00004010| 58 0a 58 7b 20 20 2a 2a | 2a 2a 2a 2a 2a 2a 2a 2a |X.X{ **|********|
|00004020| 2a 2a 2a 2a 2a 2a 2a 2a | 2a 2a 2a 2a 2a 2a 2a 2a |********|********|
|00004030| 2a 2a 2a 2a 2a 2a 2a 2a | 2a 2a 2a 2a 2a 2a 2a 2a |********|********|
|00004040| 2a 2a 2a 2a 2a 2a 2a 2a | 2a 2a 2a 2a 2a 2a 2a 2a |********|********|
|00004050| 2a 2a 2a 2a 2a 2a 2a 2a | 2a 2a 2a 2a 2a 2a 2a 2a |********|********|
|00004060| 2a 7d 0a 58 7b 20 20 44 | 72 61 77 20 74 68 65 20 |*}.X{ D|raw the |
|00004070| 50 65 67 73 7d 0a 58 7b | 20 20 2a 2a 2a 2a 2a 2a |Pegs}.X{| ******|
|00004080| 2a 2a 2a 2a 2a 2a 2a 2a | 2a 2a 2a 2a 2a 2a 2a 2a |********|********|
|00004090| 2a 2a 2a 2a 2a 2a 2a 2a | 2a 2a 2a 2a 2a 2a 2a 2a |********|********|
|000040a0| 2a 2a 2a 2a 2a 2a 2a 2a | 2a 2a 2a 2a 2a 2a 2a 2a |********|********|
|000040b0| 2a 2a 2a 2a 2a 2a 2a 2a | 2a 2a 2a 2a 2a 2a 2a 2a |********|********|
|000040c0| 2a 2a 2a 2a 2a 7d 0a 58 | 09 09 50 52 4f 43 45 44 |*****}.X|..PROCED|
|000040d0| 55 52 45 20 44 72 61 77 | 53 63 72 65 65 6e 3b 0a |URE Draw|Screen;.|
|000040e0| 58 09 09 09 56 41 52 0a | 58 09 09 09 09 6c 54 65 |X...VAR.|X....lTe|
|000040f0| 6d 70 20 3a 20 52 65 63 | 74 3b 0a 58 09 09 42 45 |mp : Rec|t;.X..BE|
|00004100| 47 49 4e 0a 58 09 09 09 | 53 65 74 50 6f 72 74 28 |GIN.X...|SetPort(|
|00004110| 67 44 72 61 77 50 6f 72 | 74 29 3b 0a 58 09 09 09 |gDrawPor|t);.X...|
|00004120| 53 65 74 52 65 63 74 28 | 6c 54 65 6d 70 2c 20 38 |SetRect(|lTemp, 8|
|00004130| 2c 20 32 33 35 2c 20 31 | 35 32 2c 20 32 34 33 29 |, 235, 1|52, 243)|
|00004140| 3b 0a 58 09 09 09 46 69 | 6c 6c 52 65 63 74 28 6c |;.X...Fi|llRect(l|
|00004150| 54 65 6d 70 2c 20 42 6c | 61 63 6b 29 3b 0a 58 09 |Temp, Bl|ack);.X.|
|00004160| 09 09 53 65 74 52 65 63 | 74 28 6c 54 65 6d 70 2c |..SetRec|t(lTemp,|
|00004170| 20 31 38 34 2c 20 32 33 | 35 2c 20 33 32 38 2c 20 | 184, 23|5, 328, |
|00004180| 32 34 33 29 3b 0a 58 09 | 09 09 46 69 6c 6c 52 65 |243);.X.|..FillRe|
|00004190| 63 74 28 6c 54 65 6d 70 | 2c 20 42 6c 61 63 6b 29 |ct(lTemp|, Black)|
|000041a0| 3b 0a 58 09 09 09 53 65 | 74 52 65 63 74 28 6c 54 |;.X...Se|tRect(lT|
|000041b0| 65 6d 70 2c 20 33 36 30 | 2c 20 32 33 35 2c 20 35 |emp, 360|, 235, 5|
|000041c0| 30 34 2c 20 32 34 33 29 | 3b 0a 58 09 09 09 46 69 |04, 243)|;.X...Fi|
|000041d0| 6c 6c 52 65 63 74 28 6c | 54 65 6d 70 2c 20 42 6c |llRect(l|Temp, Bl|
|000041e0| 61 63 6b 29 3b 0a 58 09 | 09 09 53 65 74 52 65 63 |ack);.X.|..SetRec|
|000041f0| 74 28 6c 54 65 6d 70 2c | 20 37 36 2c 20 39 39 2c |t(lTemp,| 76, 99,|
|00004200| 20 38 34 2c 20 32 33 35 | 29 3b 0a 58 09 09 09 46 | 84, 235|);.X...F|
|00004210| 69 6c 6c 52 65 63 74 28 | 6c 54 65 6d 70 2c 20 42 |illRect(|lTemp, B|
|00004220| 6c 61 63 6b 29 3b 0a 58 | 09 09 09 53 65 74 52 65 |lack);.X|...SetRe|
|00004230| 63 74 28 6c 54 65 6d 70 | 2c 20 32 35 32 2c 20 39 |ct(lTemp|, 252, 9|
|00004240| 39 2c 20 32 36 30 2c 20 | 32 33 35 29 3b 0a 58 09 |9, 260, |235);.X.|
|00004250| 09 09 46 69 6c 6c 52 65 | 63 74 28 6c 54 65 6d 70 |..FillRe|ct(lTemp|
|00004260| 2c 20 42 6c 61 63 6b 29 | 3b 0a 58 09 09 09 53 65 |, Black)|;.X...Se|
|00004270| 74 52 65 63 74 28 6c 54 | 65 6d 70 2c 20 34 32 38 |tRect(lT|emp, 428|
|00004280| 2c 20 39 39 2c 20 34 33 | 36 2c 20 32 33 35 29 3b |, 99, 43|6, 235);|
|00004290| 0a 58 09 09 09 46 69 6c | 6c 52 65 63 74 28 6c 54 |.X...Fil|lRect(lT|
|000042a0| 65 6d 70 2c 20 42 6c 61 | 63 6b 29 3b 0a 58 09 09 |emp, Bla|ck);.X..|
|000042b0| 45 4e 44 3b 0a 58 0a 58 | 7b 20 20 2a 2a 2a 2a 2a |END;.X.X|{ *****|
|000042c0| 2a 2a 2a 2a 2a 2a 2a 2a | 2a 2a 2a 2a 2a 2a 2a 2a |********|********|
|000042d0| 2a 2a 2a 2a 2a 2a 2a 2a | 2a 2a 2a 2a 2a 2a 2a 2a |********|********|
|000042e0| 2a 2a 2a 2a 2a 2a 2a 2a | 2a 2a 2a 2a 2a 2a 2a 2a |********|********|
|000042f0| 2a 2a 2a 2a 2a 2a 2a 2a | 2a 2a 2a 2a 2a 2a 2a 2a |********|********|
|00004300| 2a 2a 2a 2a 2a 2a 7d 0a | 58 7b 20 20 43 61 6c 63 |******}.|X{ Calc|
|00004310| 75 6c 61 74 65 20 74 68 | 65 20 64 61 74 61 20 66 |ulate th|e data f|
|00004320| 6f 72 20 74 68 65 20 66 | 72 61 6d 65 73 20 6f 66 |or the f|rames of|
|00004330| 20 74 68 65 20 62 61 72 | 73 7d 0a 58 7b 20 20 2a | the bar|s}.X{ *|
|00004340| 2a 2a 2a 2a 2a 2a 2a 2a | 2a 2a 2a 2a 2a 2a 2a 2a |********|********|
|00004350| 2a 2a 2a 2a 2a 2a 2a 2a | 2a 2a 2a 2a 2a 2a 2a 2a |********|********|
|00004360| 2a 2a 2a 2a 2a 2a 2a 2a | 2a 2a 2a 2a 2a 2a 2a 2a |********|********|
|00004370| 2a 2a 2a 2a 2a 2a 2a 2a | 2a 2a 2a 2a 2a 2a 2a 2a |********|********|
|00004380| 2a 2a 2a 2a 2a 2a 2a 2a | 2a 2a 7d 0a 58 09 09 50 |********|**}.X..P|
|00004390| 52 4f 43 45 44 55 52 45 | 20 53 65 74 75 70 44 61 |ROCEDURE| SetupDa|
|000043a0| 74 61 3b 0a 58 09 09 09 | 56 41 52 0a 58 09 09 09 |ta;.X...|VAR.X...|
|000043b0| 09 6c 42 61 72 20 3a 20 | 74 42 61 72 3b 0a 58 09 |.lBar : |tBar;.X.|
|000043c0| 09 09 09 6c 46 72 61 6d | 65 20 3a 20 69 6e 74 65 |...lFram|e : inte|
|000043d0| 67 65 72 3b 0a 58 09 09 | 09 09 50 74 41 2c 20 50 |ger;.X..|..PtA, P|
|000043e0| 74 42 20 3a 20 70 6f 69 | 6e 74 3b 0a 58 0a 58 7b |tB : poi|nt;.X.X{|
|000043f0| 20 20 20 2a 2a 2a 2a 2a | 2a 2a 2a 2a 2a 2a 2a 2a | *****|********|
|00004400| 2a 2a 2a 2a 2a 2a 2a 2a | 2a 2a 2a 2a 2a 2a 2a 2a |********|********|
|00004410| 2a 2a 2a 2a 2a 2a 2a 2a | 2a 2a 2a 2a 2a 2a 2a 2a |********|********|
|00004420| 2a 2a 2a 2a 2a 2a 2a 2a | 2a 2a 2a 2a 2a 2a 2a 2a |********|********|
|00004430| 2a 2a 2a 2a 2a 2a 2a 2a | 2a 2a 2a 2a 2a 7d 0a 58 |********|*****}.X|
|00004440| 7b 20 20 20 43 61 6c 63 | 75 6c 61 74 65 20 74 77 |{ Calc|ulate tw|
|00004450| 6f 20 70 6f 69 6e 74 20 | 74 61 6e 67 65 6e 74 20 |o point |tangent |
|00004460| 74 6f 20 74 68 65 20 6c | 69 6e 65 20 70 41 6e 67 |to the l|ine pAng|
|00004470| 6c 65 20 64 65 67 72 65 | 65 73 20 61 72 6f 75 6e |le degre|es aroun|
|00004480| 64 20 74 68 65 20 63 69 | 72 63 6c 65 7d 0a 58 7b |d the ci|rcle}.X{|
|00004490| 20 20 20 2a 2a 2a 2a 2a | 2a 2a 2a 2a 2a 2a 2a 2a | *****|********|
|000044a0| 2a 2a 2a 2a 2a 2a 2a 2a | 2a 2a 2a 2a 2a 2a 2a 2a |********|********|
|000044b0| 2a 2a 2a 2a 2a 2a 2a 2a | 2a 2a 2a 2a 2a 2a 2a 2a |********|********|
|000044c0| 2a 2a 2a 2a 2a 2a 2a 2a | 2a 2a 2a 2a 2a 2a 2a 2a |********|********|
|000044d0| 2a 2a 2a 2a 2a 2a 2a 2a | 2a 2a 2a 2a 2a 7d 0a 58 |********|*****}.X|
|000044e0| 09 09 09 50 52 4f 43 45 | 44 55 52 45 20 47 65 74 |...PROCE|DURE Get|
|000044f0| 32 54 61 6e 67 20 28 70 | 41 6e 67 6c 65 20 3a 20 |2Tang (p|Angle : |
|00004500| 72 65 61 6c 3b 0a 58 09 | 09 09 09 09 09 09 09 09 |real;.X.|........|
|00004510| 09 09 70 52 61 64 20 3a | 20 69 6e 74 65 67 65 72 |..pRad :| integer|
|00004520| 3b 0a 58 09 09 09 09 09 | 09 09 09 09 09 09 56 41 |;.X.....|......VA|
|00004530| 52 20 50 74 41 2c 20 50 | 74 42 20 3a 20 70 6f 69 |R PtA, P|tB : poi|
|00004540| 6e 74 29 3b 0a 58 09 09 | 09 09 56 41 52 0a 58 09 |nt);.X..|..VAR.X.|
|00004550| 09 09 09 09 74 65 6d 70 | 2c 20 74 65 6d 70 32 2c |....temp|, temp2,|
|00004560| 20 78 63 2c 20 79 63 2c | 20 6d 2c 20 70 65 72 70 | xc, yc,| m, perp|
|00004570| 6d 20 3a 20 72 65 61 6c | 3b 0a 58 09 09 09 42 45 |m : real|;.X...BE|
|00004580| 47 49 4e 0a 58 09 09 09 | 09 79 63 20 3a 3d 20 70 |GIN.X...|.yc := p|
|00004590| 52 61 64 20 2a 20 63 6f | 73 28 70 41 6e 67 6c 65 |Rad * co|s(pAngle|
|000045a0| 20 2a 20 70 69 20 2f 20 | 31 38 30 29 3b 0a 58 09 | * pi / |180);.X.|
|000045b0| 09 09 09 78 63 20 3a 3d | 20 70 52 61 64 20 2a 20 |...xc :=| pRad * |
|000045c0| 73 69 6e 28 70 41 6e 67 | 6c 65 20 2a 20 70 69 20 |sin(pAng|le * pi |
|000045d0| 2f 20 31 38 30 29 3b 0a | 58 09 09 09 09 70 65 72 |/ 180);.|X....per|
|000045e0| 70 6d 20 3a 3d 20 2d 78 | 63 20 2f 20 79 63 3b 0a |pm := -x|c / yc;.|
|000045f0| 58 09 09 09 09 74 65 6d | 70 20 3a 3d 20 6b 42 61 |X....tem|p := kBa|
|00004600| 72 57 69 64 20 2f 20 28 | 70 65 72 70 6d 20 2a 20 |rWid / (|perpm * |
|00004610| 70 65 72 70 6d 20 2b 20 | 31 29 3b 0a 58 09 09 09 |perpm + |1);.X...|
|00004620| 09 74 65 6d 70 32 20 3a | 3d 20 74 65 6d 70 20 2a |.temp2 :|= temp *|
|00004630| 20 70 65 72 70 6d 3b 0a | 58 09 09 09 09 50 74 41 | perpm;.|X....PtA|
|00004640| 2e 68 20 3a 3d 20 72 6f | 75 6e 64 28 79 63 20 2d |.h := ro|und(yc -|
|00004650| 20 74 65 6d 70 32 29 3b | 0a 58 09 09 09 09 50 74 | temp2);|.X....Pt|
|00004660| 41 2e 76 20 3a 3d 20 72 | 6f 75 6e 64 28 78 63 20 |A.v := r|ound(xc |
|00004670| 2d 20 74 65 6d 70 29 3b | 0a 58 09 09 09 09 50 74 |- temp);|.X....Pt|
|00004680| 42 2e 68 20 3a 3d 20 72 | 6f 75 6e 64 28 79 63 20 |B.h := r|ound(yc |
|00004690| 2b 20 74 65 6d 70 32 29 | 3b 0a 58 09 09 09 09 50 |+ temp2)|;.X....P|
|000046a0| 74 42 2e 76 20 3a 3d 20 | 72 6f 75 6e 64 28 78 63 |tB.v := |round(xc|
|000046b0| 20 2b 20 74 65 6d 70 29 | 3b 0a 58 09 09 09 45 4e | + temp)|;.X...EN|
|000046c0| 44 3b 0a 58 0a 58 7b 20 | 20 20 2a 2a 2a 2a 2a 2a |D;.X.X{ | ******|
|000046d0| 2a 2a 2a 2a 2a 2a 2a 2a | 2a 2a 2a 2a 2a 2a 2a 2a |********|********|
|000046e0| 2a 2a 2a 2a 2a 2a 2a 2a | 2a 2a 2a 2a 2a 2a 2a 2a |********|********|
|000046f0| 2a 2a 2a 2a 2a 2a 2a 2a | 2a 2a 2a 2a 2a 2a 2a 2a |********|********|
|00004700| 2a 2a 2a 2a 2a 2a 2a 2a | 2a 2a 2a 2a 2a 2a 2a 2a |********|********|
|00004710| 2a 2a 2a 2a 7d 0a 58 7b | 20 20 20 54 72 61 6e 73 |****}.X{| Trans|
|00004720| 66 6f 72 6d 20 50 74 41 | 20 61 6e 64 20 50 74 42 |form PtA| and PtB|
|00004730| 20 69 6e 74 6f 20 38 20 | 6d 6f 72 65 20 70 6f 69 | into 8 |more poi|
|00004740| 6e 74 73 7d 0a 58 7b 20 | 20 20 2a 2a 2a 2a 2a 2a |nts}.X{ | ******|
|00004750| 2a 2a 2a 2a 2a 2a 2a 2a | 2a 2a 2a 2a 2a 2a 2a 2a |********|********|
|00004760| 2a 2a 2a 2a 2a 2a 2a 2a | 2a 2a 2a 2a 2a 2a 2a 2a |********|********|
|00004770| 2a 2a 2a 2a 2a 2a 2a 2a | 2a 2a 2a 2a 2a 2a 2a 2a |********|********|
|00004780| 2a 2a 2a 2a 2a 2a 2a 2a | 2a 2a 2a 2a 2a 2a 2a 2a |********|********|
|00004790| 2a 2a 2a 2a 7d 0a 58 09 | 09 09 50 52 4f 43 45 44 |****}.X.|..PROCED|
|000047a0| 55 52 45 20 42 75 69 6c | 64 44 61 74 61 20 28 70 |URE Buil|dData (p|
|000047b0| 49 6e 64 20 3a 20 69 6e | 74 65 67 65 72 3b 0a 58 |Ind : in|teger;.X|
|000047c0| 09 09 09 09 09 09 09 09 | 09 09 09 70 42 61 72 20 |........|...pBar |
|000047d0| 3a 20 74 42 61 72 3b 0a | 58 09 09 09 09 09 09 09 |: tBar;.|X.......|
|000047e0| 09 09 09 09 50 74 41 2c | 20 50 74 42 20 3a 20 70 |....PtA,| PtB : p|
|000047f0| 6f 69 6e 74 29 3b 0a 58 | 0a 58 7b 20 20 20 20 2a |oint);.X|.X{ *|
|00004800| 2a 2a 2a 2a 2a 2a 2a 2a | 2a 2a 2a 2a 2a 2a 2a 2a |********|********|
|00004810| 2a 2a 2a 2a 2a 2a 2a 2a | 2a 2a 2a 2a 2a 2a 2a 2a |********|********|
|00004820| 2a 2a 2a 2a 2a 2a 2a 2a | 2a 2a 2a 2a 2a 2a 2a 2a |********|********|
|00004830| 2a 2a 2a 2a 2a 2a 2a 2a | 2a 2a 2a 2a 2a 2a 2a 2a |********|********|
|00004840| 2a 2a 2a 2a 2a 2a 2a 2a | 7d 0a 58 7b 20 20 20 20 |********|}.X{ |
|00004850| 42 75 69 6c 64 20 61 20 | 72 65 67 69 6f 6e 20 61 |Build a |region a|
|00004860| 72 6f 75 6e 64 20 74 68 | 65 20 67 69 76 65 6e 20 |round th|e given |
|00004870| 70 6f 69 6e 74 73 7d 0a | 58 7b 20 20 20 20 2a 2a |points}.|X{ **|
|00004880| 2a 2a 2a 2a 2a 2a 2a 2a | 2a 2a 2a 2a 2a 2a 2a 2a |********|********|
|00004890| 2a 2a 2a 2a 2a 2a 2a 2a | 2a 2a 2a 2a 2a 2a 2a 2a |********|********|
|000048a0| 2a 2a 2a 2a 2a 2a 2a 2a | 2a 2a 2a 2a 2a 2a 2a 2a |********|********|
|000048b0| 2a 2a 2a 2a 2a 2a 2a 2a | 2a 2a 2a 2a 2a 2a 2a 2a |********|********|
|000048c0| 2a 2a 2a 2a 2a 2a 2a 7d | 0a 58 09 09 09 09 50 52 |*******}|.X....PR|
|000048d0| 4f 43 45 44 55 52 45 20 | 49 6e 73 65 72 74 45 6c |OCEDURE |InsertEl|
|000048e0| 65 6d 20 28 70 49 6e 64 | 65 78 2c 20 70 50 31 68 |em (pInd|ex, pP1h|
|000048f0| 2c 20 70 50 31 76 2c 20 | 70 50 32 68 2c 20 70 50 |, pP1v, |pP2h, pP|
|00004900| 32 76 20 3a 20 69 6e 74 | 65 67 65 72 29 3b 0a 58 |2v : int|eger);.X|
|00004910| 09 09 09 09 42 45 47 49 | 4e 0a 58 09 09 09 09 09 |....BEGI|N.X.....|
|00004920| 57 49 54 48 20 67 42 61 | 72 5b 70 42 61 72 5d 20 |WITH gBa|r[pBar] |
|00004930| 44 4f 0a 58 09 09 09 09 | 09 09 42 45 47 49 4e 0a |DO.X....|..BEGIN.|
|00004940| 58 09 09 09 09 09 09 09 | 66 46 72 61 6d 65 5b 70 |X.......|fFrame[p|
|00004950| 49 6e 64 65 78 5d 2e 66 | 52 67 6e 20 3a 3d 20 4e |Index].f|Rgn := N|
|00004960| 65 77 52 67 6e 3b 0a 58 | 09 09 09 09 09 09 09 4f |ewRgn;.X|.......O|
|00004970| 70 65 6e 52 67 6e 3b 0a | 58 09 09 09 09 09 09 09 |penRgn;.|X.......|
|00004980| 4d 6f 76 65 54 6f 28 70 | 50 31 68 2c 20 70 50 31 |MoveTo(p|P1h, pP1|
|00004990| 76 29 3b 0a 58 09 09 09 | 09 09 09 09 4c 69 6e 65 |v);.X...|....Line|
|000049a0| 54 6f 28 70 50 32 68 2c | 20 70 50 32 76 29 3b 0a |To(pP2h,| pP2v);.|
|000049b0| 58 09 09 09 09 09 09 09 | 4c 69 6e 65 54 6f 28 2d |X.......|LineTo(-|
|000049c0| 70 50 31 68 2c 20 2d 70 | 50 31 76 29 3b 0a 58 09 |pP1h, -p|P1v);.X.|
|000049d0| 09 09 09 09 09 09 4c 69 | 6e 65 54 6f 28 2d 70 50 |......Li|neTo(-pP|
|000049e0| 32 68 2c 20 2d 70 50 32 | 76 29 3b 0a 58 09 09 09 |2h, -pP2|v);.X...|
|000049f0| 09 09 09 09 4c 69 6e 65 | 54 6f 28 70 50 31 68 2c |....Line|To(pP1h,|
|00004a00| 20 70 50 31 76 29 3b 0a | 58 09 09 09 09 09 09 09 | pP1v);.|X.......|
|00004a10| 43 6c 6f 73 65 52 67 6e | 28 66 46 72 61 6d 65 5b |CloseRgn|(fFrame[|
|00004a20| 70 49 6e 64 65 78 5d 2e | 66 52 67 6e 29 3b 0a 58 |pIndex].|fRgn);.X|
|00004a30| 09 09 09 09 09 09 09 66 | 46 72 61 6d 65 5b 70 49 |.......f|Frame[pI|
|00004a40| 6e 64 65 78 5d 2e 66 4f | 72 67 20 3a 3d 20 66 46 |ndex].fO|rg := fF|
|00004a50| 72 61 6d 65 5b 70 49 6e | 64 65 78 5d 2e 66 52 67 |rame[pIn|dex].fRg|
|00004a60| 6e 5e 5e 2e 72 67 6e 42 | 42 6f 78 2e 74 6f 70 6c |n^^.rgnB|Box.topl|
|00004a70| 65 66 74 3b 0a 58 09 09 | 09 09 09 09 09 4f 66 66 |eft;.X..|.....Off|
|00004a80| 73 65 74 52 67 6e 28 66 | 46 72 61 6d 65 5b 70 49 |setRgn(f|Frame[pI|
|00004a90| 6e 64 65 78 5d 2e 66 52 | 67 6e 2c 20 66 4c 6f 63 |ndex].fR|gn, fLoc|
|00004aa0| 2e 68 2c 20 66 4c 6f 63 | 2e 76 29 3b 0a 58 09 09 |.h, fLoc|.v);.X..|
|00004ab0| 09 09 09 09 45 4e 44 3b | 0a 58 09 09 09 09 45 4e |....END;|.X....EN|
|00004ac0| 44 3b 0a 58 0a 58 09 09 | 09 42 45 47 49 4e 0a 58 |D;.X.X..|.BEGIN.X|
|00004ad0| 09 09 09 09 49 6e 73 65 | 72 74 45 6c 65 6d 28 70 |....Inse|rtElem(p|
|00004ae0| 49 6e 64 2c 20 2d 50 74 | 41 2e 76 2c 20 50 74 41 |Ind, -Pt|A.v, PtA|
|00004af0| 2e 68 2c 20 2d 50 74 42 | 2e 76 2c 20 50 74 42 2e |.h, -PtB|.v, PtB.|
|00004b00| 68 29 3b 0a 58 09 09 09 | 09 49 46 20 70 49 6e 64 |h);.X...|.IF pInd|
|00004b10| 20 3c 3e 20 36 20 54 48 | 45 4e 0a 58 09 09 09 09 | <> 6 TH|EN.X....|
|00004b20| 09 49 6e 73 65 72 74 45 | 6c 65 6d 28 6b 42 61 73 |.InsertE|lem(kBas|
|00004b30| 65 20 2d 20 70 49 6e 64 | 20 2b 20 32 2c 20 50 74 |e - pInd| + 2, Pt|
|00004b40| 41 2e 68 2c 20 2d 50 74 | 41 2e 76 2c 20 50 74 42 |A.h, -Pt|A.v, PtB|
|00004b50| 2e 68 2c 20 2d 50 74 42 | 2e 76 29 3b 0a 58 09 09 |.h, -PtB|.v);.X..|
|00004b60| 09 09 49 6e 73 65 72 74 | 45 6c 65 6d 28 6b 42 61 |..Insert|Elem(kBa|
|00004b70| 73 65 20 2b 20 70 49 6e | 64 2c 20 2d 50 74 41 2e |se + pIn|d, -PtA.|
|00004b80| 68 2c 20 2d 50 74 41 2e | 76 2c 20 2d 50 74 42 2e |h, -PtA.|v, -PtB.|
|00004b90| 68 2c 20 2d 50 74 42 2e | 76 29 3b 0a 58 09 09 09 |h, -PtB.|v);.X...|
|00004ba0| 09 49 46 20 70 49 6e 64 | 20 3c 3e 20 36 20 54 48 |.IF pInd| <> 6 TH|
|00004bb0| 45 4e 0a 58 09 09 09 09 | 09 49 6e 73 65 72 74 45 |EN.X....|.InsertE|
|00004bc0| 6c 65 6d 28 6b 42 61 73 | 65 20 2a 20 32 20 2d 20 |lem(kBas|e * 2 - |
|00004bd0| 70 49 6e 64 20 2b 20 32 | 2c 20 2d 50 74 41 2e 76 |pInd + 2|, -PtA.v|
|00004be0| 2c 20 2d 50 74 41 2e 68 | 2c 20 2d 50 74 42 2e 76 |, -PtA.h|, -PtB.v|
|00004bf0| 2c 20 2d 50 74 42 2e 68 | 29 3b 0a 58 09 09 09 09 |, -PtB.h|);.X....|
|00004c00| 49 6e 73 65 72 74 45 6c | 65 6d 28 6b 42 61 73 65 |InsertEl|em(kBase|
|00004c10| 20 2a 20 32 20 2b 20 70 | 49 6e 64 2c 20 50 74 41 | * 2 + p|Ind, PtA|
|00004c20| 2e 76 2c 20 2d 50 74 41 | 2e 68 2c 20 50 74 42 2e |.v, -PtA|.h, PtB.|
|00004c30| 76 2c 20 2d 50 74 42 2e | 68 29 3b 0a 58 09 09 09 |v, -PtB.|h);.X...|
|00004c40| 09 49 46 20 70 49 6e 64 | 20 3c 3e 20 36 20 54 48 |.IF pInd| <> 6 TH|
|00004c50| 45 4e 0a 58 09 09 09 09 | 09 49 6e 73 65 72 74 45 |EN.X....|.InsertE|
|00004c60| 6c 65 6d 28 6b 42 61 73 | 65 20 2a 20 33 20 2d 20 |lem(kBas|e * 3 - |
|00004c70| 70 49 6e 64 20 2b 20 32 | 2c 20 2d 50 74 41 2e 68 |pInd + 2|, -PtA.h|
|00004c80| 2c 20 50 74 41 2e 76 2c | 20 2d 50 74 42 2e 68 2c |, PtA.v,| -PtB.h,|
|00004c90| 20 50 74 42 2e 76 29 3b | 0a 58 09 09 09 09 49 6e | PtB.v);|.X....In|
|00004ca0| 73 65 72 74 45 6c 65 6d | 28 6b 42 61 73 65 20 2a |sertElem|(kBase *|
|00004cb0| 20 33 20 2b 20 70 49 6e | 64 2c 20 50 74 41 2e 68 | 3 + pIn|d, PtA.h|
|00004cc0| 2c 20 50 74 41 2e 76 2c | 20 50 74 42 2e 68 2c 20 |, PtA.v,| PtB.h, |
|00004cd0| 50 74 42 2e 76 29 3b 0a | 58 09 09 09 09 49 46 20 |PtB.v);.|X....IF |
|00004ce0| 70 49 6e 64 20 3c 3e 20 | 31 20 54 48 45 4e 0a 58 |pInd <> |1 THEN.X|
|00004cf0| 09 09 09 09 09 49 6e 73 | 65 72 74 45 6c 65 6d 28 |.....Ins|ertElem(|
|00004d00| 6b 42 61 73 65 20 2a 20 | 34 20 2d 20 70 49 6e 64 |kBase * |4 - pInd|
|00004d10| 20 2b 20 32 2c 20 50 74 | 41 2e 76 2c 20 50 74 41 | + 2, Pt|A.v, PtA|
|00004d20| 2e 68 2c 20 50 74 42 2e | 76 2c 20 50 74 42 2e 68 |.h, PtB.|v, PtB.h|
|00004d30| 29 3b 0a 58 09 09 09 45 | 4e 44 3b 0a 58 0a 58 09 |);.X...E|ND;.X.X.|
|00004d40| 09 42 45 47 49 4e 0a 58 | 09 09 09 46 4f 52 20 6c |.BEGIN.X|...FOR l|
|00004d50| 42 61 72 20 3a 3d 20 31 | 20 54 4f 20 67 4e 75 6d |Bar := 1| TO gNum|
|00004d60| 42 61 72 73 20 44 4f 0a | 58 09 09 09 09 57 49 54 |Bars DO.|X....WIT|
|00004d70| 48 20 67 42 61 72 5b 6c | 42 61 72 5d 20 44 4f 20 |H gBar[l|Bar] DO |
|00004d80| 7b 69 6e 69 74 20 74 68 | 65 20 62 61 72 7d 0a 58 |{init th|e bar}.X|
|00004d90| 09 09 09 09 09 42 45 47 | 49 4e 0a 58 09 09 09 09 |.....BEG|IN.X....|
|00004da0| 09 09 66 52 61 64 20 3a | 3d 20 31 36 20 2b 20 28 |..fRad :|= 16 + (|
|00004db0| 6c 42 61 72 20 2d 20 31 | 29 20 2a 20 38 3b 0a 58 |lBar - 1|) * 8;.X|
|00004dc0| 09 09 09 09 09 09 66 49 | 6e 64 20 3a 3d 20 31 30 |......fI|nd := 10|
|00004dd0| 3b 0a 58 09 09 09 09 09 | 09 66 4c 61 73 74 49 6e |;.X.....|.fLastIn|
|00004de0| 64 20 3a 3d 20 31 30 3b | 0a 58 09 09 09 09 09 09 |d := 10;|.X......|
|00004df0| 66 49 6e 64 46 69 6c 6c | 20 3a 3d 20 31 31 3b 0a |fIndFill| := 11;.|
|00004e00| 58 09 09 09 09 09 09 66 | 41 6c 6d 6f 73 74 20 3a |X......f|Almost :|
|00004e10| 3d 20 66 61 6c 73 65 3b | 0a 58 09 09 09 09 09 09 |= false;|.X......|
|00004e20| 57 49 54 48 20 66 53 61 | 76 65 42 69 74 73 2c 20 |WITH fSa|veBits, |
|00004e30| 62 6f 75 6e 64 73 20 44 | 4f 20 7b 43 72 65 61 74 |bounds D|O {Creat|
|00004e40| 65 20 66 53 61 76 65 42 | 69 74 73 7d 0a 58 09 09 |e fSaveB|its}.X..|
|00004e50| 09 09 09 09 09 42 45 47 | 49 4e 0a 58 09 09 09 09 |.....BEG|IN.X....|
|00004e60| 09 09 09 09 53 65 74 52 | 65 63 74 28 62 6f 75 6e |....SetR|ect(boun|
|00004e70| 64 73 2c 20 30 2c 20 30 | 2c 20 66 52 61 64 20 2a |ds, 0, 0|, fRad *|
|00004e80| 20 32 2c 20 38 29 3b 0a | 58 09 09 09 09 09 09 09 | 2, 8);.|X.......|
|00004e90| 09 72 6f 77 42 79 74 65 | 73 20 3a 3d 20 28 28 28 |.rowByte|s := (((|
|00004ea0| 72 69 67 68 74 20 2d 20 | 6c 65 66 74 20 2d 20 31 |right - |left - 1|
|00004eb0| 29 20 44 49 56 20 31 36 | 29 20 2b 20 31 29 20 2a |) DIV 16|) + 1) *|
|00004ec0| 20 32 3b 0a 58 09 09 09 | 09 09 09 09 09 62 61 73 | 2;.X...|.....bas|
|00004ed0| 65 41 64 64 72 20 3a 3d | 20 4e 65 77 50 74 72 28 |eAddr :=| NewPtr(|
|00004ee0| 72 6f 77 42 79 74 65 73 | 20 2a 20 28 62 6f 74 74 |rowBytes| * (bott|
|00004ef0| 6f 6d 20 2d 20 74 6f 70 | 29 29 3b 0a 58 09 09 09 |om - top|));.X...|
|00004f00| 09 09 09 09 45 4e 44 3b | 0a 58 09 09 09 09 09 09 |....END;|.X......|
|00004f10| 53 65 74 50 74 28 66 56 | 65 6c 2c 20 30 2c 20 6b |SetPt(fV|el, 0, k|
|00004f20| 56 65 6c 29 3b 0a 58 09 | 09 09 09 09 09 53 65 74 |Vel);.X.|.....Set|
|00004f30| 50 74 28 66 4c 6f 63 2c | 20 6b 50 65 67 31 2c 20 |Pt(fLoc,| kPeg1, |
|00004f40| 6b 41 6c 74 29 3b 0a 58 | 09 09 09 09 09 09 53 65 |kAlt);.X|......Se|
|00004f50| 74 50 74 28 66 44 65 73 | 74 4c 6f 63 2c 20 6b 50 |tPt(fDes|tLoc, kP|
|00004f60| 65 67 31 2c 20 28 31 38 | 33 20 2b 20 28 6b 4d 61 |eg1, (18|3 + (kMa|
|00004f70| 78 42 61 72 20 2d 20 67 | 4e 75 6d 42 61 72 73 29 |xBar - g|NumBars)|
|00004f80| 20 2a 20 38 29 20 2b 20 | 28 6c 42 61 72 20 2a 20 | * 8) + |(lBar * |
|00004f90| 38 29 29 3b 0a 58 09 09 | 09 09 09 09 66 54 6f 20 |8));.X..|....fTo |
|00004fa0| 3a 3d 20 41 3b 0a 58 09 | 09 09 09 09 09 53 65 74 |:= A;.X.|.....Set|
|00004fb0| 52 65 63 74 28 66 4f 6c | 64 52 65 63 74 2c 20 66 |Rect(fOl|dRect, f|
|00004fc0| 4c 6f 63 2e 68 20 2d 20 | 66 52 61 64 2c 20 66 4c |Loc.h - |fRad, fL|
|00004fd0| 6f 63 2e 76 20 2d 20 66 | 52 61 64 2c 20 66 4c 6f |oc.v - f|Rad, fLo|
|00004fe0| 63 2e 68 20 2b 20 66 52 | 61 64 2c 20 66 4c 6f 63 |c.h + fR|ad, fLoc|
|00004ff0| 2e 76 20 2b 20 66 52 61 | 64 29 3b 0a 58 09 09 09 |.v + fRa|d);.X...|
|00005000| 09 09 09 47 65 74 49 6e | 64 50 61 74 74 65 72 6e |...GetIn|dPattern|
|00005010| 28 66 43 6f 6c 6f 72 2c | 20 73 79 73 50 61 74 4c |(fColor,| sysPatL|
|00005020| 69 73 74 49 44 2c 20 6c | 42 61 72 20 2b 20 31 29 |istID, l|Bar + 1)|
|00005030| 3b 0a 58 09 09 09 09 09 | 09 46 4f 52 20 6c 46 72 |;.X.....|.FOR lFr|
|00005040| 61 6d 65 20 3a 3d 20 31 | 20 54 4f 20 6b 4e 75 6d |ame := 1| TO kNum|
|00005050| 54 75 72 6e 20 2b 20 31 | 20 44 4f 0a 58 09 09 09 |Turn + 1| DO.X...|
|00005060| 09 09 09 09 42 45 47 49 | 4e 0a 58 09 09 09 09 09 |....BEGI|N.X.....|
|00005070| 09 09 09 47 65 74 32 54 | 61 6e 67 28 28 6c 46 72 |...Get2T|ang((lFr|
|00005080| 61 6d 65 20 2d 20 31 29 | 20 2a 20 6b 41 6e 67 6c |ame - 1)| * kAngl|
|00005090| 65 2c 20 66 52 61 64 2c | 20 50 74 41 2c 20 50 74 |e, fRad,| PtA, Pt|
|000050a0| 42 29 3b 0a 58 09 09 09 | 09 09 09 09 09 42 75 69 |B);.X...|.....Bui|
|000050b0| 6c 64 44 61 74 61 28 6c | 46 72 61 6d 65 2c 20 6c |ldData(l|Frame, l|
|000050c0| 42 61 72 2c 20 50 74 41 | 2c 20 50 74 42 29 3b 0a |Bar, PtA|, PtB);.|
|000050d0| 58 09 09 09 09 09 09 09 | 45 4e 44 3b 0a 58 09 09 |X.......|END;.X..|
|000050e0| 09 09 09 45 4e 44 3b 0a | 58 09 09 45 4e 44 3b 0a |...END;.|X..END;.|
|000050f0| 58 0a 58 7b 20 20 2a 2a | 2a 2a 2a 2a 2a 2a 2a 2a |X.X{ **|********|
|00005100| 2a 2a 2a 2a 2a 2a 2a 2a | 2a 2a 2a 2a 2a 2a 2a 2a |********|********|
|00005110| 2a 2a 2a 2a 2a 2a 2a 2a | 2a 2a 2a 2a 2a 2a 2a 2a |********|********|
|00005120| 2a 2a 2a 2a 2a 2a 2a 2a | 2a 2a 2a 2a 2a 2a 2a 2a |********|********|
|00005130| 2a 2a 2a 2a 2a 2a 2a 2a | 2a 2a 2a 2a 2a 2a 2a 2a |********|********|
|00005140| 2a 2a 2a 7d 0a 58 7b 20 | 20 53 65 74 75 70 20 74 |***}.X{ | Setup t|
|00005150| 68 65 20 54 6f 6f 6c 62 | 6f 78 7d 0a 58 7b 20 20 |he Toolb|ox}.X{ |
|00005160| 2a 2a 2a 2a 2a 2a 2a 2a | 2a 2a 2a 2a 2a 2a 2a 2a |********|********|
|00005170| 2a 2a 2a 2a 2a 2a 2a 2a | 2a 2a 2a 2a 2a 2a 2a 2a |********|********|
|00005180| 2a 2a 2a 2a 2a 2a 2a 2a | 2a 2a 2a 2a 2a 2a 2a 2a |********|********|
|00005190| 2a 2a 2a 2a 2a 2a 2a 2a | 2a 2a 2a 2a 2a 2a 2a 2a |********|********|
|000051a0| 2a 2a 2a 2a 2a 2a 2a 2a | 2a 2a 2a 2a 2a 7d 0a 58 |********|*****}.X|
|000051b0| 09 09 50 52 4f 43 45 44 | 55 52 45 20 49 6e 69 74 |..PROCED|URE Init|
|000051c0| 54 6f 6f 6c 62 6f 78 3b | 0a 58 09 09 42 45 47 49 |Toolbox;|.X..BEGI|
|000051d0| 4e 0a 58 09 09 09 49 6e | 69 74 47 72 61 66 28 40 |N.X...In|itGraf(@|
|000051e0| 74 68 65 50 6f 72 74 29 | 3b 0a 58 09 09 09 4d 6f |thePort)|;.X...Mo|
|000051f0| 72 65 4d 61 73 74 65 72 | 73 3b 0a 58 09 09 09 4d |reMaster|s;.X...M|
|00005200| 6f 72 65 4d 61 73 74 65 | 72 73 3b 0a 58 09 09 09 |oreMaste|rs;.X...|
|00005210| 4d 6f 72 65 4d 61 73 74 | 65 72 73 3b 0a 58 09 09 |MoreMast|ers;.X..|
|00005220| 09 4d 6f 72 65 4d 61 73 | 74 65 72 73 3b 0a 58 09 |.MoreMas|ters;.X.|
|00005230| 09 09 4d 6f 72 65 4d 61 | 73 74 65 72 73 3b 0a 58 |..MoreMa|sters;.X|
|00005240| 09 09 09 4d 6f 72 65 4d | 61 73 74 65 72 73 3b 0a |...MoreM|asters;.|
|00005250| 58 09 09 09 4d 6f 72 65 | 4d 61 73 74 65 72 73 3b |X...More|Masters;|
|00005260| 0a 58 09 09 09 4d 6f 72 | 65 4d 61 73 74 65 72 73 |.X...Mor|eMasters|
|00005270| 3b 0a 58 09 09 09 4d 61 | 78 41 70 70 6c 5a 6f 6e |;.X...Ma|xApplZon|
|00005280| 65 3b 0a 58 09 09 09 49 | 6e 69 74 46 6f 6e 74 73 |e;.X...I|nitFonts|
|00005290| 3b 0a 58 09 09 09 49 6e | 69 74 57 69 6e 64 6f 77 |;.X...In|itWindow|
|000052a0| 73 3b 0a 58 09 09 09 49 | 6e 69 74 43 75 72 73 6f |s;.X...I|nitCurso|
|000052b0| 72 3b 0a 58 09 09 09 48 | 69 64 65 43 75 72 73 6f |r;.X...H|ideCurso|
|000052c0| 72 3b 0a 58 09 09 45 4e | 44 3b 0a 58 0a 58 7b 20 |r;.X..EN|D;.X.X{ |
|000052d0| 20 2a 2a 2a 2a 2a 2a 2a | 2a 2a 2a 2a 2a 2a 2a 2a | *******|********|
|000052e0| 2a 2a 2a 2a 2a 2a 2a 2a | 2a 2a 2a 2a 2a 2a 2a 2a |********|********|
|000052f0| 2a 2a 2a 2a 2a 2a 2a 2a | 2a 2a 2a 2a 2a 2a 2a 2a |********|********|
|00005300| 2a 2a 2a 2a 2a 2a 2a 2a | 2a 2a 2a 2a 2a 2a 2a 2a |********|********|
|00005310| 2a 2a 2a 2a 2a 2a 2a 2a | 2a 2a 2a 2a 2a 2a 7d 0a |********|******}.|
|00005320| 58 7b 20 20 53 65 74 75 | 70 20 67 53 61 76 65 50 |X{ Setu|p gSaveP|
|00005330| 6f 72 74 7d 0a 58 7b 20 | 20 2a 2a 2a 2a 2a 2a 2a |ort}.X{ | *******|
|00005340| 2a 2a 2a 2a 2a 2a 2a 2a | 2a 2a 2a 2a 2a 2a 2a 2a |********|********|
|00005350| 2a 2a 2a 2a 2a 2a 2a 2a | 2a 2a 2a 2a 2a 2a 2a 2a |********|********|
|00005360| 2a 2a 2a 2a 2a 2a 2a 2a | 2a 2a 2a 2a 2a 2a 2a 2a |********|********|
|00005370| 2a 2a 2a 2a 2a 2a 2a 2a | 2a 2a 2a 2a 2a 2a 2a 2a |********|********|
|00005380| 2a 2a 2a 2a 2a 2a 7d 0a | 58 09 09 50 52 4f 43 45 |******}.|X..PROCE|
|00005390| 44 55 52 45 20 53 65 74 | 75 70 53 61 76 65 50 6f |DURE Set|upSavePo|
|000053a0| 72 74 3b 0a 58 09 09 42 | 45 47 49 4e 0a 58 09 09 |rt;.X..B|EGIN.X..|
|000053b0| 09 67 53 61 76 65 50 6f | 72 74 20 3a 3d 20 47 72 |.gSavePo|rt := Gr|
|000053c0| 61 66 50 74 72 28 4e 65 | 77 50 74 72 28 73 69 7a |afPtr(Ne|wPtr(siz|
|000053d0| 65 6f 66 28 47 72 61 66 | 50 6f 72 74 29 29 29 3b |eof(Graf|Port)));|
|000053e0| 0a 58 09 09 09 67 45 72 | 61 73 65 52 67 6e 20 3a |.X...gEr|aseRgn :|
|000053f0| 3d 20 4e 65 77 52 67 6e | 3b 0a 58 09 09 09 4f 70 |= NewRgn|;.X...Op|
|00005400| 65 6e 50 6f 72 74 28 67 | 53 61 76 65 50 6f 72 74 |enPort(g|SavePort|
|00005410| 29 3b 0a 58 09 09 09 57 | 49 54 48 20 67 53 61 76 |);.X...W|ITH gSav|
|00005420| 65 50 6f 72 74 5e 2c 20 | 70 6f 72 74 42 69 74 73 |ePort^, |portBits|
|00005430| 2c 20 62 6f 75 6e 64 73 | 20 44 4f 0a 58 09 09 09 |, bounds| DO.X...|
|00005440| 09 42 45 47 49 4e 0a 58 | 09 09 09 09 09 62 6f 75 |.BEGIN.X|.....bou|
|00005450| 6e 64 73 20 3a 3d 20 67 | 44 72 61 77 50 6f 72 74 |nds := g|DrawPort|
|00005460| 5e 2e 70 6f 72 74 42 69 | 74 73 2e 42 6f 75 6e 64 |^.portBi|ts.Bound|
|00005470| 73 3b 0a 58 09 09 09 09 | 09 70 6f 72 74 52 65 63 |s;.X....|.portRec|
|00005480| 74 20 3a 3d 20 62 6f 75 | 6e 64 73 3b 0a 58 09 09 |t := bou|nds;.X..|
|00005490| 09 09 09 72 6f 77 42 79 | 74 65 73 20 3a 3d 20 28 |...rowBy|tes := (|
|000054a0| 28 28 72 69 67 68 74 20 | 2d 20 6c 65 66 74 20 2d |((right |- left -|
|000054b0| 20 31 29 20 44 49 56 20 | 31 36 29 20 2b 20 31 29 | 1) DIV |16) + 1)|
|000054c0| 20 2a 20 32 3b 0a 58 09 | 09 09 09 09 62 61 73 65 | * 2;.X.|....base|
|000054d0| 41 64 64 72 20 3a 3d 20 | 4e 65 77 50 74 72 28 72 |Addr := |NewPtr(r|
|000054e0| 6f 77 42 79 74 65 73 20 | 2a 20 28 62 6f 74 74 6f |owBytes |* (botto|
|000054f0| 6d 20 2d 20 74 6f 70 29 | 29 3b 0a 58 09 09 09 09 |m - top)|);.X....|
|00005500| 09 63 6c 69 70 72 65 63 | 74 28 70 6f 72 74 52 65 |.cliprec|t(portRe|
|00005510| 63 74 29 3b 0a 58 09 09 | 09 09 09 52 65 63 74 52 |ct);.X..|...RectR|
|00005520| 67 6e 28 76 69 73 72 67 | 6e 2c 20 70 6f 72 74 72 |gn(visrg|n, portr|
|00005530| 65 63 74 29 3b 0a 58 09 | 09 09 09 45 4e 44 3b 0a |ect);.X.|...END;.|
|00005540| 58 09 09 45 4e 44 3b 0a | 58 0a 58 7b 20 20 2a 2a |X..END;.|X.X{ **|
|00005550| 2a 2a 2a 2a 2a 2a 2a 2a | 2a 2a 2a 2a 2a 2a 2a 2a |********|********|
|00005560| 2a 2a 2a 2a 2a 2a 2a 2a | 2a 2a 2a 2a 2a 2a 2a 2a |********|********|
|00005570| 2a 2a 2a 2a 2a 2a 2a 2a | 2a 2a 2a 2a 2a 2a 2a 2a |********|********|
|00005580| 2a 2a 2a 2a 2a 2a 2a 2a | 2a 2a 2a 2a 2a 2a 2a 2a |********|********|
|00005590| 2a 2a 2a 2a 2a 2a 2a 2a | 2a 2a 2a 7d 0a 58 7b 20 |********|***}.X{ |
|000055a0| 20 53 65 74 75 70 20 74 | 68 65 20 67 6c 6f 62 61 | Setup t|he globa|
|000055b0| 6c 20 76 61 72 69 61 62 | 6c 65 73 7d 0a 58 7b 20 |l variab|les}.X{ |
|000055c0| 20 2a 2a 2a 2a 2a 2a 2a | 2a 2a 2a 2a 2a 2a 2a 2a | *******|********|
|000055d0| 2a 2a 2a 2a 2a 2a 2a 2a | 2a 2a 2a 2a 2a 2a 2a 2a |********|********|
|000055e0| 2a 2a 2a 2a 2a 2a 2a 2a | 2a 2a 2a 2a 2a 2a 2a 2a |********|********|
|000055f0| 2a 2a 2a 2a 2a 2a 2a 2a | 2a 2a 2a 2a 2a 2a 2a 2a |********|********|
|00005600| 2a 2a 2a 2a 2a 2a 2a 2a | 2a 2a 2a 2a 2a 2a 7d 0a |********|******}.|
|00005610| 58 09 09 50 52 4f 43 45 | 44 55 52 45 20 49 6e 69 |X..PROCE|DURE Ini|
|00005620| 74 47 6c 6f 62 61 6c 73 | 3b 0a 58 09 09 09 56 41 |tGlobals|;.X...VA|
|00005630| 52 0a 58 09 09 09 09 6c | 42 61 72 20 3a 20 74 42 |R.X....l|Bar : tB|
|00005640| 61 72 3b 0a 58 09 09 09 | 09 6c 4d 6f 76 65 20 3a |ar;.X...|.lMove :|
|00005650| 20 74 4d 6f 76 65 3b 0a | 58 09 09 09 09 6c 50 65 | tMove;.|X....lPe|
|00005660| 67 20 3a 20 74 50 65 67 | 3b 0a 58 09 09 42 45 47 |g : tPeg|;.X..BEG|
|00005670| 49 4e 0a 58 09 09 09 49 | 6e 69 74 51 75 65 3b 0a |IN.X...I|nitQue;.|
|00005680| 58 09 09 09 46 4f 52 20 | 6c 50 65 67 20 3a 3d 20 |X...FOR |lPeg := |
|00005690| 41 20 54 4f 20 43 20 44 | 4f 0a 58 09 09 09 09 42 |A TO C D|O.X....B|
|000056a0| 45 47 49 4e 0a 58 09 09 | 09 09 09 49 6e 69 74 53 |EGIN.X..|...InitS|
|000056b0| 74 61 63 6b 28 6c 50 65 | 67 29 3b 0a 58 09 09 09 |tack(lPe|g);.X...|
|000056c0| 09 09 67 50 65 67 5b 6c | 50 65 67 5d 2e 66 46 72 |..gPeg[l|Peg].fFr|
|000056d0| 65 65 20 3a 3d 20 74 72 | 75 65 3b 0a 58 09 09 09 |ee := tr|ue;.X...|
|000056e0| 09 45 4e 44 3b 0a 58 09 | 09 09 46 4f 52 20 6c 4d |.END;.X.|..FOR lM|
|000056f0| 6f 76 65 20 3a 3d 20 31 | 20 54 4f 20 6b 4d 61 78 |ove := 1| TO kMax|
|00005700| 4d 6f 76 65 20 44 4f 0a | 58 09 09 09 09 67 4d 6f |Move DO.|X....gMo|
|00005710| 76 65 42 61 72 5b 6c 4d | 6f 76 65 5d 20 3a 3d 20 |veBar[lM|ove] := |
|00005720| 30 3b 0a 58 09 09 09 67 | 50 65 67 50 6f 73 5b 41 |0;.X...g|PegPos[A|
|00005730| 5d 20 3a 3d 20 6b 50 65 | 67 31 3b 0a 58 09 09 09 |] := kPe|g1;.X...|
|00005740| 67 50 65 67 50 6f 73 5b | 42 5d 20 3a 3d 20 6b 50 |gPegPos[|B] := kP|
|00005750| 65 67 32 3b 0a 58 09 09 | 09 67 50 65 67 50 6f 73 |eg2;.X..|.gPegPos|
|00005760| 5b 43 5d 20 3a 3d 20 6b | 50 65 67 33 3b 0a 58 09 |[C] := k|Peg3;.X.|
|00005770| 09 09 46 4f 52 20 6c 42 | 61 72 20 3a 3d 20 67 4e |..FOR lB|ar := gN|
|00005780| 75 6d 42 61 72 73 20 44 | 4f 57 4e 54 4f 20 31 20 |umBars D|OWNTO 1 |
|00005790| 44 4f 0a 58 09 09 09 09 | 42 45 47 49 4e 0a 58 09 |DO.X....|BEGIN.X.|
|000057a0| 09 09 09 09 67 4d 6f 76 | 65 42 61 72 5b 31 5d 20 |....gMov|eBar[1] |
|000057b0| 3a 3d 20 6c 42 61 72 3b | 0a 58 09 09 09 09 09 57 |:= lBar;|.X.....W|
|000057c0| 48 49 4c 45 20 4e 4f 54 | 20 53 79 73 74 65 6d 54 |HILE NOT| SystemT|
|000057d0| 69 6d 65 20 44 4f 0a 58 | 09 09 09 09 09 09 3b 0a |ime DO.X|......;.|
|000057e0| 58 09 09 09 09 45 4e 44 | 3b 0a 58 09 09 09 46 4f |X....END|;.X...FO|
|000057f0| 52 20 6c 42 61 72 20 3a | 3d 20 31 20 54 4f 20 67 |R lBar :|= 1 TO g|
|00005800| 4e 75 6d 42 61 72 73 20 | 44 4f 0a 58 09 09 09 09 |NumBars |DO.X....|
|00005810| 67 42 61 72 50 6f 73 5b | 6c 42 61 72 5d 20 3a 3d |gBarPos[|lBar] :=|
|00005820| 20 67 42 61 72 5b 67 4e | 75 6d 42 61 72 73 20 2d | gBar[gN|umBars -|
|00005830| 20 6c 42 61 72 20 2b 20 | 31 5d 2e 66 44 65 73 74 | lBar + |1].fDest|
|00005840| 4c 6f 63 2e 76 3b 0a 58 | 09 09 45 4e 44 3b 0a 58 |Loc.v;.X|..END;.X|
|00005850| 0a 58 09 42 45 47 49 4e | 0a 58 09 09 49 6e 69 74 |.X.BEGIN|.X..Init|
|00005860| 54 6f 6f 6c 62 6f 78 3b | 0a 58 09 09 47 65 74 50 |Toolbox;|.X..GetP|
|00005870| 6f 72 74 28 67 44 72 61 | 77 50 6f 72 74 29 3b 0a |ort(gDra|wPort);.|
|00005880| 58 09 09 53 65 74 55 70 | 53 61 76 65 50 6f 72 74 |X..SetUp|SavePort|
|00005890| 3b 0a 58 09 09 44 72 61 | 77 53 63 72 65 65 6e 3b |;.X..Dra|wScreen;|
|000058a0| 0a 58 09 09 43 6f 70 79 | 42 69 74 73 28 67 44 72 |.X..Copy|Bits(gDr|
|000058b0| 61 77 50 6f 72 74 5e 2e | 70 6f 72 74 42 69 74 73 |awPort^.|portBits|
|000058c0| 2c 20 67 53 61 76 65 50 | 6f 72 74 5e 2e 70 6f 72 |, gSaveP|ort^.por|
|000058d0| 74 42 69 74 73 2c 20 67 | 44 72 61 77 50 6f 72 74 |tBits, g|DrawPort|
|000058e0| 5e 2e 70 6f 72 74 52 65 | 63 74 2c 20 67 53 61 76 |^.portRe|ct, gSav|
|000058f0| 65 50 6f 72 74 5e 2e 70 | 6f 72 74 52 65 63 74 2c |ePort^.p|ortRect,|
|00005900| 20 73 72 63 43 6f 70 79 | 2c 20 4e 49 4c 29 3b 0a | srcCopy|, NIL);.|
|00005910| 58 09 09 47 65 74 4e 75 | 6d 42 61 72 73 3b 0a 58 |X..GetNu|mBars;.X|
|00005920| 09 09 53 65 74 55 70 44 | 61 74 61 3b 0a 58 09 09 |..SetUpD|ata;.X..|
|00005930| 49 6e 69 74 47 6c 6f 62 | 61 6c 73 3b 0a 58 09 45 |InitGlob|als;.X.E|
|00005940| 4e 44 3b 0a 58 0a 58 7b | 2a 2a 2a 2a 2a 2a 2a 2a |ND;.X.X{|********|
|00005950| 2a 2a 2a 2a 2a 2a 2a 2a | 2a 2a 2a 2a 2a 2a 2a 2a |********|********|
|00005960| 2a 2a 2a 2a 2a 2a 2a 2a | 2a 2a 2a 2a 2a 2a 2a 2a |********|********|
|00005970| 2a 2a 2a 2a 2a 2a 2a 2a | 2a 2a 2a 2a 2a 2a 2a 2a |********|********|
|00005980| 2a 2a 2a 2a 2a 2a 2a 2a | 2a 2a 2a 2a 2a 2a 2a 2a |********|********|
|00005990| 2a 2a 2a 2a 2a 2a 2a 7d | 0a 58 7b 4d 61 6b 65 20 |*******}|.X{Make |
|000059a0| 74 68 65 20 6d 61 67 69 | 63 20 68 61 70 70 65 6e |the magi|c happen|
|000059b0| 20 62 79 20 63 61 6c 6c | 69 6e 67 20 48 61 6e 6f | by call|ing Hano|
|000059c0| 69 20 61 6e 64 20 74 68 | 65 6e 20 53 79 73 74 65 |i and th|en Syste|
|000059d0| 6d 54 69 6d 65 20 75 6e | 74 69 6c 20 64 6f 6e 65 |mTime un|til done|
|000059e0| 7d 0a 58 7b 2a 2a 2a 2a | 2a 2a 2a 2a 2a 2a 2a 2a |}.X{****|********|
|000059f0| 2a 2a 2a 2a 2a 2a 2a 2a | 2a 2a 2a 2a 2a 2a 2a 2a |********|********|
|00005a00| 2a 2a 2a 2a 2a 2a 2a 2a | 2a 2a 2a 2a 2a 2a 2a 2a |********|********|
|00005a10| 2a 2a 2a 2a 2a 2a 2a 2a | 2a 2a 2a 2a 2a 2a 2a 2a |********|********|
|00005a20| 2a 2a 2a 2a 2a 2a 2a 2a | 2a 2a 2a 2a 2a 2a 2a 2a |********|********|
|00005a30| 2a 2a 2a 7d 0a 58 09 50 | 52 4f 43 45 44 55 52 45 |***}.X.P|ROCEDURE|
|00005a40| 20 44 6f 49 74 3b 0a 58 | 09 09 56 41 52 0a 58 09 | DoIt;.X|..VAR.X.|
|00005a50| 09 09 78 20 3a 20 69 6e | 74 65 67 65 72 3b 0a 58 |..x : in|teger;.X|
|00005a60| 09 42 45 47 49 4e 0a 58 | 09 09 57 48 49 4c 45 20 |.BEGIN.X|..WHILE |
|00005a70| 74 72 75 65 20 44 4f 0a | 58 09 09 09 42 45 47 49 |true DO.|X...BEGI|
|00005a80| 4e 0a 58 09 09 09 09 48 | 61 6e 6f 69 28 67 4e 75 |N.X....H|anoi(gNu|
|00005a90| 6d 42 61 72 73 2c 20 41 | 2c 20 42 2c 20 43 29 3b |mBars, A|, B, C);|
|00005aa0| 0a 58 09 09 09 09 57 48 | 49 4c 45 20 4e 4f 54 20 |.X....WH|ILE NOT |
|00005ab0| 53 79 73 74 65 6d 54 69 | 6d 65 20 44 4f 0a 58 09 |SystemTi|me DO.X.|
|00005ac0| 09 09 09 09 3b 0a 58 09 | 09 09 09 53 65 74 50 6f |....;.X.|...SetPo|
|00005ad0| 72 74 28 67 44 72 61 77 | 50 6f 72 74 29 3b 0a 58 |rt(gDraw|Port);.X|
|00005ae0| 09 09 09 09 46 4f 52 20 | 78 20 3a 3d 20 31 20 54 |....FOR |x := 1 T|
|00005af0| 4f 20 31 36 20 44 4f 0a | 58 09 09 09 09 09 49 6e |O 16 DO.|X.....In|
|00005b00| 76 65 72 74 52 65 63 74 | 28 67 44 72 61 77 50 6f |vertRect|(gDrawPo|
|00005b10| 72 74 5e 2e 50 6f 72 74 | 52 65 63 74 29 3b 0a 58 |rt^.Port|Rect);.X|
|00005b20| 09 09 09 09 48 61 6e 6f | 69 28 67 4e 75 6d 42 61 |....Hano|i(gNumBa|
|00005b30| 72 73 2c 20 42 2c 20 43 | 2c 20 41 29 3b 0a 58 09 |rs, B, C|, A);.X.|
|00005b40| 09 09 09 57 48 49 4c 45 | 20 4e 4f 54 20 53 79 73 |...WHILE| NOT Sys|
|00005b50| 74 65 6d 54 69 6d 65 20 | 44 4f 0a 58 09 09 09 09 |temTime |DO.X....|
|00005b60| 09 3b 0a 58 09 09 09 09 | 53 65 74 50 6f 72 74 28 |.;.X....|SetPort(|
|00005b70| 67 44 72 61 77 50 6f 72 | 74 29 3b 0a 58 09 09 09 |gDrawPor|t);.X...|
|00005b80| 09 46 4f 52 20 78 20 3a | 3d 20 31 20 54 4f 20 31 |.FOR x :|= 1 TO 1|
|00005b90| 36 20 44 4f 0a 58 09 09 | 09 09 09 49 6e 76 65 72 |6 DO.X..|...Inver|
|00005ba0| 74 52 65 63 74 28 67 44 | 72 61 77 50 6f 72 74 5e |tRect(gD|rawPort^|
|00005bb0| 2e 50 6f 72 74 52 65 63 | 74 29 3b 0a 58 09 09 09 |.PortRec|t);.X...|
|00005bc0| 09 48 61 6e 6f 69 28 67 | 4e 75 6d 42 61 72 73 2c |.Hanoi(g|NumBars,|
|00005bd0| 20 43 2c 20 41 2c 20 42 | 29 3b 0a 58 09 09 09 09 | C, A, B|);.X....|
|00005be0| 57 48 49 4c 45 20 4e 4f | 54 20 53 79 73 74 65 6d |WHILE NO|T System|
|00005bf0| 54 69 6d 65 20 44 4f 0a | 58 09 09 09 09 09 3b 0a |Time DO.|X.....;.|
|00005c00| 58 09 09 09 09 53 65 74 | 50 6f 72 74 28 67 44 72 |X....Set|Port(gDr|
|00005c10| 61 77 50 6f 72 74 29 3b | 0a 58 09 09 09 09 46 4f |awPort);|.X....FO|
|00005c20| 52 20 78 20 3a 3d 20 31 | 20 54 4f 20 31 36 20 44 |R x := 1| TO 16 D|
|00005c30| 4f 0a 58 09 09 09 09 09 | 49 6e 76 65 72 74 52 65 |O.X.....|InvertRe|
|00005c40| 63 74 28 67 44 72 61 77 | 50 6f 72 74 5e 2e 50 6f |ct(gDraw|Port^.Po|
|00005c50| 72 74 52 65 63 74 29 3b | 0a 58 09 09 09 45 4e 44 |rtRect);|.X...END|
|00005c60| 3b 0a 58 09 45 4e 44 3b | 0a 58 0a 58 42 45 47 49 |;.X.END;|.X.XBEGI|
|00005c70| 4e 0a 58 09 49 6e 69 74 | 3b 0a 58 09 44 6f 49 74 |N.X.Init|;.X.DoIt|
|00005c80| 3b 0a 58 45 4e 44 2e 0a | 53 48 41 52 5f 45 4f 46 |;.XEND..|SHAR_EOF|
|00005c90| 0a 69 66 20 74 65 73 74 | 20 32 31 35 35 32 20 2d |.if test| 21552 -|
|00005ca0| 6e 65 20 22 60 77 63 20 | 2d 63 20 3c 20 27 54 6f |ne "`wc |-c < 'To|
|00005cb0| 77 65 72 73 2e 6c 70 27 | 60 22 0a 74 68 65 6e 0a |wers.lp'|`".then.|
|00005cc0| 09 65 63 68 6f 20 73 68 | 61 72 3a 20 65 72 72 6f |.echo sh|ar: erro|
|00005cd0| 72 20 74 72 61 6e 73 6d | 69 74 74 69 6e 67 20 22 |r transm|itting "|
|00005ce0| 27 54 6f 77 65 72 73 2e | 6c 70 27 22 20 27 28 73 |'Towers.|lp'" '(s|
|00005cf0| 68 6f 75 6c 64 20 68 61 | 76 65 20 62 65 65 6e 20 |hould ha|ve been |
|00005d00| 32 31 35 35 32 20 63 68 | 61 72 61 63 74 65 72 73 |21552 ch|aracters|
|00005d10| 29 27 0a 66 69 0a 66 69 | 20 23 20 65 6e 64 20 6f |)'.fi.fi| # end o|
|00005d20| 66 20 6f 76 65 72 77 72 | 69 74 69 6e 67 20 63 68 |f overwr|iting ch|
|00005d30| 65 63 6b 0a 23 09 45 6e | 64 20 6f 66 20 73 68 65 |eck.#.En|d of she|
|00005d40| 6c 6c 20 61 72 63 68 69 | 76 65 0a 65 78 69 74 20 |ll archi|ve.exit |
|00005d50| 30 0a 2d 2d 2d 0a 0a 0a | |0.---...| |
+--------+-------------------------+-------------------------+--------+--------+