home *** CD-ROM | disk | FTP | other *** search
MacBinary | 1990-06-14 | 44.0 KB | [TEXT/PMED] |
open in:
MacOS 8.1
|
Win98
|
DOS
browse contents |
view JSON data
|
view as text
This file was processed as: MacBinary
(archive/macBinary).
Confidence | Program | Detection | Match Type | Support
|
---|
66%
| dexvert
| SoundTracker Module (music/soundTracker)
| ext
| Supported |
66%
| dexvert
| Chip Tracker Module (music/chipTracker)
| ext
| Supported |
66%
| dexvert
| Protracker Module (music/mod)
| ext
| Supported |
66%
| dexvert
| Octalyser Module (music/octalyser)
| ext
| Supported |
66%
| dexvert
| Star Tracker/StarTrekker Module (music/starTracker)
| ext
| Supported |
10%
| dexvert
| MacBinary (archive/macBinary)
| fallback
| Supported |
1%
| dexvert
| PollyTracker Module (music/pollyTracker)
| ext
| Unsupported |
1%
| dexvert
| Black Viper packed music (music/blackViperPackedMusic)
| ext
| Unsupported |
1%
| dexvert
| Text File (text/txt)
| fallback
| Supported |
100%
| file
| MacBinary II, inited, Wed Jun 13 22:29:16 1990, modified Wed Jun 13 22:29:16 1990, creator 'PMED', type ASCII, 44442 bytes "video.MOD" , at 0xae1a 348 bytes resource
| default (weak)
| |
99%
| file
| data
| default
| |
74%
| TrID
| Macintosh plain text (MacBinary)
| default
| |
25%
| TrID
| MacBinary 2
| default (weak)
| |
100%
| siegfried
| fmt/1762 MacBinary (II)
| default
| |
100%
| lsar
| MacBinary
| default
|
|
id metadata |
---|
key | value |
---|
macFileType | [TEXT] |
macFileCreator | [PMED] |
hex view+--------+-------------------------+-------------------------+--------+--------+
|00000000| 00 09 76 69 64 65 6f 2e | 4d 4f 44 00 00 00 00 00 |..video.|MOD.....|
|00000010| 00 00 00 00 00 00 00 00 | 00 00 00 00 00 00 00 00 |........|........|
|00000020| 00 00 00 00 00 00 00 00 | 00 00 00 00 00 00 00 00 |........|........|
|00000030| 00 00 00 00 00 00 00 00 | 00 00 00 00 00 00 00 00 |........|........|
|00000040| 00 54 45 58 54 50 4d 45 | 44 01 00 00 00 00 00 00 |.TEXTPME|D.......|
|00000050| 00 00 00 00 00 ad 9a 00 | 00 01 5c a2 9c a6 fc a2 |........|..\.....|
|00000060| 9c a6 fc 00 00 00 00 00 | 00 00 00 00 00 00 00 00 |........|........|
|00000070| 00 00 00 00 00 00 00 00 | 00 00 81 81 55 94 00 00 |........|....U...|
|00000080| 4d 4f 44 55 4c 45 20 76 | 69 64 65 6f 3b 0d 0d 0d |MODULE v|ideo;...|
|00000090| 46 52 4f 4d 20 54 65 72 | 6d 69 6e 61 6c 20 49 4d |FROM Ter|minal IM|
|000000a0| 50 4f 52 54 0d 20 20 42 | 75 73 79 52 65 61 64 2c |PORT. B|usyRead,|
|000000b0| 20 52 65 61 64 2c 20 57 | 72 69 74 65 53 74 72 69 | Read, W|riteStri|
|000000c0| 6e 67 2c 20 57 72 69 74 | 65 2c 20 57 72 69 74 65 |ng, Writ|e, Write|
|000000d0| 4c 6e 3b 0d 20 20 0d 46 | 52 4f 4d 20 53 74 6f 72 |Ln;. .F|ROM Stor|
|000000e0| 61 67 65 20 49 4d 50 4f | 52 54 0d 20 20 41 4c 4c |age IMPO|RT. ALL|
|000000f0| 4f 43 41 54 45 2c 20 44 | 45 41 4c 4c 4f 43 41 54 |OCATE, D|EALLOCAT|
|00000100| 45 3b 0d 20 20 0d 46 52 | 4f 4d 20 43 6f 72 65 44 |E;. .FR|OM CoreD|
|00000110| 75 6d 70 20 49 4d 50 4f | 52 54 20 49 6e 63 6c 44 |ump IMPO|RT InclD|
|00000120| 75 6d 70 3b 0d 0d 46 52 | 4f 4d 20 51 75 69 63 6b |ump;..FR|OM Quick|
|00000130| 44 72 61 77 20 49 4d 50 | 4f 52 54 0d 20 20 52 65 |Draw IMP|ORT. Re|
|00000140| 63 74 2c 20 50 6f 69 6e | 74 2c 20 42 69 74 4d 61 |ct, Poin|t, BitMa|
|00000150| 70 2c 20 47 72 61 66 50 | 74 72 2c 20 47 72 61 66 |p, GrafP|tr, Graf|
|00000160| 50 6f 72 74 2c 20 50 61 | 74 74 65 72 6e 2c 20 52 |Port, Pa|ttern, R|
|00000170| 67 6e 48 61 6e 64 6c 65 | 2c 0d 20 20 4f 70 65 6e |gnHandle|,. Open|
|00000180| 50 6f 72 74 2c 20 53 65 | 74 50 6f 72 74 2c 20 53 |Port, Se|tPort, S|
|00000190| 65 74 50 6f 72 74 42 69 | 74 73 2c 20 4d 6f 76 65 |etPortBi|ts, Move|
|000001a0| 50 6f 72 74 54 6f 2c 20 | 50 6f 72 74 53 69 7a 65 |PortTo, |PortSize|
|000001b0| 2c 20 53 65 74 4f 72 69 | 67 69 6e 2c 0d 20 20 50 |, SetOri|gin,. P|
|000001c0| 65 6e 53 69 7a 65 2c 20 | 49 6e 73 65 74 52 65 63 |enSize, |InsetRec|
|000001d0| 74 2c 0d 20 20 43 6c 69 | 70 52 65 63 74 2c 20 53 |t,. Cli|pRect, S|
|000001e0| 65 74 43 6c 69 70 2c 20 | 47 65 74 43 6c 69 70 2c |etClip, |GetClip,|
|000001f0| 0d 20 20 47 65 74 50 6f | 72 74 2c 0d 20 20 53 65 |. GetPo|rt,. Se|
|00000200| 74 52 65 63 74 2c 20 53 | 65 74 52 65 63 74 52 67 |tRect, S|etRectRg|
|00000210| 6e 2c 20 53 65 74 45 6d | 70 74 79 52 67 6e 2c 20 |n, SetEm|ptyRgn, |
|00000220| 4e 65 77 52 67 6e 2c 20 | 44 69 73 70 6f 73 65 52 |NewRgn, |DisposeR|
|00000230| 67 6e 2c 0d 20 20 43 6f | 70 79 52 67 6e 2c 0d 20 |gn,. Co|pyRgn,. |
|00000240| 20 4d 6f 76 65 54 6f 2c | 20 47 65 74 50 65 6e 2c | MoveTo,| GetPen,|
|00000250| 0d 20 20 45 72 61 73 65 | 52 65 63 74 2c 20 46 69 |. Erase|Rect, Fi|
|00000260| 6c 6c 52 65 63 74 2c 20 | 46 69 6c 6c 52 67 6e 2c |llRect, |FillRgn,|
|00000270| 0d 20 20 54 65 78 74 46 | 6f 6e 74 2c 20 54 65 78 |. TextF|ont, Tex|
|00000280| 74 53 69 7a 65 2c 20 44 | 72 61 77 43 68 61 72 2c |tSize, D|rawChar,|
|00000290| 0d 20 20 51 44 47 6c 6f | 62 61 6c 73 2c 0d 20 20 |. QDGlo|bals,. |
|000002a0| 43 6f 70 79 42 69 74 73 | 2c 0d 20 20 73 72 63 43 |CopyBits|,. srcC|
|000002b0| 6f 70 79 2c 73 72 63 4f | 72 2c 20 73 72 63 42 69 |opy,srcO|r, srcBi|
|000002c0| 63 2c 0d 20 20 43 75 72 | 73 6f 72 2c 20 53 65 74 |c,. Cur|sor, Set|
|000002d0| 43 75 72 73 6f 72 2c 20 | 47 65 74 43 75 72 73 6f |Cursor, |GetCurso|
|000002e0| 72 2c 0d 20 20 46 6f 6e | 74 49 6e 66 6f 2c 20 47 |r,. Fon|tInfo, G|
|000002f0| 65 74 46 6f 6e 74 49 6e | 66 6f 2c 0d 20 20 47 6c |etFontIn|fo,. Gl|
|00000300| 6f 62 61 6c 54 6f 4c 6f | 63 61 6c 3b 0d 20 20 0d |obalToLo|cal;. .|
|00000310| 46 52 4f 4d 20 51 75 69 | 63 6b 44 72 61 77 32 20 |FROM Qui|ckDraw2 |
|00000320| 49 4d 50 4f 52 54 0d 20 | 20 52 65 63 74 52 67 6e |IMPORT. | RectRgn|
|00000330| 2c 20 55 6e 69 6f 6e 52 | 67 6e 2c 20 44 69 66 66 |, UnionR|gn, Diff|
|00000340| 52 67 6e 2c 20 4f 66 66 | 73 65 74 52 67 6e 2c 20 |Rgn, Off|setRgn, |
|00000350| 46 72 61 6d 65 52 6f 75 | 6e 64 52 65 63 74 3b 0d |FrameRou|ndRect;.|
|00000360| 20 20 0d 46 52 4f 4d 20 | 45 76 65 6e 74 4d 67 72 | .FROM |EventMgr|
|00000370| 20 49 4d 50 4f 52 54 0d | 20 20 46 6c 75 73 68 45 | IMPORT.| FlushE|
|00000380| 76 65 6e 74 73 2c 20 65 | 76 65 72 79 45 76 65 6e |vents, e|veryEven|
|00000390| 74 2c 20 75 70 64 61 74 | 65 4d 61 73 6b 2c 20 6e |t, updat|eMask, n|
|000003a0| 75 6c 6c 45 76 65 6e 74 | 2c 0d 20 20 45 76 65 6e |ullEvent|,. Even|
|000003b0| 74 52 65 63 6f 72 64 2c | 20 47 65 74 4e 65 78 74 |tRecord,| GetNext|
|000003c0| 45 76 65 6e 74 2c 0d 20 | 20 6d 6f 75 73 65 44 6f |Event,. | mouseDo|
|000003d0| 77 6e 2c 20 6b 65 79 44 | 6f 77 6e 2c 20 61 63 74 |wn, keyD|own, act|
|000003e0| 69 76 61 74 65 45 76 74 | 2c 20 75 70 64 61 74 65 |ivateEvt|, update|
|000003f0| 45 76 74 2c 20 43 6d 64 | 4b 65 79 3b 0d 20 20 0d |Evt, Cmd|Key;. .|
|00000400| 46 52 4f 4d 20 57 69 6e | 64 6f 77 4d 67 72 20 49 |FROM Win|dowMgr I|
|00000410| 4d 50 4f 52 54 0d 20 20 | 57 69 6e 64 6f 77 52 65 |MPORT. |WindowRe|
|00000420| 63 6f 72 64 2c 20 57 69 | 6e 64 6f 77 50 74 72 2c |cord, Wi|ndowPtr,|
|00000430| 20 49 6e 69 74 57 69 6e | 64 6f 77 73 2c 20 44 6f | InitWin|dows, Do|
|00000440| 63 75 6d 65 6e 74 50 72 | 6f 63 2c 20 44 42 6f 78 |cumentPr|oc, DBox|
|00000450| 50 72 6f 63 2c 0d 20 20 | 46 69 6e 64 57 69 6e 64 |Proc,. |FindWind|
|00000460| 6f 77 2c 20 69 6e 4d 65 | 6e 75 42 61 72 2c 20 69 |ow, inMe|nuBar, i|
|00000470| 6e 44 72 61 67 2c 20 69 | 6e 47 72 6f 77 2c 20 69 |nDrag, i|nGrow, i|
|00000480| 6e 47 6f 41 77 61 79 2c | 20 69 6e 43 6f 6e 74 65 |nGoAway,| inConte|
|00000490| 6e 74 2c 0d 20 20 4e 65 | 77 57 69 6e 64 6f 77 2c |nt,. Ne|wWindow,|
|000004a0| 20 43 6c 6f 73 65 57 69 | 6e 64 6f 77 2c 20 53 65 | CloseWi|ndow, Se|
|000004b0| 6c 65 63 74 57 69 6e 64 | 6f 77 2c 0d 20 20 44 72 |lectWind|ow,. Dr|
|000004c0| 61 77 47 72 6f 77 49 63 | 6f 6e 2c 20 44 72 61 67 |awGrowIc|on, Drag|
|000004d0| 57 69 6e 64 6f 77 2c 20 | 47 72 6f 77 57 69 6e 64 |Window, |GrowWind|
|000004e0| 6f 77 2c 20 53 69 7a 65 | 57 69 6e 64 6f 77 2c 20 |ow, Size|Window, |
|000004f0| 54 72 61 63 6b 47 6f 41 | 77 61 79 2c 0d 20 20 49 |TrackGoA|way,. I|
|00000500| 6e 76 61 6c 52 65 63 74 | 2c 20 56 61 6c 69 64 52 |nvalRect|, ValidR|
|00000510| 67 6e 2c 49 6e 76 61 6c | 52 67 6e 2c 20 42 65 67 |gn,Inval|Rgn, Beg|
|00000520| 69 6e 55 70 64 61 74 65 | 2c 20 45 6e 64 55 70 64 |inUpdate|, EndUpd|
|00000530| 61 74 65 3b 0d 20 20 0d | 46 52 4f 4d 20 4d 65 6e |ate;. .|FROM Men|
|00000540| 75 4d 67 72 20 49 4d 50 | 4f 52 54 0d 20 20 49 6e |uMgr IMP|ORT. In|
|00000550| 69 74 4d 65 6e 75 73 2c | 20 4d 65 6e 75 48 61 6e |itMenus,| MenuHan|
|00000560| 64 6c 65 2c 20 61 70 70 | 6c 65 53 79 6d 62 6f 6c |dle, app|leSymbol|
|00000570| 2c 0d 20 20 28 2a 20 69 | 6e 74 65 72 6e 61 6c 20 |,. (* i|nternal |
|00000580| 6d 65 6e 75 73 3a 20 2a | 29 0d 20 20 4e 65 77 4d |menus: *|). NewM|
|00000590| 65 6e 75 2c 20 41 70 70 | 65 6e 64 4d 65 6e 75 2c |enu, App|endMenu,|
|000005a0| 20 44 69 73 70 6f 73 65 | 4d 65 6e 75 2c 0d 20 20 | Dispose|Menu,. |
|000005b0| 43 6c 65 61 72 4d 65 6e | 75 42 61 72 2c 20 49 6e |ClearMen|uBar, In|
|000005c0| 73 65 72 74 4d 65 6e 75 | 2c 20 44 65 6c 65 74 65 |sertMenu|, Delete|
|000005d0| 4d 65 6e 75 2c 20 44 72 | 61 77 4d 65 6e 75 42 61 |Menu, Dr|awMenuBa|
|000005e0| 72 2c 0d 20 20 4d 65 6e | 75 53 65 6c 65 63 74 2c |r,. Men|uSelect,|
|000005f0| 20 4d 65 6e 75 4b 65 79 | 2c 20 48 69 6c 69 74 65 | MenuKey|, Hilite|
|00000600| 4d 65 6e 75 2c 0d 20 20 | 45 6e 61 62 6c 65 49 74 |Menu,. |EnableIt|
|00000610| 65 6d 2c 20 44 69 73 61 | 62 6c 65 49 74 65 6d 2c |em, Disa|bleItem,|
|00000620| 20 53 65 74 49 74 65 6d | 3b 0d 20 20 0d 46 52 4f | SetItem|;. .FRO|
|00000630| 4d 20 43 6f 6e 74 72 6f | 6c 4d 67 72 20 49 4d 50 |M Contro|lMgr IMP|
|00000640| 4f 52 54 0d 20 20 43 6f | 6e 74 72 6f 6c 48 61 6e |ORT. Co|ntrolHan|
|00000650| 64 6c 65 2c 0d 20 20 4e | 65 77 43 6f 6e 74 72 6f |dle,. N|ewContro|
|00000660| 6c 2c 20 44 69 73 70 6f | 73 65 43 6f 6e 74 72 6f |l, Dispo|seContro|
|00000670| 6c 2c 20 53 65 74 43 74 | 6c 56 61 6c 75 65 2c 20 |l, SetCt|lValue, |
|00000680| 53 63 72 6f 6c 6c 42 61 | 72 50 72 6f 63 2c 20 50 |ScrollBa|rProc, P|
|00000690| 75 73 68 42 75 74 50 72 | 6f 63 2c 0d 20 20 48 69 |ushButPr|oc,. Hi|
|000006a0| 64 65 43 6f 6e 74 72 6f | 6c 2c 20 4d 6f 76 65 43 |deContro|l, MoveC|
|000006b0| 6f 6e 74 72 6f 6c 2c 20 | 53 69 7a 65 43 6f 6e 74 |ontrol, |SizeCont|
|000006c0| 72 6f 6c 2c 20 53 68 6f | 77 43 6f 6e 74 72 6f 6c |rol, Sho|wControl|
|000006d0| 2c 20 44 72 61 77 43 6f | 6e 74 72 6f 6c 73 2c 0d |, DrawCo|ntrols,.|
|000006e0| 20 20 46 69 6e 64 43 6f | 6e 74 72 6f 6c 2c 20 54 | FindCo|ntrol, T|
|000006f0| 72 61 63 6b 43 6f 6e 74 | 72 6f 6c 2c 20 69 6e 42 |rackCont|rol, inB|
|00000700| 75 74 74 6f 6e 3b 0d 20 | 20 0d 46 52 4f 4d 20 4f |utton;. | .FROM O|
|00000710| 53 74 72 69 6e 67 73 20 | 49 4d 50 4f 52 54 20 6d |Strings |IMPORT m|
|00000720| 6b 4f 53 74 72 2c 20 4f | 53 74 72 32 35 35 3b 0d |kOStr, O|Str255;.|
|00000730| 0d 46 52 4f 4d 20 4d 61 | 63 42 61 73 65 20 49 4d |.FROM Ma|cBase IM|
|00000740| 50 4f 52 54 20 4d 61 63 | 4e 49 4c 3b 0d 20 20 0d |PORT Mac|NIL;. .|
|00000750| 46 52 4f 4d 20 53 59 53 | 54 45 4d 20 49 4d 50 4f |FROM SYS|TEM IMPO|
|00000760| 52 54 20 41 44 44 52 45 | 53 53 2c 20 41 44 52 2c |RT ADDRE|SS, ADR,|
|00000770| 20 53 49 5a 45 3b 0d 20 | 20 0d 43 4f 4e 53 54 0d | SIZE;. | .CONST.|
|00000780| 20 20 43 68 61 72 57 69 | 64 74 68 20 3d 20 31 36 | CharWi|dth = 16|
|00000790| 3b 20 20 43 68 61 72 48 | 65 69 67 68 74 20 3d 20 |; CharH|eight = |
|000007a0| 32 34 3b 0d 20 20 48 6f | 75 73 65 57 20 3d 20 32 |24;. Ho|useW = 2|
|000007b0| 20 2a 20 43 68 61 72 57 | 69 64 74 68 3b 0d 20 20 | * CharW|idth;. |
|000007c0| 46 72 6f 67 57 20 20 3d | 20 32 20 2a 20 43 68 61 |FrogW =| 2 * Cha|
|000007d0| 72 57 69 64 74 68 3b 0d | 20 20 43 68 61 72 57 20 |rWidth;.| CharW |
|000007e0| 3d 20 43 68 61 72 57 69 | 64 74 68 3b 0d 20 20 43 |= CharWi|dth;. C|
|000007f0| 68 61 72 48 20 3d 20 43 | 68 61 72 48 65 69 67 68 |harH = C|harHeigh|
|00000800| 74 3b 0d 20 20 0d 20 20 | 53 43 42 20 3d 20 31 35 |t;. . |SCB = 15|
|00000810| 3b 20 20 20 20 20 20 28 | 2a 20 6d 61 67 69 63 20 |; (|* magic |
|00000820| 63 6f 6e 73 74 61 6e 74 | 3a 20 53 43 72 6f 6c 6c |constant|: SCroll|
|00000830| 20 42 61 72 20 77 69 64 | 74 68 20 61 6e 64 20 68 | Bar wid|th and h|
|00000840| 65 69 67 68 74 20 2a 29 | 0d 20 20 0d 0d 0d 54 59 |eight *)|. ...TY|
|00000850| 50 45 20 20 44 69 72 65 | 63 74 69 6f 6e 73 20 3d |PE Dire|ctions =|
|00000860| 20 28 75 70 2c 20 64 6f | 77 6e 2c 20 6c 65 66 74 | (up, do|wn, left|
|00000870| 2c 20 72 69 67 68 74 29 | 3b 0d 20 20 20 20 20 20 |, right)|;. |
|00000880| 4c 69 73 74 45 6c 20 20 | 3d 20 50 4f 49 4e 54 45 |ListEl |= POINTE|
|00000890| 52 20 54 4f 20 4f 62 6a | 65 63 74 3b 0d 20 20 20 |R TO Obj|ect;. |
|000008a0| 20 20 20 4f 62 6a 65 63 | 74 20 20 3d 20 52 45 43 | Objec|t = REC|
|000008b0| 4f 52 44 0d 20 20 20 20 | 20 20 20 20 20 20 20 20 |ORD. | |
|000008c0| 20 20 20 20 20 20 52 6f | 77 2c 0d 09 09 20 20 4c | Ro|w,... L|
|000008d0| 65 66 74 4d 2c 20 52 69 | 67 68 74 4d 3a 20 49 4e |eftM, Ri|ghtM: IN|
|000008e0| 54 45 47 45 52 3b 20 20 | 28 2a 63 6f 6c 6c 69 73 |TEGER; |(*collis|
|000008f0| 69 6f 6e 20 65 78 74 65 | 6e 74 20 2a 29 0d 20 20 |ion exte|nt *). |
|00000900| 20 20 20 20 20 20 20 20 | 20 20 20 20 20 20 20 20 | | |
|00000910| 53 6f 75 72 63 65 2c 0d | 20 20 20 20 20 20 20 20 |Source,.| |
|00000920| 20 20 20 20 20 20 20 20 | 20 20 44 65 73 74 69 6e | | Destin|
|00000930| 61 74 69 6f 6e 3a 20 52 | 65 63 74 3b 0d 20 20 20 |ation: R|ect;. |
|00000940| 20 20 20 20 20 20 20 20 | 20 20 20 20 20 20 20 4e | | N|
|00000950| 65 78 74 20 20 20 20 20 | 20 20 3a 20 4c 69 73 74 |ext | : List|
|00000960| 45 6c 3b 0d 20 20 20 20 | 20 20 20 20 20 20 20 20 |El;. | |
|00000970| 20 20 20 20 20 20 4c 65 | 66 74 20 20 20 20 20 20 | Le|ft |
|00000980| 20 3a 20 42 4f 4f 4c 45 | 41 4e 3b 0d 20 20 20 20 | : BOOLE|AN;. |
|00000990| 20 20 20 20 20 20 20 20 | 20 20 20 20 45 4e 44 3b | | END;|
|000009a0| 0d 20 20 20 20 20 20 46 | 72 6f 67 44 65 73 63 20 |. F|rogDesc |
|000009b0| 3d 20 52 45 43 4f 52 44 | 0d 20 20 20 20 20 20 20 |= RECORD|. |
|000009c0| 20 20 20 20 20 20 20 20 | 20 20 20 4d 6f 76 65 64 | | Moved|
|000009d0| 2c 0d 20 20 20 20 20 20 | 20 20 20 20 20 20 20 20 |,. | |
|000009e0| 20 20 20 20 43 72 6f 61 | 6b 65 64 20 20 20 20 3a | Croa|ked :|
|000009f0| 20 42 4f 4f 4c 45 41 4e | 3b 0d 20 20 20 20 20 20 | BOOLEAN|;. |
|00000a00| 20 20 20 20 20 20 20 20 | 20 20 20 20 4f 72 69 65 | | Orie|
|00000a10| 6e 74 61 74 69 6f 6e 3a | 20 44 69 72 65 63 74 69 |ntation:| Directi|
|00000a20| 6f 6e 73 3b 0d 20 20 20 | 20 20 20 20 20 20 20 20 |ons;. | |
|00000a30| 20 20 20 20 20 20 20 52 | 6f 77 2c 20 50 6f 73 58 | R|ow, PosX|
|00000a40| 20 20 3a 20 49 4e 54 45 | 47 45 52 3b 0d 20 20 20 | : INTE|GER;. |
|00000a50| 20 20 20 20 20 20 20 20 | 20 20 20 20 20 45 4e 44 | | END|
|00000a60| 3b 0d 09 09 0d 20 20 20 | 20 20 20 54 65 6d 70 6c |;.... | Templ|
|00000a70| 61 74 65 20 3d 20 52 65 | 63 74 3b 20 20 20 20 20 |ate = Re|ct; |
|00000a80| 28 2a 20 6f 62 6a 65 63 | 74 73 20 69 6e 20 53 74 |(* objec|ts in St|
|00000a90| 6f 72 61 67 65 20 42 69 | 74 6d 61 70 20 2a 29 0d |orage Bi|tmap *).|
|00000aa0| 20 20 20 20 20 20 0d 20 | 20 20 20 20 20 46 6f 6e | . | Fon|
|00000ab0| 74 20 3d 20 49 4e 54 45 | 47 45 52 3b 0d 20 20 20 |t = INTE|GER;. |
|00000ac0| 20 20 20 0d 0d 56 41 52 | 20 20 20 41 6c 6c 4f 62 | ..VAR| AllOb|
|00000ad0| 6a 65 63 74 73 3a 20 4c | 69 73 74 45 6c 3b 0d 0d |jects: L|istEl;..|
|00000ae0| 20 20 20 20 20 20 52 65 | 61 6c 42 4d 2c 0d 20 20 | Re|alBM,. |
|00000af0| 20 20 20 20 53 74 6f 72 | 61 67 65 42 4d 20 20 20 | Stor|ageBM |
|00000b00| 20 20 20 20 20 20 3a 20 | 50 4f 49 4e 54 45 52 20 | : |POINTER |
|00000b10| 54 4f 20 42 69 74 4d 61 | 70 3b 0d 20 20 20 20 20 |TO BitMa|p;. |
|00000b20| 20 53 74 6f 72 61 67 65 | 42 4d 53 69 7a 65 20 20 | Storage|BMSize |
|00000b30| 20 20 20 3a 20 43 41 52 | 44 49 4e 41 4c 3b 0d 20 | : CAR|DINAL;. |
|00000b40| 20 20 20 20 20 53 79 73 | 74 65 6d 73 50 6f 72 74 | Sys|temsPort|
|00000b50| 2c 0d 20 20 20 20 20 20 | 52 65 61 6c 50 6f 72 74 |,. |RealPort|
|00000b60| 2c 0d 20 20 20 20 20 20 | 53 74 6f 72 61 67 65 50 |,. |StorageP|
|00000b70| 6f 72 74 20 20 20 20 20 | 20 20 3a 20 47 72 61 66 |ort | : Graf|
|00000b80| 50 74 72 3b 0d 20 20 20 | 20 20 20 52 65 61 6c 57 |Ptr;. | RealW|
|00000b90| 69 6e 64 6f 77 20 20 20 | 20 20 20 20 20 3a 20 57 |indow | : W|
|00000ba0| 69 6e 64 6f 77 50 74 72 | 3b 20 20 28 2a 3d 52 65 |indowPtr|; (*=Re|
|00000bb0| 61 6c 50 6f 72 74 2c 20 | 6f 76 65 72 6c 61 70 73 |alPort, |overlaps|
|00000bc0| 2a 29 0d 20 20 20 20 20 | 20 52 65 61 6c 57 69 6e |*). | RealWin|
|00000bd0| 64 6f 77 52 65 63 6f 72 | 64 20 20 3a 20 57 69 6e |dowRecor|d : Win|
|00000be0| 64 6f 77 52 65 63 6f 72 | 64 3b 0d 20 20 20 20 20 |dowRecor|d;. |
|00000bf0| 20 53 63 72 6f 6c 6c 42 | 61 72 52 67 6e 20 20 20 | ScrollB|arRgn |
|00000c00| 20 20 20 3a 20 52 67 6e | 48 61 6e 64 6c 65 3b 0d | : Rgn|Handle;.|
|00000c10| 20 20 20 20 20 20 53 74 | 6f 72 61 67 65 50 6f 72 | St|oragePor|
|00000c20| 74 52 65 63 6f 72 64 20 | 3a 20 47 72 61 66 50 6f |tRecord |: GrafPo|
|00000c30| 72 74 3b 0d 20 20 20 20 | 20 20 46 72 6f 67 20 20 |rt;. | Frog |
|00000c40| 20 20 20 20 3a 20 46 72 | 6f 67 44 65 73 63 3b 0d | : Fr|ogDesc;.|
|00000c50| 20 20 20 20 20 20 42 75 | 73 79 48 6f 75 73 65 73 | Bu|syHouses|
|00000c60| 2c 0d 20 20 20 20 20 20 | 42 75 73 79 52 6f 77 73 |,. |BusyRows|
|00000c70| 2c 0d 20 20 20 20 20 20 | 52 6f 77 44 69 73 70 6c |,. |RowDispl|
|00000c80| 61 79 3a 20 42 49 54 53 | 45 54 3b 0d 20 20 20 20 |ay: BITS|ET;. |
|00000c90| 20 20 53 70 65 65 64 20 | 20 20 20 20 3a 20 41 52 | Speed | : AR|
|00000ca0| 52 41 59 20 5b 30 2e 2e | 31 32 5d 20 4f 46 20 49 |RAY [0..|12] OF I|
|00000cb0| 4e 54 45 47 45 52 3b 20 | 20 28 2a 52 6f 77 73 20 |NTEGER; | (*Rows |
|00000cc0| 30 2c 20 36 2c 20 31 32 | 20 61 72 65 20 64 75 6d |0, 6, 12| are dum|
|00000cd0| 6d 79 20 28 73 61 66 65 | 29 2a 29 0d 20 20 20 20 |my (safe|)*). |
|00000ce0| 20 20 53 70 65 65 64 73 | 20 20 20 20 3a 20 49 4e | Speeds| : IN|
|00000cf0| 54 45 47 45 52 3b 0d 20 | 20 20 20 20 20 52 69 67 |TEGER;. | Rig|
|00000d00| 68 74 45 64 67 65 2c 0d | 20 20 20 20 20 20 4c 65 |htEdge,.| Le|
|00000d10| 66 74 45 64 67 65 2c 0d | 20 20 20 20 20 20 48 65 |ftEdge,.| He|
|00000d20| 69 67 68 74 20 20 20 20 | 3a 20 49 4e 54 45 47 45 |ight |: INTEGE|
|00000d30| 52 3b 0d 20 20 20 20 20 | 20 56 61 6c 69 64 4b 65 |R;. | ValidKe|
|00000d40| 79 73 20 3a 20 41 52 52 | 41 59 20 44 69 72 65 63 |ys : ARR|AY Direc|
|00000d50| 74 69 6f 6e 73 20 4f 46 | 20 43 48 41 52 3b 0d 20 |tions OF| CHAR;. |
|00000d60| 20 20 20 20 20 47 61 6d | 65 46 6f 6e 74 20 20 3a | Gam|eFont :|
|00000d70| 20 46 6f 6e 74 3b 0d 20 | 20 20 20 20 20 52 61 6e | Font;. | Ran|
|00000d80| 64 6f 6d 20 20 20 20 3a | 20 43 41 52 44 49 4e 41 |dom :| CARDINA|
|00000d90| 4c 3b 0d 20 20 20 20 20 | 20 47 61 6d 65 4f 76 65 |L;. | GameOve|
|00000da0| 72 20 20 3a 20 42 4f 4f | 4c 45 41 4e 3b 0d 20 20 |r : BOO|LEAN;. |
|00000db0| 20 20 20 20 0d 20 20 20 | 20 20 20 53 68 6f 72 74 | . | Short|
|00000dc0| 4c 6f 67 2c 0d 20 20 20 | 20 20 20 4d 65 64 69 75 |Log,. | Mediu|
|00000dd0| 6d 4c 6f 67 2c 0d 20 20 | 20 20 20 20 4c 6f 6e 67 |mLog,. | Long|
|00000de0| 4c 6f 67 2c 0d 20 20 20 | 20 20 20 54 75 72 74 6c |Log,. | Turtl|
|00000df0| 65 73 2c 0d 20 20 20 20 | 20 20 43 61 72 52 2c 0d |es,. | CarR,.|
|00000e00| 20 20 20 20 20 20 43 61 | 72 4c 2c 0d 20 20 20 20 | Ca|rL,. |
|00000e10| 20 20 54 72 75 63 6b 4c | 2c 0d 20 20 20 20 20 20 | TruckL|,. |
|00000e20| 46 72 6f 67 55 2c 0d 20 | 20 20 20 20 20 46 72 6f |FrogU,. | Fro|
|00000e30| 67 4c 2c 0d 20 20 20 20 | 20 20 46 72 6f 67 52 2c |gL,. | FrogR,|
|00000e40| 0d 20 20 20 20 20 20 46 | 72 6f 67 44 2c 0d 20 20 |. F|rogD,. |
|00000e50| 20 20 20 20 53 68 61 64 | 6f 77 55 2c 0d 20 20 20 | Shad|owU,. |
|00000e60| 20 20 20 53 68 61 64 6f | 77 4c 2c 0d 20 20 20 20 | Shado|wL,. |
|00000e70| 20 20 53 68 61 64 6f 77 | 52 2c 0d 20 20 20 20 20 | Shadow|R,. |
|00000e80| 20 53 68 61 64 6f 77 44 | 2c 0d 20 20 20 20 20 20 | ShadowD|,. |
|00000e90| 53 70 6c 61 73 68 2c 0d | 20 20 20 20 20 20 46 72 |Splash,.| Fr|
|00000ea0| 6f 67 41 72 65 61 2c 0d | 20 20 20 20 20 20 42 65 |ogArea,.| Be|
|00000eb0| 68 69 6e 64 41 72 65 61 | 3a 20 54 65 6d 70 6c 61 |hindArea|: Templa|
|00000ec0| 74 65 3b 0d 20 20 20 20 | 20 20 0d 20 20 20 20 20 |te;. | . |
|00000ed0| 20 0d 20 20 20 20 20 20 | 67 72 61 79 2c 20 77 68 | . |gray, wh|
|00000ee0| 69 74 65 2c 20 62 6c 61 | 63 6b 3a 20 50 61 74 74 |ite, bla|ck: Patt|
|00000ef0| 65 72 6e 3b 0d 20 20 20 | 20 20 20 0d 20 20 20 20 |ern;. | . |
|00000f00| 20 20 4c 65 69 73 74 65 | 3a 20 41 52 52 41 59 20 | Leiste|: ARRAY |
|00000f10| 5b 31 2e 2e 34 5d 20 4f | 46 20 4d 65 6e 75 48 61 |[1..4] O|F MenuHa|
|00000f20| 6e 64 6c 65 3b 20 20 20 | 20 20 28 2a 20 4d 61 63 |ndle; | (* Mac|
|00000f30| 20 55 73 65 72 49 6e 74 | 65 72 66 61 63 65 20 2a | UserInt|erface *|
|00000f40| 29 0d 20 20 20 20 20 20 | 68 61 6c 74 64 69 73 61 |). |haltdisa|
|00000f50| 62 6c 65 64 2c 0d 20 20 | 20 20 20 20 67 61 6d 65 |bled,. | game|
|00000f60| 73 74 61 72 74 65 64 20 | 20 3a 20 42 4f 4f 4c 45 |started | : BOOLE|
|00000f70| 41 4e 3b 0d 20 20 20 20 | 20 20 77 69 6e 64 6f 77 |AN;. | window|
|00000f80| 70 6c 61 63 65 20 20 3a | 20 49 4e 54 45 47 45 52 |place :| INTEGER|
|00000f90| 3b 0d 20 20 20 20 20 20 | 77 69 6e 64 6f 77 42 6f |;. |windowBo|
|00000fa0| 75 6e 64 73 52 65 63 74 | 2c 0d 20 20 20 20 20 20 |undsRect|,. |
|00000fb0| 77 69 6e 64 6f 77 53 69 | 7a 65 52 65 63 74 0d 20 |windowSi|zeRect. |
|00000fc0| 20 20 20 20 20 09 09 20 | 20 20 3a 20 52 65 63 74 | .. | : Rect|
|00000fd0| 3b 0d 20 20 20 20 20 20 | 74 68 65 45 76 65 6e 74 |;. |theEvent|
|00000fe0| 20 20 20 20 20 3a 20 45 | 76 65 6e 74 52 65 63 6f | : E|ventReco|
|00000ff0| 72 64 3b 0d 20 20 20 20 | 20 20 72 65 73 20 20 20 |rd;. | res |
|00001000| 20 20 20 20 20 20 20 3a | 20 42 4f 4f 4c 45 41 4e | :| BOOLEAN|
|00001010| 3b 0d 20 20 20 20 20 20 | 74 68 65 57 69 6e 64 6f |;. |theWindo|
|00001020| 77 20 20 20 20 3a 20 57 | 69 6e 64 6f 77 50 74 72 |w : W|indowPtr|
|00001030| 3b 0d 20 20 20 20 20 20 | 44 69 72 20 20 20 20 20 |;. |Dir |
|00001040| 20 20 20 20 20 3a 20 44 | 69 72 65 63 74 69 6f 6e | : D|irection|
|00001050| 73 3b 0d 20 20 20 20 20 | 20 53 77 61 74 63 68 2c |s;. | Swatch,|
|00001060| 0d 20 20 20 20 20 20 4b | 72 65 75 7a 20 20 20 20 |. K|reuz |
|00001070| 20 20 20 20 3a 20 50 4f | 49 4e 54 45 52 20 54 4f | : PO|INTER TO|
|00001080| 20 50 4f 49 4e 54 45 52 | 20 54 4f 20 43 75 72 73 | POINTER| TO Curs|
|00001090| 6f 72 3b 0d 20 20 20 20 | 20 20 69 20 20 20 20 20 |or;. | i |
|000010a0| 20 20 20 20 20 20 20 3a | 20 49 4e 54 45 47 45 52 | :| INTEGER|
|000010b0| 3b 0d 20 20 20 20 20 20 | 6f 73 20 20 20 20 20 20 |;. |os |
|000010c0| 20 20 20 20 20 3a 20 4f | 53 74 72 32 35 35 3b 20 | : O|Str255; |
|000010d0| 20 20 28 2a 77 6f 72 6b | 69 6e 67 20 4f 53 20 53 | (*work|ing OS S|
|000010e0| 74 72 69 6e 67 20 2a 29 | 0d 20 20 20 20 20 20 0d |tring *)|. .|
|000010f0| 20 20 20 20 20 20 68 62 | 61 72 2c 0d 20 20 20 20 | hb|ar,. |
|00001100| 20 20 76 62 61 72 20 20 | 20 20 20 20 20 20 20 3a | vbar | :|
|00001110| 20 43 6f 6e 74 72 6f 6c | 48 61 6e 64 6c 65 3b 20 | Control|Handle; |
|00001120| 20 28 2a 20 73 63 72 6f | 6c 6c 20 62 61 72 73 20 | (* scro|ll bars |
|00001130| 2a 29 0d 20 20 20 20 20 | 20 0d 20 20 20 20 20 20 |*). | . |
|00001140| 0d 20 56 41 52 20 6e 6f | 4d 61 73 6b 20 3a 20 52 |. VAR no|Mask : R|
|00001150| 67 6e 48 61 6e 64 6c 65 | 20 28 2a 3d 20 30 30 30 |gnHandle| (*= 000|
|00001160| 30 30 30 68 20 2a 29 3b | 20 20 20 20 28 2a 20 6e |000h *);| (* n|
|00001170| 6f 20 4d 61 73 6b 20 52 | 65 67 69 6f 6e 20 69 6e |o Mask R|egion in|
|00001180| 20 43 6f 70 79 42 69 74 | 73 20 2a 29 0d 20 20 20 | CopyBit|s *). |
|00001190| 20 20 20 0d 20 20 20 20 | 20 20 0d 20 20 20 20 20 | . | . |
|000011a0| 20 0d 50 52 4f 43 45 44 | 55 52 45 20 52 65 73 65 | .PROCED|URE Rese|
|000011b0| 74 53 70 65 65 64 73 20 | 28 56 41 52 20 54 6f 53 |tSpeeds |(VAR ToS|
|000011c0| 70 65 65 64 3a 20 49 4e | 54 45 47 45 52 3b 20 44 |peed: IN|TEGER; D|
|000011d0| 65 6c 74 61 3a 20 49 4e | 54 45 47 45 52 29 3b 0d |elta: IN|TEGER);.|
|000011e0| 43 4f 4e 53 54 20 4d 61 | 78 53 70 65 65 64 20 20 |CONST Ma|xSpeed |
|000011f0| 3d 20 35 3b 0d 0d 20 20 | 50 52 4f 43 45 44 55 52 |= 5;.. |PROCEDUR|
|00001200| 45 20 53 70 65 65 64 53 | 65 74 20 28 61 2c 20 62 |E SpeedS|et (a, b|
|00001210| 2c 20 63 2c 20 64 2c 20 | 65 2c 20 66 2c 20 67 2c |, c, d, |e, f, g,|
|00001220| 20 68 2c 20 69 2c 20 6a | 3a 20 49 4e 54 45 47 45 | h, i, j|: INTEGE|
|00001230| 52 29 3b 0d 20 20 42 45 | 47 49 4e 0d 20 20 20 20 |R);. BE|GIN. |
|00001240| 53 70 65 65 64 20 5b 31 | 5d 20 20 3a 3d 20 61 3b |Speed [1|] := a;|
|00001250| 20 20 53 70 65 65 64 20 | 5b 32 5d 20 20 3a 3d 20 | Speed |[2] := |
|00001260| 62 3b 0d 20 20 20 20 53 | 70 65 65 64 20 5b 33 5d |b;. S|peed [3]|
|00001270| 20 20 3a 3d 20 63 3b 20 | 20 53 70 65 65 64 20 5b | := c; | Speed [|
|00001280| 34 5d 20 20 3a 3d 20 64 | 3b 0d 20 20 20 20 53 70 |4] := d|;. Sp|
|00001290| 65 65 64 20 5b 35 5d 20 | 20 3a 3d 20 65 3b 20 20 |eed [5] | := e; |
|000012a0| 53 70 65 65 64 20 5b 37 | 5d 20 20 3a 3d 20 66 3b |Speed [7|] := f;|
|000012b0| 0d 20 20 20 20 53 70 65 | 65 64 20 5b 38 5d 20 20 |. Spe|ed [8] |
|000012c0| 3a 3d 20 67 3b 20 20 53 | 70 65 65 64 20 5b 39 5d |:= g; S|peed [9]|
|000012d0| 20 20 3a 3d 20 68 3b 0d | 20 20 20 20 53 70 65 65 | := h;.| Spee|
|000012e0| 64 20 5b 31 30 5d 20 3a | 3d 20 69 3b 20 20 53 70 |d [10] :|= i; Sp|
|000012f0| 65 65 64 20 5b 31 31 5d | 20 3a 3d 20 6a 3b 0d 20 |eed [11]| := j;. |
|00001300| 20 45 4e 44 20 53 70 65 | 65 64 53 65 74 3b 0d 0d | END Spe|edSet;..|
|00001310| 42 45 47 49 4e 0d 20 20 | 54 6f 53 70 65 65 64 20 |BEGIN. |ToSpeed |
|00001320| 3a 3d 20 54 6f 53 70 65 | 65 64 20 2b 20 44 65 6c |:= ToSpe|ed + Del|
|00001330| 74 61 3b 0d 20 20 53 70 | 65 65 64 20 5b 30 5d 20 |ta;. Sp|eed [0] |
|00001340| 3a 3d 20 30 3b 20 20 53 | 70 65 65 64 20 5b 36 5d |:= 0; S|peed [6]|
|00001350| 20 3a 3d 20 30 3b 20 20 | 53 70 65 65 64 20 5b 31 | := 0; |Speed [1|
|00001360| 32 5d 20 3a 3d 20 30 3b | 20 28 2a 27 53 61 66 65 |2] := 0;| (*'Safe|
|00001370| 27 20 72 6f 77 73 2a 29 | 0d 20 20 49 46 20 28 54 |' rows*)|. IF (T|
|00001380| 6f 53 70 65 65 64 20 3c | 20 30 29 20 54 48 45 4e |oSpeed <| 0) THEN|
|00001390| 0d 20 20 20 20 54 6f 53 | 70 65 65 64 20 3a 3d 20 |. ToS|peed := |
|000013a0| 30 3b 20 20 52 45 54 55 | 52 4e 3b 20 20 20 45 4e |0; RETU|RN; EN|
|000013b0| 44 3b 0d 20 20 49 46 20 | 28 54 6f 53 70 65 65 64 |D;. IF |(ToSpeed|
|000013c0| 20 3e 20 4d 61 78 53 70 | 65 65 64 29 20 54 48 45 | > MaxSp|eed) THE|
|000013d0| 4e 0d 20 20 20 20 54 6f | 53 70 65 65 64 20 3a 3d |N. To|Speed :=|
|000013e0| 20 4d 61 78 53 70 65 65 | 64 3b 20 20 52 45 54 55 | MaxSpee|d; RETU|
|000013f0| 52 4e 3b 20 20 20 45 4e | 44 3b 0d 20 20 43 41 53 |RN; EN|D;. CAS|
|00001400| 45 20 54 6f 53 70 65 65 | 64 20 4f 46 0d 20 20 20 |E ToSpee|d OF. |
|00001410| 20 30 3a 20 20 53 70 65 | 65 64 53 65 74 20 28 31 | 0: Spe|edSet (1|
|00001420| 2c 20 31 2c 20 32 2c 20 | 34 2c 20 33 2c 20 31 2c |, 1, 2, |4, 3, 1,|
|00001430| 20 31 2c 20 33 2c 20 31 | 2c 20 32 29 3b 20 20 20 | 1, 3, 1|, 2); |
|00001440| 20 20 7c 0d 20 20 20 20 | 31 3a 20 20 53 70 65 65 | |. |1: Spee|
|00001450| 64 53 65 74 20 28 31 2c | 20 31 2c 20 32 2c 20 35 |dSet (1,| 1, 2, 5|
|00001460| 2c 20 33 2c 20 31 2c 20 | 31 2c 20 35 2c 20 32 2c |, 3, 1, |1, 5, 2,|
|00001470| 20 33 29 3b 20 20 20 20 | 20 7c 0d 20 20 20 20 32 | 3); | |. 2|
|00001480| 3a 20 20 53 70 65 65 64 | 53 65 74 20 28 31 2c 20 |: Speed|Set (1, |
|00001490| 32 2c 20 34 2c 20 38 2c | 20 35 2c 20 32 2c 20 32 |2, 4, 8,| 5, 2, 2|
|000014a0| 2c 20 37 2c 20 34 2c 20 | 33 29 3b 20 20 20 20 20 |, 7, 4, |3); |
|000014b0| 7c 0d 20 20 20 20 33 3a | 20 20 53 70 65 65 64 53 ||. 3:| SpeedS|
|000014c0| 65 74 20 28 32 2c 20 33 | 2c 20 35 2c 20 31 32 2c |et (2, 3|, 5, 12,|
|000014d0| 20 37 2c 20 33 2c 20 32 | 2c 20 31 30 2c 20 35 2c | 7, 3, 2|, 10, 5,|
|000014e0| 20 33 29 3b 20 20 20 7c | 0d 20 20 20 20 34 3a 20 | 3); ||. 4: |
|000014f0| 20 53 70 65 65 64 53 65 | 74 20 28 32 2c 20 34 2c | SpeedSe|t (2, 4,|
|00001500| 20 37 2c 20 31 35 2c 20 | 38 2c 20 33 2c 20 33 2c | 7, 15, |8, 3, 3,|
|00001510| 20 31 32 2c 20 36 2c 20 | 35 29 3b 20 20 20 7c 0d | 12, 6, |5); |.|
|00001520| 20 20 20 20 35 3a 20 20 | 53 70 65 65 64 53 65 74 | 5: |SpeedSet|
|00001530| 20 28 33 2c 20 35 2c 20 | 38 2c 20 31 35 2c 20 31 | (3, 5, |8, 15, 1|
|00001540| 32 2c 20 36 2c 20 34 2c | 20 31 35 2c 20 36 2c 20 |2, 6, 4,| 15, 6, |
|00001550| 37 29 3b 0d 20 20 45 4c | 53 45 20 20 20 20 48 41 |7);. EL|SE HA|
|00001560| 4c 54 3b 0d 20 20 45 4e | 44 3b 0d 45 4e 44 20 52 |LT;. EN|D;.END R|
|00001570| 65 73 65 74 53 70 65 65 | 64 73 3b 0d 0d 50 52 4f |esetSpee|ds;..PRO|
|00001580| 43 45 44 55 52 45 20 50 | 72 6f 6d 70 74 4d 65 73 |CEDURE P|romptMes|
|00001590| 73 61 67 65 20 28 56 41 | 52 20 61 3a 20 41 52 52 |sage (VA|R a: ARR|
|000015a0| 41 59 20 4f 46 20 43 48 | 41 52 29 3b 0d 56 41 52 |AY OF CH|AR);.VAR|
|000015b0| 20 73 61 76 65 3a 20 47 | 72 61 66 50 74 72 3b 0d | save: G|rafPtr;.|
|000015c0| 42 45 47 49 4e 0d 20 20 | 47 65 74 50 6f 72 74 20 |BEGIN. |GetPort |
|000015d0| 28 73 61 76 65 29 3b 20 | 53 65 74 50 6f 72 74 20 |(save); |SetPort |
|000015e0| 28 53 79 73 74 65 6d 73 | 50 6f 72 74 29 3b 0d 20 |(Systems|Port);. |
|000015f0| 20 54 65 78 74 46 6f 6e | 74 20 28 31 29 3b 0d 20 | TextFon|t (1);. |
|00001600| 20 54 65 78 74 53 69 7a | 65 20 28 32 30 29 3b 0d | TextSiz|e (20);.|
|00001610| 20 20 4d 6f 76 65 54 6f | 20 28 33 30 2c 31 30 30 | MoveTo| (30,100|
|00001620| 29 3b 20 57 72 69 74 65 | 53 74 72 69 6e 67 20 28 |); Write|String (|
|00001630| 61 29 3b 0d 20 20 57 72 | 69 74 65 20 28 37 43 29 |a);. Wr|ite (7C)|
|00001640| 3b 0d 20 20 53 65 74 50 | 6f 72 74 20 28 73 61 76 |;. SetP|ort (sav|
|00001650| 65 29 3b 0d 45 4e 44 20 | 50 72 6f 6d 70 74 4d 65 |e);.END |PromptMe|
|00001660| 73 73 61 67 65 3b 0d 0d | 0d 50 52 4f 43 45 44 55 |ssage;..|.PROCEDU|
|00001670| 52 45 20 64 64 28 56 41 | 52 20 73 3a 20 41 52 52 |RE dd(VA|R s: ARR|
|00001680| 41 59 20 4f 46 20 43 48 | 41 52 29 3b 0d 56 41 52 |AY OF CH|AR);.VAR|
|00001690| 20 63 68 3a 20 43 48 41 | 52 3b 0d 42 45 47 49 4e | ch: CHA|R;.BEGIN|
|000016a0| 20 50 72 6f 6d 70 74 4d | 65 73 73 61 67 65 20 28 | PromptM|essage (|
|000016b0| 73 29 3b 20 52 65 61 64 | 20 28 63 68 29 3b 20 45 |s); Read| (ch); E|
|000016c0| 4e 44 20 64 64 3b 0d 0d | 0d 0d 0d 50 52 4f 43 45 |ND dd;..|...PROCE|
|000016d0| 44 55 52 45 20 49 6e 69 | 74 47 61 6d 65 3b 0d 43 |DURE Ini|tGame;.C|
|000016e0| 4f 4e 53 54 20 0d 20 20 | 20 20 20 20 54 6f 74 61 |ONST . | Tota|
|000016f0| 6c 57 69 64 74 68 20 20 | 3d 20 33 32 20 2a 20 43 |lWidth |= 32 * C|
|00001700| 68 61 72 57 69 64 74 68 | 3b 20 20 20 20 28 2a 20 |harWidth|; (* |
|00001710| 53 74 6f 72 61 67 65 42 | 4d 20 2a 29 0d 20 20 20 |StorageB|M *). |
|00001720| 20 20 20 54 6f 74 61 6c | 48 65 69 67 68 74 20 3d | Total|Height =|
|00001730| 20 35 20 2a 20 43 68 61 | 72 48 65 69 67 68 74 3b | 5 * Cha|rHeight;|
|00001740| 0d 20 20 20 20 20 20 57 | 61 74 65 72 43 68 61 72 |. W|aterChar|
|00001750| 20 20 20 3d 20 27 20 27 | 3b 20 20 28 2a 43 68 61 | = ' '|; (*Cha|
|00001760| 72 61 63 74 65 72 73 20 | 69 6e 20 74 68 65 20 27 |racters |in the '|
|00001770| 47 41 4d 45 27 20 66 6f | 6e 74 20 66 6f 72 20 64 |GAME' fo|nt for d|
|00001780| 72 61 77 69 6e 67 2a 29 | 0d 20 20 20 20 20 20 46 |rawing*)|. F|
|00001790| 69 72 73 74 4c 6f 67 20 | 20 20 20 3d 20 27 41 27 |irstLog | = 'A'|
|000017a0| 3b 20 20 28 2a 6e 6f 20 | 63 68 61 72 73 3a 20 49 |; (*no |chars: I|
|000017b0| 20 4c 20 52 20 2a 29 0d | 20 20 20 20 20 20 4d 69 | L R *).| Mi|
|000017c0| 64 4c 6f 67 20 20 20 20 | 20 20 3d 20 27 42 27 3b |dLog | = 'B';|
|000017d0| 0d 20 20 20 20 20 20 4c | 61 73 74 4c 6f 67 20 20 |. L|astLog |
|000017e0| 20 20 20 3d 20 27 43 27 | 3b 0d 20 20 20 20 20 20 | = 'C'|;. |
|000017f0| 46 69 72 73 74 54 75 72 | 74 6c 65 20 3d 20 27 44 |FirstTur|tle = 'D|
|00001800| 27 3b 0d 20 20 20 20 20 | 20 4d 69 64 54 75 72 74 |';. | MidTurt|
|00001810| 6c 65 20 20 20 3d 20 27 | 45 27 3b 0d 20 20 20 20 |le = '|E';. |
|00001820| 20 20 4c 61 73 74 54 75 | 72 74 6c 65 20 20 3d 20 | LastTu|rtle = |
|00001830| 27 46 27 3b 0d 20 20 20 | 20 20 20 46 69 72 73 74 |'F';. | First|
|00001840| 43 61 72 52 20 20 20 3d | 20 27 47 27 3b 20 20 28 |CarR =| 'G'; (|
|00001850| 2a 43 61 72 73 20 74 68 | 61 74 20 61 72 65 20 6d |*Cars th|at are m|
|00001860| 6f 76 69 6e 67 20 74 6f | 20 74 68 65 20 72 69 67 |oving to| the rig|
|00001870| 68 74 2a 29 0d 20 20 20 | 20 20 20 4c 61 73 74 43 |ht*). | LastC|
|00001880| 61 72 52 20 20 20 20 3d | 20 27 48 27 3b 0d 20 20 |arR =| 'H';. |
|00001890| 20 20 20 20 46 69 72 73 | 74 43 61 72 4c 20 20 20 | Firs|tCarL |
|000018a0| 3d 20 27 4a 27 3b 20 20 | 28 2a 43 61 72 73 20 74 |= 'J'; |(*Cars t|
|000018b0| 68 61 74 20 61 72 65 20 | 6d 6f 76 69 6e 67 20 74 |hat are |moving t|
|000018c0| 6f 20 74 68 65 20 6c 65 | 66 74 2a 29 0d 20 20 20 |o the le|ft*). |
|000018d0| 20 20 20 4c 61 73 74 43 | 61 72 4c 20 20 20 20 3d | LastC|arL =|
|000018e0| 20 27 4b 27 3b 0d 20 20 | 20 20 20 20 46 69 72 73 | 'K';. | Firs|
|000018f0| 74 54 72 75 63 6b 20 20 | 3d 20 27 4d 27 3b 20 20 |tTruck |= 'M'; |
|00001900| 28 2a 54 72 75 63 6b 73 | 20 6f 6e 6c 79 20 6d 6f |(*Trucks| only mo|
|00001910| 76 65 20 74 6f 20 74 68 | 65 20 6c 65 66 74 2a 29 |ve to th|e left*)|
|00001920| 0d 20 20 20 20 20 20 4d | 69 64 54 72 75 63 6b 20 |. M|idTruck |
|00001930| 20 20 20 3d 20 27 4e 27 | 3b 0d 20 20 20 20 20 20 | = 'N'|;. |
|00001940| 4c 61 73 74 54 72 75 63 | 6b 20 20 20 3d 20 27 4f |LastTruc|k = 'O|
|00001950| 27 3b 0d 20 20 20 20 20 | 20 46 69 72 73 74 55 70 |';. | FirstUp|
|00001960| 20 20 20 20 20 3d 20 27 | 50 27 3b 20 20 28 2a 41 | = '|P'; (*A|
|00001970| 6c 6c 20 74 68 65 20 66 | 6f 6c 6c 6f 77 69 6e 67 |ll the f|ollowing|
|00001980| 20 61 72 65 20 66 72 6f | 67 73 20 69 6e 20 74 68 | are fro|gs in th|
|00001990| 65 69 72 20 76 61 72 69 | 6f 75 73 20 6f 72 69 65 |eir vari|ous orie|
|000019a0| 6e 74 61 74 69 6f 6e 73 | 2a 29 0d 20 20 20 20 20 |ntations|*). |
|000019b0| 20 4c 61 73 74 55 70 20 | 20 20 20 20 20 3d 20 27 | LastUp | = '|
|000019c0| 51 27 3b 0d 20 20 20 20 | 20 20 46 69 72 73 74 4c |Q';. | FirstL|
|000019d0| 66 20 20 20 20 20 3d 20 | 27 53 27 3b 0d 20 20 20 |f = |'S';. |
|000019e0| 20 20 20 4c 61 73 74 4c | 66 20 20 20 20 20 20 3d | LastL|f =|
|000019f0| 20 27 54 27 3b 0d 20 20 | 20 20 20 20 46 69 72 73 | 'T';. | Firs|
|00001a00| 74 52 74 20 20 20 20 20 | 3d 20 27 55 27 3b 0d 20 |tRt |= 'U';. |
|00001a10| 20 20 20 20 20 4c 61 73 | 74 52 74 20 20 20 20 20 | Las|tRt |
|00001a20| 20 3d 20 27 56 27 3b 0d | 20 20 20 20 20 20 46 69 | = 'V';.| Fi|
|00001a30| 72 73 74 44 6e 20 20 20 | 20 20 3d 20 27 57 27 3b |rstDn | = 'W';|
|00001a40| 0d 20 20 20 20 20 20 4c | 61 73 74 44 6e 20 20 20 |. L|astDn |
|00001a50| 20 20 20 3d 20 27 58 27 | 3b 0d 20 20 20 20 20 20 | = 'X'|;. |
|00001a60| 53 46 69 72 73 74 55 70 | 20 20 20 20 3d 20 27 59 |SFirstUp| = 'Y|
|00001a70| 27 3b 20 20 28 2a 27 53 | 68 61 64 6f 77 73 27 2c |'; (*'S|hadows',|
|00001a80| 20 74 6f 20 63 6c 65 61 | 72 20 6f 75 74 20 74 68 | to clea|r out th|
|00001a90| 65 20 61 72 65 61 20 77 | 68 65 72 65 20 74 68 65 |e area w|here the|
|00001aa0| 20 66 72 6f 67 20 77 69 | 6c 6c 20 62 65 2a 29 0d | frog wi|ll be*).|
|00001ab0| 20 20 20 20 20 20 53 4c | 61 73 74 55 70 20 20 20 | SL|astUp |
|00001ac0| 20 20 3d 20 27 5a 27 3b | 0d 20 20 20 20 20 20 53 | = 'Z';|. S|
|00001ad0| 46 69 72 73 74 4c 66 20 | 20 20 20 3d 20 27 5b 27 |FirstLf | = '['|
|00001ae0| 3b 0d 20 20 20 20 20 20 | 53 4c 61 73 74 4c 66 20 |;. |SLastLf |
|00001af0| 20 20 20 20 3d 20 27 5c | 27 3b 0d 20 20 20 20 20 | = '\|';. |
|00001b00| 20 53 46 69 72 73 74 52 | 74 20 20 20 20 3d 20 27 | SFirstR|t = '|
|00001b10| 5d 27 3b 0d 20 20 20 20 | 20 20 53 4c 61 73 74 52 |]';. | SLastR|
|00001b20| 74 20 20 20 20 20 3d 20 | 27 5e 27 3b 0d 20 20 20 |t = |'^';. |
|00001b30| 20 20 20 53 46 69 72 73 | 74 44 6e 20 20 20 20 3d | SFirs|tDn =|
|00001b40| 20 27 5f 27 3b 0d 20 20 | 20 20 20 20 53 4c 61 73 | '_';. | SLas|
|00001b50| 74 44 6e 20 20 20 20 20 | 3d 20 27 60 27 3b 0d 20 |tDn |= '`';. |
|00001b60| 20 20 20 20 20 46 69 72 | 73 74 53 70 6c 61 73 68 | Fir|stSplash|
|00001b70| 20 3d 20 27 61 27 3b 0d | 20 20 20 20 20 20 4c 61 | = 'a';.| La|
|00001b80| 73 74 53 70 6c 61 73 68 | 20 20 3d 20 27 62 27 3b |stSplash| = 'b';|
|00001b90| 0d 20 20 20 20 20 20 0d | 20 20 20 20 20 20 0d 20 |. .| . |
|00001ba0| 20 20 20 20 20 0d 50 52 | 4f 43 45 44 55 52 45 20 | .PR|OCEDURE |
|00001bb0| 44 69 73 70 6c 61 79 43 | 68 61 72 20 28 62 3a 20 |DisplayC|har (b: |
|00001bc0| 42 69 74 4d 61 70 3b 20 | 56 41 52 20 49 6e 69 74 |BitMap; |VAR Init|
|00001bd0| 3a 20 52 65 63 74 3b 20 | 66 3a 20 46 6f 6e 74 3b |: Rect; |f: Font;|
|00001be0| 0d 20 20 20 20 20 20 20 | 20 20 20 20 20 20 20 20 |. | |
|00001bf0| 20 20 20 20 20 63 68 3a | 20 43 48 41 52 29 3b 0d | ch:| CHAR);.|
|00001c00| 28 2a 20 64 72 61 77 73 | 20 63 68 61 72 61 63 74 |(* draws| charact|
|00001c10| 65 72 2c 20 66 69 74 74 | 69 6e 67 20 69 6e 74 6f |er, fitt|ing into|
|00001c20| 20 49 6e 69 74 20 28 6c | 69 66 74 65 64 20 62 79 | Init (l|ifted by|
|00001c30| 20 64 65 73 63 65 6e 74 | 29 2c 20 0d 20 20 20 75 | descent|), . u|
|00001c40| 70 64 61 74 65 73 20 49 | 6e 69 74 2e 72 69 67 68 |pdates I|nit.righ|
|00001c50| 74 2e 0d 20 20 20 69 67 | 6e 6f 72 65 73 20 62 20 |t.. ig|nores b |
|00001c60| 61 6e 64 20 66 20 20 20 | 20 2d 2d 20 6f 74 68 65 |and f | -- othe|
|00001c70| 72 77 69 73 65 20 4c 69 | 6c 69 74 68 20 63 6f 6d |rwise Li|lith com|
|00001c80| 70 61 74 69 62 6c 65 0d | 2a 29 0d 56 41 52 20 77 |patible.|*).VAR w|
|00001c90| 68 65 72 65 3a 20 50 6f | 69 6e 74 3b 0d 0d 42 45 |here: Po|int;..BE|
|00001ca0| 47 49 4e 0d 20 20 4d 6f | 76 65 54 6f 20 28 49 6e |GIN. Mo|veTo (In|
|00001cb0| 69 74 2e 72 69 67 68 74 | 2c 20 49 6e 69 74 2e 62 |it.right|, Init.b|
|00001cc0| 6f 74 74 6f 6d 2d 69 6e | 66 6f 2e 64 65 73 63 65 |ottom-in|fo.desce|
|00001cd0| 6e 74 29 3b 20 20 20 28 | 2a 20 68 76 20 2a 29 0d |nt); (|* hv *).|
|00001ce0| 20 20 44 72 61 77 43 68 | 61 72 20 28 63 68 29 3b | DrawCh|ar (ch);|
|00001cf0| 0d 20 20 47 65 74 50 65 | 6e 20 28 77 68 65 72 65 |. GetPe|n (where|
|00001d00| 29 3b 0d 20 20 49 6e 69 | 74 2e 72 69 67 68 74 20 |);. Ini|t.right |
|00001d10| 3a 3d 20 77 68 65 72 65 | 2e 68 3b 0d 45 4e 44 20 |:= where|.h;.END |
|00001d20| 44 69 73 70 6c 61 79 43 | 68 61 72 3b 0d 0d 50 52 |DisplayC|har;..PR|
|00001d30| 4f 43 45 44 55 52 45 20 | 47 65 74 54 65 6d 70 6c |OCEDURE |GetTempl|
|00001d40| 61 74 65 20 28 49 6e 69 | 74 3a 20 52 65 63 74 3b |ate (Ini|t: Rect;|
|00001d50| 20 56 41 52 20 72 3a 20 | 52 65 63 74 29 3b 0d 42 | VAR r: |Rect);.B|
|00001d60| 45 47 49 4e 0d 20 20 72 | 20 3a 3d 20 49 6e 69 74 |EGIN. r| := Init|
|00001d70| 3b 0d 20 20 57 49 54 48 | 20 72 20 44 4f 20 49 46 |;. WITH| r DO IF|
|00001d80| 20 72 69 67 68 74 20 3e | 20 6d 61 78 69 20 54 48 | right >| maxi TH|
|00001d90| 45 4e 20 6d 61 78 69 3a | 3d 72 69 67 68 74 20 45 |EN maxi:|=right E|
|00001da0| 4e 44 20 45 4e 44 3b 0d | 45 4e 44 20 47 65 74 54 |ND END;.|END GetT|
|00001db0| 65 6d 70 6c 61 74 65 3b | 0d 09 09 20 20 0d 0d 56 |emplate;|... ..V|
|00001dc0| 41 52 20 20 20 0d 20 20 | 20 20 20 20 49 6e 69 74 |AR . | Init|
|00001dd0| 3a 20 52 65 63 74 3b 0d | 20 20 20 20 20 20 69 20 |: Rect;.| i |
|00001de0| 20 20 3a 20 43 41 52 44 | 49 4e 41 4c 3b 0d 20 20 | : CARD|INAL;. |
|00001df0| 20 20 20 20 6d 61 78 69 | 20 3a 20 49 4e 54 45 47 | maxi| : INTEG|
|00001e00| 45 52 3b 0d 20 20 20 20 | 20 20 69 6e 66 6f 20 3a |ER;. | info :|
|00001e10| 20 46 6f 6e 74 49 6e 66 | 6f 3b 0d 42 45 47 49 4e | FontInf|o;.BEGIN|
|00001e20| 0d 20 20 41 6c 6c 4f 62 | 6a 65 63 74 73 20 3a 3d |. AllOb|jects :=|
|00001e30| 20 4e 49 4c 3b 0d 20 20 | 42 75 73 79 48 6f 75 73 | NIL;. |BusyHous|
|00001e40| 65 73 20 3a 3d 20 7b 7d | 3b 0d 20 20 42 75 73 79 |es := {}|;. Busy|
|00001e50| 52 6f 77 73 20 3a 3d 20 | 7b 30 2c 20 36 2c 20 31 |Rows := |{0, 6, 1|
|00001e60| 32 7d 3b 20 20 20 28 2a | 54 68 65 20 27 73 61 66 |2}; (*|The 'saf|
|00001e70| 65 27 20 72 6f 77 73 2a | 29 0d 20 20 53 70 65 65 |e' rows*|). Spee|
|00001e80| 64 73 20 3a 3d 20 31 3b | 0d 20 20 52 65 73 65 74 |ds := 1;|. Reset|
|00001e90| 53 70 65 65 64 73 20 28 | 53 70 65 65 64 73 2c 20 |Speeds (|Speeds, |
|00001ea0| 30 29 3b 0d 20 20 56 61 | 6c 69 64 4b 65 79 73 20 |0);. Va|lidKeys |
|00001eb0| 5b 75 70 5d 20 3a 3d 20 | 27 69 27 3b 20 20 20 20 |[up] := |'i'; |
|00001ec0| 20 56 61 6c 69 64 4b 65 | 79 73 20 5b 64 6f 77 6e | ValidKe|ys [down|
|00001ed0| 5d 20 3a 3d 20 27 6d 27 | 3b 0d 20 20 56 61 6c 69 |] := 'm'|;. Vali|
|00001ee0| 64 4b 65 79 73 20 5b 6c | 65 66 74 5d 20 3a 3d 20 |dKeys [l|eft] := |
|00001ef0| 27 6a 27 3b 20 20 20 20 | 20 56 61 6c 69 64 4b 65 |'j'; | ValidKe|
|00001f00| 79 73 20 5b 72 69 67 68 | 74 5d 20 3a 3d 20 27 6c |ys [righ|t] := 'l|
|00001f10| 27 3b 0d 20 20 52 61 6e | 64 6f 6d 20 3a 3d 20 31 |';. Ran|dom := 1|
|00001f20| 3b 0d 20 20 0d 20 20 53 | 65 74 52 65 63 74 28 77 |;. . S|etRect(w|
|00001f30| 69 6e 64 6f 77 42 6f 75 | 6e 64 73 52 65 63 74 2c |indowBou|ndsRect,|
|00001f40| 20 35 2c 34 30 2c 20 35 | 30 37 2c 33 33 37 29 3b | 5,40, 5|07,337);|
|00001f50| 20 20 20 28 2a 68 76 31 | 2c 68 76 32 2a 29 0d 20 | (*hv1|,hv2*). |
|00001f60| 20 53 65 74 52 65 63 74 | 28 77 69 6e 64 6f 77 53 | SetRect|(windowS|
|00001f70| 69 7a 65 52 65 63 74 20 | 20 2c 31 30 30 2c 31 30 |izeRect | ,100,10|
|00001f80| 30 2c 20 35 30 30 2c 34 | 30 30 29 3b 28 2a 68 76 |0, 500,4|00);(*hv|
|00001f90| 20 6d 69 6e 2c 20 68 76 | 20 6d 61 78 2a 29 0d 20 | min, hv| max*). |
|00001fa0| 20 6d 6b 4f 53 74 72 20 | 28 22 46 72 6f 67 20 47 | mkOStr |("Frog G|
|00001fb0| 61 6d 65 20 28 62 79 20 | 45 53 42 20 61 6e 64 20 |ame (by |ESB and |
|00001fc0| 50 46 29 22 2c 6f 73 29 | 3b 0d 20 20 52 65 61 6c |PF)",os)|;. Real|
|00001fd0| 50 6f 72 74 20 3a 3d 20 | 41 44 52 20 28 52 65 61 |Port := |ADR (Rea|
|00001fe0| 6c 57 69 6e 64 6f 77 52 | 65 63 6f 72 64 2e 70 6f |lWindowR|ecord.po|
|00001ff0| 72 74 29 3b 0d 20 20 52 | 65 61 6c 57 69 6e 64 6f |rt);. R|ealWindo|
|00002000| 77 20 3a 3d 20 4e 65 77 | 57 69 6e 64 6f 77 20 28 |w := New|Window (|
|00002010| 41 44 52 20 28 52 65 61 | 6c 57 69 6e 64 6f 77 52 |ADR (Rea|lWindowR|
|00002020| 65 63 6f 72 64 29 2c 0d | 20 20 20 20 77 69 6e 64 |ecord),.| wind|
|00002030| 6f 77 42 6f 75 6e 64 73 | 52 65 63 74 2c 20 41 44 |owBounds|Rect, AD|
|00002040| 52 28 6f 73 29 2c 20 54 | 52 55 45 20 28 2a 76 69 |R(os), T|RUE (*vi|
|00002050| 73 69 62 6c 65 2a 29 2c | 44 6f 63 75 6d 65 6e 74 |sible*),|Document|
|00002060| 50 72 6f 63 20 28 2a 74 | 79 70 65 2a 29 2c 0d 20 |Proc (*t|ype*),. |
|00002070| 20 20 20 57 69 6e 64 6f | 77 50 74 72 28 2d 31 29 | Windo|wPtr(-1)|
|00002080| 20 28 2a 62 65 68 69 6e | 64 2a 29 2c 20 54 52 55 | (*behin|d*), TRU|
|00002090| 45 28 2a 68 61 73 20 67 | 6f 61 77 61 79 2a 29 2c |E(*has g|oaway*),|
|000020a0| 30 29 3b 0d 20 20 53 65 | 6c 65 63 74 57 69 6e 64 |0);. Se|lectWind|
|000020b0| 6f 77 20 28 52 65 61 6c | 57 69 6e 64 6f 77 29 3b |ow (Real|Window);|
|000020c0| 0d 20 20 0d 20 20 50 72 | 6f 6d 70 74 4d 65 73 73 |. . Pr|omptMess|
|000020d0| 61 67 65 20 28 27 57 65 | 6c 63 6f 6d 65 20 74 6f |age ('We|lcome to|
|000020e0| 20 74 68 65 20 76 69 64 | 65 6f 20 67 61 6d 65 21 | the vid|eo game!|
|000020f0| 27 29 3b 0d 20 20 0d 20 | 20 57 49 54 48 20 46 72 |');. . | WITH Fr|
|00002100| 6f 67 20 44 4f 0d 20 20 | 20 20 4d 6f 76 65 64 20 |og DO. | Moved |
|00002110| 3a 3d 20 46 41 4c 53 45 | 3b 20 20 43 72 6f 61 6b |:= FALSE|; Croak|
|00002120| 65 64 20 3a 3d 20 46 41 | 4c 53 45 3b 0d 20 20 20 |ed := FA|LSE;. |
|00002130| 20 4f 72 69 65 6e 74 61 | 74 69 6f 6e 20 3a 3d 20 | Orienta|tion := |
|00002140| 75 70 3b 0d 20 20 20 20 | 52 6f 77 20 3a 3d 20 30 |up;. |Row := 0|
|00002150| 3b 20 20 20 0d 20 20 20 | 20 50 6f 73 58 20 3a 3d |; . | PosX :=|
|00002160| 20 28 51 44 47 6c 6f 62 | 61 6c 73 5e 2e 73 63 72 | (QDGlob|als^.scr|
|00002170| 65 65 6e 42 69 74 73 2e | 62 6f 75 6e 64 73 2e 6c |eenBits.|bounds.l|
|00002180| 65 66 74 2b 0d 09 20 20 | 20 20 20 20 20 51 44 47 |eft+.. | QDG|
|00002190| 6c 6f 62 61 6c 73 5e 2e | 73 63 72 65 65 6e 42 69 |lobals^.|screenBi|
|000021a0| 74 73 2e 62 6f 75 6e 64 | 73 2e 72 69 67 68 74 29 |ts.bound|s.right)|
|000021b0| 20 44 49 56 20 32 3b 09 | 20 20 20 20 20 20 20 0d | DIV 2;.| .|
|000021c0| 20 20 45 4e 44 3b 20 20 | 28 2a 57 49 54 48 2a 29 | END; |(*WITH*)|
|000021d0| 0d 20 20 0d 20 20 53 63 | 72 6f 6c 6c 42 61 72 52 |. . Sc|rollBarR|
|000021e0| 67 6e 20 3a 3d 20 4e 65 | 77 52 67 6e 28 29 3b 20 |gn := Ne|wRgn(); |
|000021f0| 20 20 28 2a 20 41 6c 6c | 6f 63 61 74 69 6f 6e 20 | (* All|ocation |
|00002200| 2a 29 0d 20 20 52 65 61 | 6c 42 4d 20 3a 3d 20 41 |*). Rea|lBM := A|
|00002210| 44 52 20 28 52 65 61 6c | 50 6f 72 74 5e 2e 70 6f |DR (Real|Port^.po|
|00002220| 72 74 42 69 74 73 29 3b | 0d 20 20 28 2a 20 6d 6f |rtBits);|. (* mo|
|00002230| 64 69 66 69 65 64 20 63 | 6f 6f 72 64 69 6e 61 74 |dified c|oordinat|
|00002240| 65 20 73 79 73 74 65 6d | 20 2a 29 0d 20 0d 20 20 |e system| *). . |
|00002250| 28 2a 20 42 75 69 6c 64 | 20 53 74 6f 72 61 67 65 |(* Build| Storage|
|00002260| 20 42 69 74 20 4d 61 70 | 3a 20 2a 29 0d 20 20 53 | Bit Map|: *). S|
|00002270| 74 6f 72 61 67 65 50 6f | 72 74 3a 3d 41 44 52 28 |toragePo|rt:=ADR(|
|00002280| 53 74 6f 72 61 67 65 50 | 6f 72 74 52 65 63 6f 72 |StorageP|ortRecor|
|00002290| 64 29 3b 0d 20 20 4f 70 | 65 6e 50 6f 72 74 28 53 |d);. Op|enPort(S|
|000022a0| 74 6f 72 61 67 65 50 6f | 72 74 29 3b 0d 20 20 53 |toragePo|rt);. S|
|000022b0| 74 6f 72 61 67 65 42 4d | 20 3a 3d 20 41 44 52 20 |torageBM| := ADR |
|000022c0| 28 53 74 6f 72 61 67 65 | 50 6f 72 74 5e 2e 70 6f |(Storage|Port^.po|
|000022d0| 72 74 42 69 74 73 29 3b | 0d 20 20 53 65 74 52 65 |rtBits);|. SetRe|
|000022e0| 63 74 28 53 74 6f 72 61 | 67 65 42 4d 5e 2e 62 6f |ct(Stora|geBM^.bo|
|000022f0| 75 6e 64 73 2c 30 2c 2d | 54 6f 74 61 6c 48 65 69 |unds,0,-|TotalHei|
|00002300| 67 68 74 2c 54 6f 74 61 | 6c 57 69 64 74 68 2c 30 |ght,Tota|lWidth,0|
|00002310| 29 3b 20 20 28 2a 20 68 | 76 31 2c 20 68 76 32 20 |); (* h|v1, hv2 |
|00002320| 2a 29 0d 20 20 53 74 6f | 72 61 67 65 42 4d 5e 2e |*). Sto|rageBM^.|
|00002330| 72 6f 77 42 79 74 65 73 | 20 3a 3d 20 32 2a 20 28 |rowBytes| := 2* (|
|00002340| 28 54 6f 74 61 6c 57 69 | 64 74 68 2b 31 35 29 20 |(TotalWi|dth+15) |
|00002350| 44 49 56 20 31 36 29 3b | 28 2a 62 79 74 65 73 20 |DIV 16);|(*bytes |
|00002360| 70 65 72 20 72 6f 77 2c | 20 65 76 65 6e 2a 29 0d |per row,| even*).|
|00002370| 20 20 53 74 6f 72 61 67 | 65 42 4d 53 69 7a 65 20 | Storag|eBMSize |
|00002380| 3a 3d 20 20 54 6f 74 61 | 6c 48 65 69 67 68 74 20 |:= Tota|lHeight |
|00002390| 2a 20 43 41 52 44 49 4e | 41 4c 28 53 74 6f 72 61 |* CARDIN|AL(Stora|
|000023a0| 67 65 42 4d 5e 2e 72 6f | 77 42 79 74 65 73 29 3b |geBM^.ro|wBytes);|
|000023b0| 0d 20 20 41 4c 4c 4f 43 | 41 54 45 28 53 74 6f 72 |. ALLOC|ATE(Stor|
|000023c0| 61 67 65 42 4d 5e 2e 62 | 61 73 65 41 64 64 72 2c |ageBM^.b|aseAddr,|
|000023d0| 53 74 6f 72 61 67 65 42 | 4d 53 69 7a 65 29 3b 0d |StorageB|MSize);.|
|000023e0| 20 20 0d 20 20 53 74 6f | 72 61 67 65 50 6f 72 74 | . Sto|ragePort|
|000023f0| 5e 2e 70 6f 72 74 52 65 | 63 74 3a 3d 20 53 74 6f |^.portRe|ct:= Sto|
|00002400| 72 61 67 65 42 4d 5e 2e | 62 6f 75 6e 64 73 3b 0d |rageBM^.|bounds;.|
|00002410| 20 20 53 65 74 52 65 63 | 74 52 67 6e 28 53 74 6f | SetRec|tRgn(Sto|
|00002420| 72 61 67 65 50 6f 72 74 | 5e 2e 76 69 73 52 67 6e |ragePort|^.visRgn|
|00002430| 2c 20 2d 31 30 30 30 2c | 2d 31 30 30 30 2c 20 31 |, -1000,|-1000, 1|
|00002440| 30 30 30 2c 31 30 30 30 | 29 3b 0d 20 20 0d 20 20 |000,1000|);. . |
|00002450| 6e 6f 4d 61 73 6b 20 3a | 3d 20 52 67 6e 48 61 6e |noMask :|= RgnHan|
|00002460| 64 6c 65 20 28 30 30 30 | 30 30 68 29 3b 0d 20 20 |dle (000|00h);. |
|00002470| 0d 20 20 0d 20 20 0d 20 | 20 28 2a 4d 61 6b 65 4f |. . . | (*MakeO|
|00002480| 53 74 72 28 27 4e 65 77 | 20 59 6f 72 6b 27 2c 46 |Str('New| York',F|
|00002490| 6f 6e 74 4e 61 6d 65 29 | 3b 0d 20 20 47 65 74 46 |ontName)|;. GetF|
|000024a0| 4e 75 6d 28 46 6f 6e 74 | 4e 61 6d 65 2c 20 47 61 |Num(Font|Name, Ga|
|000024b0| 6d 65 46 6f 6e 74 29 3b | 20 20 46 6f 6e 74 4d 67 |meFont);| FontMg|
|000024c0| 72 20 65 78 69 73 74 69 | 65 72 74 20 6e 6f 63 68 |r existi|ert noch|
|000024d0| 20 6e 69 63 68 74 20 2a | 29 0d 20 20 47 61 6d 65 | nicht *|). Game|
|000024e0| 46 6f 6e 74 20 3a 3d 20 | 32 30 3b 0d 20 20 0d 20 |Font := |20;. . |
|000024f0| 20 53 65 74 50 6f 72 74 | 20 28 53 74 6f 72 61 67 | SetPort| (Storag|
|00002500| 65 50 6f 72 74 29 3b 0d | 20 20 54 65 78 74 46 6f |ePort);.| TextFo|
|00002510| 6e 74 20 28 47 61 6d 65 | 46 6f 6e 74 29 3b 0d 20 |nt (Game|Font);. |
|00002520| 20 54 65 78 74 53 69 7a | 65 20 28 43 68 61 72 48 | TextSiz|e (CharH|
|00002530| 65 69 67 68 74 29 3b 0d | 20 20 47 65 74 46 6f 6e |eight);.| GetFon|
|00002540| 74 49 6e 66 6f 20 28 69 | 6e 66 6f 29 3b 20 20 20 |tInfo (i|nfo); |
|00002550| 20 20 20 28 2a 20 67 65 | 74 20 69 6e 66 6f 2e 64 | (* ge|t info.d|
|00002560| 65 73 63 65 6e 74 20 2a | 29 0d 20 20 0d 20 20 67 |escent *|). . g|
|00002570| 72 61 79 20 3a 3d 20 51 | 44 47 6c 6f 62 61 6c 73 |ray := Q|DGlobals|
|00002580| 5e 2e 67 72 61 79 3b 0d | 20 20 77 68 69 74 65 20 |^.gray;.| white |
|00002590| 3a 3d 20 51 44 47 6c 6f | 62 61 6c 73 5e 2e 77 68 |:= QDGlo|bals^.wh|
|000025a0| 69 74 65 3b 0d 20 20 62 | 6c 61 63 6b 20 3a 3d 20 |ite;. b|lack := |
|000025b0| 51 44 47 6c 6f 62 61 6c | 73 5e 2e 62 6c 61 63 6b |QDGlobal|s^.black|
|000025c0| 3b 0d 20 20 0d 20 20 0d | 20 20 46 69 6c 6c 52 67 |;. . .| FillRg|
|000025d0| 6e 28 53 74 6f 72 61 67 | 65 50 6f 72 74 5e 2e 76 |n(Storag|ePort^.v|
|000025e0| 69 73 52 67 6e 2c 20 77 | 68 69 74 65 29 3b 0d 20 |isRgn, w|hite);. |
|000025f0| 20 0d 0d 28 2a 54 68 65 | 20 73 65 74 75 70 20 69 | ..(*The| setup i|
|00002600| 6e 20 74 68 65 20 62 69 | 74 6d 61 70 20 69 73 20 |n the bi|tmap is |
|00002610| 61 73 20 66 6f 6c 6c 6f | 77 73 3a 0d 20 20 54 6f |as follo|ws:. To|
|00002620| 70 20 3d 20 52 6f 77 20 | 34 20 28 79 3e 31 33 39 |p = Row |4 (y>139|
|00002630| 29 20 20 20 30 2d 46 72 | 6f 67 73 2d 2d 2d 2d 2d |) 0-Fr|ogs-----|
|00002640| 2d 2d 2d 2d 2d 2d 31 36 | 30 2d 53 68 61 64 6f 77 |------16|0-Shadow|
|00002650| 73 2d 2d 2d 2d 2d 2d 2d | 33 32 30 0d 20 20 53 65 |s-------|320. Se|
|00002660| 63 6f 6e 64 20 3d 20 20 | 33 20 28 79 3e 31 30 34 |cond = |3 (y>104|
|00002670| 29 20 20 20 30 2d 63 61 | 72 3e 3e 2d 2d 2d 38 30 |) 0-ca|r>>---80|
|00002680| 2d 63 61 72 3c 2d 31 36 | 30 2d 74 72 75 63 6b 3c |-car<-16|0-truck<|
|00002690| 3c 2d 2d 2d 2d 2d 33 30 | 30 0d 20 20 54 68 69 72 |<-----30|0. Thir|
|000026a0| 64 20 20 3d 20 20 32 20 | 28 79 3e 36 39 29 20 20 |d = 2 |(y>69) |
|000026b0| 20 20 30 2d 74 75 72 74 | 6c 65 73 2d 2d 2d 2d 2d | 0-turt|les-----|
|000026c0| 2d 2d 2d 2d 31 36 30 2d | 73 69 6e 6b 2e 2d 2d 2d |----160-|sink.---|
|000026d0| 2d 2d 2d 2d 2d 2d 33 32 | 30 0d 20 20 46 6f 75 72 |------32|0. Four|
|000026e0| 74 68 20 3d 20 20 31 20 | 28 79 3e 33 34 29 20 20 |th = 1 |(y>34) |
|000026f0| 20 20 30 2d 4d 65 64 69 | 75 6d 20 6c 6f 67 2d 2d | 0-Medi|um log--|
|00002700| 2d 2d 2d 2d 2d 2d 31 38 | 30 2d 53 6d 61 6c 6c 20 |------18|0-Small |
|00002710| 6c 6f 67 2d 2d 2d 33 32 | 30 0d 20 20 42 6f 74 74 |log---32|0. Bott|
|00002720| 6f 6d 20 3d 20 20 30 20 | 28 79 3e 30 29 20 20 20 |om = 0 |(y>0) |
|00002730| 20 20 30 2d 4c 6f 6e 67 | 20 6c 6f 67 2d 2d 2d 2d | 0-Long| log----|
|00002740| 2d 2d 2d 2d 2d 2d 2d 2d | 2d 2d 32 32 30 2d 66 72 |--------|--220-fr|
|00002750| 6f 67 2f 73 61 76 65 2d | 2d 33 30 30 20 20 20 2a |og/save-|-300 *|
|00002760| 29 0d 0d 20 20 28 2a 4c | 6f 6e 67 65 73 74 20 6c |).. (*L|ongest l|
|00002770| 6f 67 20 66 69 72 73 74 | 2a 29 0d 20 20 0d 20 20 |og first|*). . |
|00002780| 49 6e 69 74 2e 6c 65 66 | 74 20 3a 3d 20 30 3b 20 |Init.lef|t := 0; |
|00002790| 20 49 6e 69 74 2e 62 6f | 74 74 6f 6d 20 3a 3d 20 | Init.bo|ttom := |
|000027a0| 30 3b 0d 20 20 49 6e 69 | 74 2e 72 69 67 68 74 20 |0;. Ini|t.right |
|000027b0| 3a 3d 20 49 6e 69 74 2e | 6c 65 66 74 3b 20 49 6e |:= Init.|left; In|
|000027c0| 69 74 2e 74 6f 70 20 3a | 3d 20 49 6e 69 74 2e 62 |it.top :|= Init.b|
|000027d0| 6f 74 74 6f 6d 2d 43 68 | 61 72 48 65 69 67 68 74 |ottom-Ch|arHeight|
|000027e0| 3b 0d 20 20 44 69 73 70 | 6c 61 79 43 68 61 72 20 |;. Disp|layChar |
|000027f0| 28 53 74 6f 72 61 67 65 | 42 4d 5e 2c 20 49 6e 69 |(Storage|BM^, Ini|
|00002800| 74 2c 20 47 61 6d 65 46 | 6f 6e 74 2c 20 57 61 74 |t, GameF|ont, Wat|
|00002810| 65 72 43 68 61 72 29 3b | 0d 20 20 44 69 73 70 6c |erChar);|. Displ|
|00002820| 61 79 43 68 61 72 20 28 | 53 74 6f 72 61 67 65 42 |ayChar (|StorageB|
|00002830| 4d 5e 2c 20 49 6e 69 74 | 2c 20 47 61 6d 65 46 6f |M^, Init|, GameFo|
|00002840| 6e 74 2c 20 46 69 72 73 | 74 4c 6f 67 29 3b 0d 20 |nt, Firs|tLog);. |
|00002850| 20 46 4f 52 20 69 20 3a | 3d 20 32 20 54 4f 20 38 | FOR i :|= 2 TO 8|
|00002860| 20 44 4f 0d 20 20 20 20 | 44 69 73 70 6c 61 79 43 | DO. |DisplayC|
|00002870| 68 61 72 20 28 53 74 6f | 72 61 67 65 42 4d 5e 2c |har (Sto|rageBM^,|
|00002880| 20 49 6e 69 74 2c 20 47 | 61 6d 65 46 6f 6e 74 2c | Init, G|ameFont,|
|00002890| 20 4d 69 64 4c 6f 67 29 | 3b 20 20 20 20 45 4e 44 | MidLog)|; END|
|000028a0| 3b 0d 20 20 44 69 73 70 | 6c 61 79 43 68 61 72 20 |;. Disp|layChar |
|000028b0| 28 53 74 6f 72 61 67 65 | 42 4d 5e 2c 20 49 6e 69 |(Storage|BM^, Ini|
|000028c0| 74 2c 20 47 61 6d 65 46 | 6f 6e 74 2c 20 4c 61 73 |t, GameF|ont, Las|
|000028d0| 74 4c 6f 67 29 3b 0d 20 | 20 44 69 73 70 6c 61 79 |tLog);. | Display|
|000028e0| 43 68 61 72 20 28 53 74 | 6f 72 61 67 65 42 4d 5e |Char (St|orageBM^|
|000028f0| 2c 20 49 6e 69 74 2c 20 | 47 61 6d 65 46 6f 6e 74 |, Init, |GameFont|
|00002900| 2c 20 57 61 74 65 72 43 | 68 61 72 29 3b 0d 20 20 |, WaterC|har);. |
|00002910| 47 65 74 54 65 6d 70 6c | 61 74 65 20 28 49 6e 69 |GetTempl|ate (Ini|
|00002920| 74 2c 20 4c 6f 6e 67 4c | 6f 67 29 3b 0d 20 20 0d |t, LongL|og);. .|
|00002930| 20 20 28 2a 20 6e 6f 77 | 20 74 68 65 20 66 72 6f | (* now| the fro|
|00002940| 67 20 61 6e 64 20 62 65 | 68 69 6e 64 66 72 6f 67 |g and be|hindfrog|
|00002950| 20 61 72 65 61 20 2a 29 | 0d 20 20 49 6e 69 74 2e | area *)|. Init.|
|00002960| 6c 65 66 74 3a 3d 49 6e | 69 74 2e 72 69 67 68 74 |left:=In|it.right|
|00002970| 3b 0d 20 20 44 69 73 70 | 6c 61 79 43 68 61 72 28 |;. Disp|layChar(|
|00002980| 53 74 6f 72 61 67 65 42 | 4d 5e 2c 20 49 6e 69 74 |StorageB|M^, Init|
|00002990| 2c 20 47 61 6d 65 46 6f | 6e 74 2c 20 57 61 74 65 |, GameFo|nt, Wate|
|000029a0| 72 43 68 61 72 29 3b 0d | 20 20 44 69 73 70 6c 61 |rChar);.| Displa|
|000029b0| 79 43 68 61 72 28 53 74 | 6f 72 61 67 65 42 4d 5e |yChar(St|orageBM^|
|000029c0| 2c 20 49 6e 69 74 2c 20 | 47 61 6d 65 46 6f 6e 74 |, Init, |GameFont|
|000029d0| 2c 20 57 61 74 65 72 43 | 68 61 72 29 3b 0d 20 20 |, WaterC|har);. |
|000029e0| 47 65 74 54 65 6d 70 6c | 61 74 65 20 28 49 6e 69 |GetTempl|ate (Ini|
|000029f0| 74 2c 20 46 72 6f 67 41 | 72 65 61 29 3b 0d 20 20 |t, FrogA|rea);. |
|00002a00| 0d 20 20 0d 20 20 49 6e | 69 74 2e 6c 65 66 74 3a |. . In|it.left:|
|00002a10| 3d 49 6e 69 74 2e 72 69 | 67 68 74 3b 0d 20 20 44 |=Init.ri|ght;. D|
|00002a20| 69 73 70 6c 61 79 43 68 | 61 72 28 53 74 6f 72 61 |isplayCh|ar(Stora|
|00002a30| 67 65 42 4d 5e 2c 20 49 | 6e 69 74 2c 20 47 61 6d |geBM^, I|nit, Gam|
|00002a40| 65 46 6f 6e 74 2c 20 57 | 61 74 65 72 43 68 61 72 |eFont, W|aterChar|
|00002a50| 29 3b 0d 20 20 44 69 73 | 70 6c 61 79 43 68 61 72 |);. Dis|playChar|
|00002a60| 28 53 74 6f 72 61 67 65 | 42 4d 5e 2c 20 49 6e 69 |(Storage|BM^, Ini|
|00002a70| 74 2c 20 47 61 6d 65 46 | 6f 6e 74 2c 20 57 61 74 |t, GameF|ont, Wat|
|00002a80| 65 72 43 68 61 72 29 3b | 0d 20 20 47 65 74 54 65 |erChar);|. GetTe|
|00002a90| 6d 70 6c 61 74 65 20 28 | 49 6e 69 74 2c 20 42 65 |mplate (|Init, Be|
|00002aa0| 68 69 6e 64 41 72 65 61 | 29 3b 0d 0d 20 20 28 2a |hindArea|);.. (*|
|00002ab0| 4e 6f 77 20 74 68 65 20 | 6c 6f 67 20 6f 66 20 6d |Now the |log of m|
|00002ac0| 65 64 69 75 6d 20 6c 65 | 6e 67 74 68 2a 29 0d 20 |edium le|ngth*). |
|00002ad0| 20 49 6e 69 74 2e 6c 65 | 66 74 20 3a 3d 20 30 3b | Init.le|ft := 0;|
|00002ae0| 20 20 49 6e 69 74 2e 62 | 6f 74 74 6f 6d 20 3a 3d | Init.b|ottom :=|
|00002af0| 20 2d 43 68 61 72 48 65 | 69 67 68 74 3b 0d 20 20 | -CharHe|ight;. |
|00002b00| 49 6e 69 74 2e 72 69 67 | 68 74 20 3a 3d 20 49 6e |Init.rig|ht := In|
|00002b10| 69 74 2e 6c 65 66 74 3b | 20 49 6e 69 74 2e 74 6f |it.left;| Init.to|
|00002b20| 70 20 3a 3d 20 49 6e 69 | 74 2e 62 6f 74 74 6f 6d |p := Ini|t.bottom|
|00002b30| 2d 43 68 61 72 48 65 69 | 67 68 74 3b 0d 20 20 44 |-CharHei|ght;. D|
|00002b40| 69 73 70 6c 61 79 43 68 | 61 72 20 28 53 74 6f 72 |isplayCh|ar (Stor|
|00002b50| 61 67 65 42 4d 5e 2c 20 | 49 6e 69 74 2c 20 47 61 |ageBM^, |Init, Ga|
|00002b60| 6d 65 46 6f 6e 74 2c 20 | 57 61 74 65 72 43 68 61 |meFont, |WaterCha|
|00002b70| 72 29 3b 0d 20 20 44 69 | 73 70 6c 61 79 43 68 61 |r);. Di|splayCha|
|00002b80| 72 20 28 53 74 6f 72 61 | 67 65 42 4d 5e 2c 20 49 |r (Stora|geBM^, I|
|00002b90| 6e 69 74 2c 20 47 61 6d | 65 46 6f 6e 74 2c 20 46 |nit, Gam|eFont, F|
|00002ba0| 69 72 73 74 4c 6f 67 29 | 3b 0d 20 20 46 4f 52 20 |irstLog)|;. FOR |
|00002bb0| 69 20 3a 3d 20 32 20 54 | 4f 20 36 20 44 4f 0d 20 |i := 2 T|O 6 DO. |
|00002bc0| 20 20 20 44 69 73 70 6c | 61 79 43 68 61 72 20 28 | Displ|ayChar (|
|00002bd0| 53 74 6f 72 61 67 65 42 | 4d 5e 2c 20 49 6e 69 74 |StorageB|M^, Init|
|00002be0| 2c 20 47 61 6d 65 46 6f | 6e 74 2c 20 4d 69 64 4c |, GameFo|nt, MidL|
|00002bf0| 6f 67 29 3b 20 20 20 20 | 45 4e 44 3b 0d 20 20 44 |og); |END;. D|
|00002c00| 69 73 70 6c 61 79 43 68 | 61 72 20 28 53 74 6f 72 |isplayCh|ar (Stor|
|00002c10| 61 67 65 42 4d 5e 2c 20 | 49 6e 69 74 2c 20 47 61 |ageBM^, |Init, Ga|
|00002c20| 6d 65 46 6f 6e 74 2c 20 | 4c 61 73 74 4c 6f 67 29 |meFont, |LastLog)|
|00002c30| 3b 0d 20 20 44 69 73 70 | 6c 61 79 43 68 61 72 20 |;. Disp|layChar |
|00002c40| 28 53 74 6f 72 61 67 65 | 42 4d 5e 2c 20 49 6e 69 |(Storage|BM^, Ini|
|00002c50| 74 2c 20 47 61 6d 65 46 | 6f 6e 74 2c 20 57 61 74 |t, GameF|ont, Wat|
|00002c60| 65 72 43 68 61 72 29 3b | 0d 20 20 47 65 74 54 65 |erChar);|. GetTe|
|00002c70| 6d 70 6c 61 74 65 20 28 | 49 6e 69 74 2c 20 4d 65 |mplate (|Init, Me|
|00002c80| 64 69 75 6d 4c 6f 67 29 | 3b 0d 0d 20 20 28 2a 48 |diumLog)|;.. (*H|
|00002c90| 65 72 65 20 74 68 65 20 | 73 68 6f 72 74 65 73 74 |ere the |shortest|
|00002ca0| 20 6c 6f 67 2a 29 0d 20 | 20 49 6e 69 74 2e 6c 65 | log*). | Init.le|
|00002cb0| 66 74 20 3a 3d 20 49 6e | 69 74 2e 72 69 67 68 74 |ft := In|it.right|
|00002cc0| 3b 20 20 20 28 2a 20 6f | 6c 64 3a 20 39 2a 43 68 |; (* o|ld: 9*Ch|
|00002cd0| 61 72 57 69 64 74 68 2a | 29 0d 20 20 44 69 73 70 |arWidth*|). Disp|
|00002ce0| 6c 61 79 43 68 61 72 20 | 28 53 74 6f 72 61 67 65 |layChar |(Storage|
|00002cf0| 42 4d 5e 2c 20 49 6e 69 | 74 2c 20 47 61 6d 65 46 |BM^, Ini|t, GameF|
|00002d00| 6f 6e 74 2c 20 57 61 74 | 65 72 43 68 61 72 29 3b |ont, Wat|erChar);|
|00002d10| 0d 20 20 44 69 73 70 6c | 61 79 43 68 61 72 20 28 |. Displ|ayChar (|
|00002d20| 53 74 6f 72 61 67 65 42 | 4d 5e 2c 20 49 6e 69 74 |StorageB|M^, Init|
|00002d30| 2c 20 47 61 6d 65 46 6f | 6e 74 2c 20 46 69 72 73 |, GameFo|nt, Firs|
|00002d40| 74 4c 6f 67 29 3b 0d 20 | 20 46 4f 52 20 69 20 3a |tLog);. | FOR i :|
|00002d50| 3d 20 32 20 54 4f 20 34 | 20 44 4f 0d 20 20 20 20 |= 2 TO 4| DO. |
|00002d60| 44 69 73 70 6c 61 79 43 | 68 61 72 20 28 53 74 6f |DisplayC|har (Sto|
|00002d70| 72 61 67 65 42 4d 5e 2c | 20 49 6e 69 74 2c 20 47 |rageBM^,| Init, G|
|00002d80| 61 6d 65 46 6f 6e 74 2c | 20 4d 69 64 4c 6f 67 29 |ameFont,| MidLog)|
|00002d90| 3b 20 20 20 20 45 4e 44 | 3b 0d 20 20 44 69 73 70 |; END|;. Disp|
|00002da0| 6c 61 79 43 68 61 72 20 | 28 53 74 6f 72 61 67 65 |layChar |(Storage|
|00002db0| 42 4d 5e 2c 20 49 6e 69 | 74 2c 20 47 61 6d 65 46 |BM^, Ini|t, GameF|
|00002dc0| 6f 6e 74 2c 20 4c 61 73 | 74 4c 6f 67 29 3b 0d 20 |ont, Las|tLog);. |
|00002dd0| 20 44 69 73 70 6c 61 79 | 43 68 61 72 20 28 53 74 | Display|Char (St|
|00002de0| 6f 72 61 67 65 42 4d 5e | 2c 20 49 6e 69 74 2c 20 |orageBM^|, Init, |
|00002df0| 47 61 6d 65 46 6f 6e 74 | 2c 20 57 61 74 65 72 43 |GameFont|, WaterC|
|00002e00| 68 61 72 29 3b 0d 20 20 | 47 65 74 54 65 6d 70 6c |har);. |GetTempl|
|00002e10| 61 74 65 20 28 49 6e 69 | 74 2c 20 53 68 6f 72 74 |ate (Ini|t, Short|
|00002e20| 4c 6f 67 29 3b 0d 0d 20 | 20 28 2a 48 65 72 65 20 |Log);.. | (*Here |
|00002e30| 74 68 65 20 66 6c 6f 61 | 74 69 6e 67 20 28 3d 20 |the floa|ting (= |
|00002e40| 67 6f 6f 64 29 20 74 75 | 72 74 6c 65 73 2e 20 54 |good) tu|rtles. T|
|00002e50| 77 6f 20 6f 66 20 74 68 | 65 6d 20 2a 29 0d 20 20 |wo of th|em *). |
|00002e60| 49 6e 69 74 2e 6c 65 66 | 74 20 3a 3d 20 30 3b 20 |Init.lef|t := 0; |
|00002e70| 20 49 6e 69 74 2e 62 6f | 74 74 6f 6d 20 3a 3d 20 | Init.bo|ttom := |
|00002e80| 2d 28 32 20 2a 20 43 68 | 61 72 48 65 69 67 68 74 |-(2 * Ch|arHeight|
|00002e90| 29 3b 0d 20 20 49 6e 69 | 74 2e 72 69 67 68 74 20 |);. Ini|t.right |
|00002ea0| 3a 3d 20 49 6e 69 74 2e | 6c 65 66 74 3b 20 49 6e |:= Init.|left; In|
|00002eb0| 69 74 2e 74 6f 70 20 3a | 3d 20 49 6e 69 74 2e 62 |it.top :|= Init.b|
|00002ec0| 6f 74 74 6f 6d 2d 43 68 | 61 72 48 65 69 67 68 74 |ottom-Ch|arHeight|
|00002ed0| 3b 0d 20 20 44 69 73 70 | 6c 61 79 43 68 61 72 20 |;. Disp|layChar |
|00002ee0| 28 53 74 6f 72 61 67 65 | 42 4d 5e 2c 20 49 6e 69 |(Storage|BM^, Ini|
|00002ef0| 74 2c 20 47 61 6d 65 46 | 6f 6e 74 2c 20 57 61 74 |t, GameF|ont, Wat|
|00002f00| 65 72 43 68 61 72 29 3b | 0d 20 20 44 69 73 70 6c |erChar);|. Displ|
|00002f10| 61 79 43 68 61 72 20 28 | 53 74 6f 72 61 67 65 42 |ayChar (|StorageB|
|00002f20| 4d 5e 2c 20 49 6e 69 74 | 2c 20 47 61 6d 65 46 6f |M^, Init|, GameFo|
|00002f30| 6e 74 2c 20 46 69 72 73 | 74 54 75 72 74 6c 65 29 |nt, Firs|tTurtle)|
|00002f40| 3b 0d 20 20 44 69 73 70 | 6c 61 79 43 68 61 72 20 |;. Disp|layChar |
|00002f50| 28 53 74 6f 72 61 67 65 | 42 4d 5e 2c 20 49 6e 69 |(Storage|BM^, Ini|
|00002f60| 74 2c 20 47 61 6d 65 46 | 6f 6e 74 2c 20 4d 69 64 |t, GameF|ont, Mid|
|00002f70| 54 75 72 74 6c 65 29 3b | 0d 20 20 44 69 73 70 6c |Turtle);|. Displ|
|00002f80| 61 79 43 68 61 72 20 28 | 53 74 6f 72 61 67 65 42 |ayChar (|StorageB|
|00002f90| 4d 5e 2c 20 49 6e 69 74 | 2c 20 47 61 6d 65 46 6f |M^, Init|, GameFo|
|00002fa0| 6e 74 2c 20 4c 61 73 74 | 54 75 72 74 6c 65 29 3b |nt, Last|Turtle);|
|00002fb0| 0d 20 20 44 69 73 70 6c | 61 79 43 68 61 72 20 28 |. Displ|ayChar (|
|00002fc0| 53 74 6f 72 61 67 65 42 | 4d 5e 2c 20 49 6e 69 74 |StorageB|M^, Init|
|00002fd0| 2c 20 47 61 6d 65 46 6f | 6e 74 2c 20 46 69 72 73 |, GameFo|nt, Firs|
|00002fe0| 74 54 75 72 74 6c 65 29 | 3b 0d 20 20 44 69 73 70 |tTurtle)|;. Disp|
|00002ff0| 6c 61 79 43 68 61 72 20 | 28 53 74 6f 72 61 67 65 |layChar |(Storage|
|00003000| 42 4d 5e 2c 20 49 6e 69 | 74 2c 20 47 61 6d 65 46 |BM^, Ini|t, GameF|
|00003010| 6f 6e 74 2c 20 4d 69 64 | 54 75 72 74 6c 65 29 3b |ont, Mid|Turtle);|
|00003020| 0d 20 20 44 69 73 70 6c | 61 79 43 68 61 72 20 28 |. Displ|ayChar (|
|00003030| 53 74 6f 72 61 67 65 42 | 4d 5e 2c 20 49 6e 69 74 |StorageB|M^, Init|
|00003040| 2c 20 47 61 6d 65 46 6f | 6e 74 2c 20 4c 61 73 74 |, GameFo|nt, Last|
|00003050| 54 75 72 74 6c 65 29 3b | 0d 20 20 44 69 73 70 6c |Turtle);|. Displ|
|00003060| 61 79 43 68 61 72 20 28 | 53 74 6f 72 61 67 65 42 |ayChar (|StorageB|
|00003070| 4d 5e 2c 20 49 6e 69 74 | 2c 20 47 61 6d 65 46 6f |M^, Init|, GameFo|
|00003080| 6e 74 2c 20 57 61 74 65 | 72 43 68 61 72 29 3b 0d |nt, Wate|rChar);.|
|00003090| 20 20 47 65 74 54 65 6d | 70 6c 61 74 65 20 28 49 | GetTem|plate (I|
|000030a0| 6e 69 74 2c 20 54 75 72 | 74 6c 65 73 29 3b 0d 0d |nit, Tur|tles);..|
|000030b0| 20 20 28 2a 4e 6f 77 20 | 74 68 65 20 74 77 6f 20 | (*Now |the two |
|000030c0| 74 79 70 65 73 20 6f 66 | 20 63 61 72 73 2c 20 74 |types of| cars, t|
|000030d0| 68 65 6e 20 74 68 65 20 | 74 72 75 63 6b 73 2a 29 |hen the |trucks*)|
|000030e0| 0d 20 20 49 6e 69 74 2e | 6c 65 66 74 20 3a 3d 20 |. Init.|left := |
|000030f0| 30 3b 20 20 49 6e 69 74 | 2e 62 6f 74 74 6f 6d 20 |0; Init|.bottom |
|00003100| 3a 3d 20 2d 28 33 20 2a | 20 43 68 61 72 48 65 69 |:= -(3 *| CharHei|
|00003110| 67 68 74 29 3b 0d 20 20 | 49 6e 69 74 2e 72 69 67 |ght);. |Init.rig|
|00003120| 68 74 20 3a 3d 20 49 6e | 69 74 2e 6c 65 66 74 3b |ht := In|it.left;|
|00003130| 20 49 6e 69 74 2e 74 6f | 70 20 3a 3d 20 49 6e 69 | Init.to|p := Ini|
|00003140| 74 2e 62 6f 74 74 6f 6d | 2d 43 68 61 72 48 65 69 |t.bottom|-CharHei|
|00003150| 67 68 74 3b 0d 20 20 44 | 69 73 70 6c 61 79 43 68 |ght;. D|isplayCh|
|00003160| 61 72 20 28 53 74 6f 72 | 61 67 65 42 4d 5e 2c 20 |ar (Stor|ageBM^, |
|00003170| 49 6e 69 74 2c 20 47 61 | 6d 65 46 6f 6e 74 2c 20 |Init, Ga|meFont, |
|00003180| 57 61 74 65 72 43 68 61 | 72 29 3b 0d 20 20 44 69 |WaterCha|r);. Di|
|00003190| 73 70 6c 61 79 43 68 61 | 72 20 28 53 74 6f 72 61 |splayCha|r (Stora|
|000031a0| 67 65 42 4d 5e 2c 20 49 | 6e 69 74 2c 20 47 61 6d |geBM^, I|nit, Gam|
|000031b0| 65 46 6f 6e 74 2c 20 46 | 69 72 73 74 43 61 72 52 |eFont, F|irstCarR|
|000031c0| 29 3b 0d 20 20 44 69 73 | 70 6c 61 79 43 68 61 72 |);. Dis|playChar|
|000031d0| 20 28 53 74 6f 72 61 67 | 65 42 4d 5e 2c 20 49 6e | (Storag|eBM^, In|
|000031e0| 69 74 2c 20 47 61 6d 65 | 46 6f 6e 74 2c 20 4c 61 |it, Game|Font, La|
|000031f0| 73 74 43 61 72 52 29 3b | 0d 20 20 44 69 73 70 6c |stCarR);|. Displ|
|00003200| 61 79 43 68 61 72 20 28 | 53 74 6f 72 61 67 65 42 |ayChar (|StorageB|
|00003210| 4d 5e 2c 20 49 6e 69 74 | 2c 20 47 61 6d 65 46 6f |M^, Init|, GameFo|
|00003220| 6e 74 2c 20 57 61 74 65 | 72 43 68 61 72 29 3b 0d |nt, Wate|rChar);.|
|00003230| 20 20 47 65 74 54 65 6d | 70 6c 61 74 65 20 28 49 | GetTem|plate (I|
|00003240| 6e 69 74 2c 20 43 61 72 | 52 29 3b 0d 20 20 49 6e |nit, Car|R);. In|
|00003250| 69 74 2e 6c 65 66 74 20 | 3a 3d 20 49 6e 69 74 2e |it.left |:= Init.|
|00003260| 72 69 67 68 74 3b 0d 20 | 20 44 69 73 70 6c 61 79 |right;. | Display|
|00003270| 43 68 61 72 20 28 53 74 | 6f 72 61 67 65 42 4d 5e |Char (St|orageBM^|
|00003280| 2c 20 49 6e 69 74 2c 20 | 47 61 6d 65 46 6f 6e 74 |, Init, |GameFont|
|00003290| 2c 20 57 61 74 65 72 43 | 68 61 72 29 3b 0d 20 20 |, WaterC|har);. |
|000032a0| 44 69 73 70 6c 61 79 43 | 68 61 72 20 28 53 74 6f |DisplayC|har (Sto|
|000032b0| 72 61 67 65 42 4d 5e 2c | 20 49 6e 69 74 2c 20 47 |rageBM^,| Init, G|
|000032c0| 61 6d 65 46 6f 6e 74 2c | 20 46 69 72 73 74 43 61 |ameFont,| FirstCa|
|000032d0| 72 4c 29 3b 0d 20 20 44 | 69 73 70 6c 61 79 43 68 |rL);. D|isplayCh|
|000032e0| 61 72 20 28 53 74 6f 72 | 61 67 65 42 4d 5e 2c 20 |ar (Stor|ageBM^, |
|000032f0| 49 6e 69 74 2c 20 47 61 | 6d 65 46 6f 6e 74 2c 20 |Init, Ga|meFont, |
|00003300| 4c 61 73 74 43 61 72 4c | 29 3b 0d 20 20 44 69 73 |LastCarL|);. Dis|
|00003310| 70 6c 61 79 43 68 61 72 | 20 28 53 74 6f 72 61 67 |playChar| (Storag|
|00003320| 65 42 4d 5e 2c 20 49 6e | 69 74 2c 20 47 61 6d 65 |eBM^, In|it, Game|
|00003330| 46 6f 6e 74 2c 20 57 61 | 74 65 72 43 68 61 72 29 |Font, Wa|terChar)|
|00003340| 3b 0d 20 20 47 65 74 54 | 65 6d 70 6c 61 74 65 28 |;. GetT|emplate(|
|00003350| 49 6e 69 74 2c 20 43 61 | 72 4c 29 3b 0d 20 20 0d |Init, Ca|rL);. .|
|00003360| 20 20 49 6e 69 74 2e 6c | 65 66 74 20 3a 3d 20 49 | Init.l|eft := I|
|00003370| 6e 69 74 2e 72 69 67 68 | 74 3b 0d 20 20 44 69 73 |nit.righ|t;. Dis|
|00003380| 70 6c 61 79 43 68 61 72 | 20 28 53 74 6f 72 61 67 |playChar| (Storag|
|00003390| 65 42 4d 5e 2c 20 49 6e | 69 74 2c 20 47 61 6d 65 |eBM^, In|it, Game|
|000033a0| 46 6f 6e 74 2c 20 57 61 | 74 65 72 43 68 61 72 29 |Font, Wa|terChar)|
|000033b0| 3b 0d 20 20 44 69 73 70 | 6c 61 79 43 68 61 72 20 |;. Disp|layChar |
|000033c0| 28 53 74 6f 72 61 67 65 | 42 4d 5e 2c 20 49 6e 69 |(Storage|BM^, Ini|
|000033d0| 74 2c 20 47 61 6d 65 46 | 6f 6e 74 2c 20 46 69 72 |t, GameF|ont, Fir|
|000033e0| 73 74 54 72 75 63 6b 29 | 3b 0d 20 20 44 69 73 70 |stTruck)|;. Disp|
|000033f0| 6c 61 79 43 68 61 72 20 | 28 53 74 6f 72 61 67 65 |layChar |(Storage|
|00003400| 42 4d 5e 2c 20 49 6e 69 | 74 2c 20 47 61 6d 65 46 |BM^, Ini|t, GameF|
|00003410| 6f 6e 74 2c 20 4d 69 64 | 54 72 75 63 6b 29 3b 0d |ont, Mid|Truck);.|
|00003420| 20 20 44 69 73 70 6c 61 | 79 43 68 61 72 20 28 53 | Displa|yChar (S|
|00003430| 74 6f 72 61 67 65 42 4d | 5e 2c 20 49 6e 69 74 2c |torageBM|^, Init,|
|00003440| 20 47 61 6d 65 46 6f 6e | 74 2c 20 4d 69 64 54 72 | GameFon|t, MidTr|
|00003450| 75 63 6b 29 3b 0d 20 20 | 44 69 73 70 6c 61 79 43 |uck);. |DisplayC|
|00003460| 68 61 72 20 28 53 74 6f | 72 61 67 65 42 4d 5e 2c |har (Sto|rageBM^,|
|00003470| 20 49 6e 69 74 2c 20 47 | 61 6d 65 46 6f 6e 74 2c | Init, G|ameFont,|
|00003480| 20 4d 69 64 54 72 75 63 | 6b 29 3b 0d 20 20 44 69 | MidTruc|k);. Di|
|00003490| 73 70 6c 61 79 43 68 61 | 72 20 28 53 74 6f 72 61 |splayCha|r (Stora|
|000034a0| 67 65 42 4d 5e 2c 20 49 | 6e 69 74 2c 20 47 61 6d |geBM^, I|nit, Gam|
|000034b0| 65 46 6f 6e 74 2c 20 4c | 61 73 74 54 72 75 63 6b |eFont, L|astTruck|
|000034c0| 29 3b 0d 20 20 44 69 73 | 70 6c 61 79 43 68 61 72 |);. Dis|playChar|
|000034d0| 20 28 53 74 6f 72 61 67 | 65 42 4d 5e 2c 20 49 6e | (Storag|eBM^, In|
|000034e0| 69 74 2c 20 47 61 6d 65 | 46 6f 6e 74 2c 20 57 61 |it, Game|Font, Wa|
|000034f0| 74 65 72 43 68 61 72 29 | 3b 0d 20 20 47 65 74 54 |terChar)|;. GetT|
|00003500| 65 6d 70 6c 61 74 65 20 | 28 49 6e 69 74 2c 20 54 |emplate |(Init, T|
|00003510| 72 75 63 6b 4c 29 3b 0d | 0d 20 20 28 2a 4e 6f 77 |ruckL);.|. (*Now|
|00003520| 20 61 6c 6c 20 66 6f 75 | 72 20 66 72 6f 67 73 20 | all fou|r frogs |
|00003530| 61 6e 64 20 74 68 65 69 | 72 20 73 68 61 64 6f 77 |and thei|r shadow|
|00003540| 73 2a 29 0d 20 20 49 6e | 69 74 2e 6c 65 66 74 20 |s*). In|it.left |
|00003550| 3a 3d 20 30 3b 20 20 49 | 6e 69 74 2e 62 6f 74 74 |:= 0; I|nit.bott|
|00003560| 6f 6d 20 3a 3d 20 2d 28 | 34 20 2a 20 43 68 61 72 |om := -(|4 * Char|
|00003570| 48 65 69 67 68 74 29 3b | 0d 20 20 49 6e 69 74 2e |Height);|. Init.|
|00003580| 72 69 67 68 74 20 3a 3d | 20 49 6e 69 74 2e 6c 65 |right :=| Init.le|
|00003590| 66 74 3b 20 49 6e 69 74 | 2e 74 6f 70 20 3a 3d 20 |ft; Init|.top := |
|000035a0| 49 6e 69 74 2e 62 6f 74 | 74 6f 6d 2d 43 68 61 72 |Init.bot|tom-Char|
|000035b0| 48 65 69 67 68 74 3b 0d | 20 20 44 69 73 70 6c 61 |Height;.| Displa|
|000035c0| 79 43 68 61 72 20 28 53 | 74 6f 72 61 67 65 42 4d |yChar (S|torageBM|
|000035d0| 5e 2c 20 49 6e 69 74 2c | 20 47 61 6d 65 46 6f 6e |^, Init,| GameFon|
|000035e0| 74 2c 20 46 69 72 73 74 | 55 70 29 3b 0d 20 20 44 |t, First|Up);. D|
|000035f0| 69 73 70 6c 61 79 43 68 | 61 72 20 28 53 74 6f 72 |isplayCh|ar (Stor|
|00003600| 61 67 65 42 4d 5e 2c 20 | 49 6e 69 74 2c 20 47 61 |ageBM^, |Init, Ga|
|00003610| 6d 65 46 6f 6e 74 2c 20 | 4c 61 73 74 55 70 29 3b |meFont, |LastUp);|
|00003620| 0d 20 20 47 65 74 54 65 | 6d 70 6c 61 74 65 20 28 |. GetTe|mplate (|
|00003630| 49 6e 69 74 2c 20 46 72 | 6f 67 55 29 3b 0d 20 20 |Init, Fr|ogU);. |
|00003640| 49 6e 69 74 2e 6c 65 66 | 74 20 3a 3d 20 49 6e 69 |Init.lef|t := Ini|
|00003650| 74 2e 72 69 67 68 74 3b | 0d 20 20 44 69 73 70 6c |t.right;|. Displ|
|00003660| 61 79 43 68 61 72 20 28 | 53 74 6f 72 61 67 65 42 |ayChar (|StorageB|
|00003670| 4d 5e 2c 20 49 6e 69 74 | 2c 20 47 61 6d 65 46 6f |M^, Init|, GameFo|
|00003680| 6e 74 2c 20 46 69 72 73 | 74 44 6e 29 3b 0d 20 20 |nt, Firs|tDn);. |
|00003690| 44 69 73 70 6c 61 79 43 | 68 61 72 20 28 53 74 6f |DisplayC|har (Sto|
|000036a0| 72 61 67 65 42 4d 5e 2c | 20 49 6e 69 74 2c 20 47 |rageBM^,| Init, G|
|000036b0| 61 6d 65 46 6f 6e 74 2c | 20 4c 61 73 74 44 6e 29 |ameFont,| LastDn)|
|000036c0| 3b 0d 20 20 47 65 74 54 | 65 6d 70 6c 61 74 65 20 |;. GetT|emplate |
|000036d0| 28 49 6e 69 74 2c 20 46 | 72 6f 67 44 29 3b 0d 20 |(Init, F|rogD);. |
|000036e0| 20 49 6e 69 74 2e 6c 65 | 66 74 20 3a 3d 20 49 6e | Init.le|ft := In|
|000036f0| 69 74 2e 72 69 67 68 74 | 3b 0d 20 20 44 69 73 70 |it.right|;. Disp|
|00003700| 6c 61 79 43 68 61 72 20 | 28 53 74 6f 72 61 67 65 |layChar |(Storage|
|00003710| 42 4d 5e 2c 20 49 6e 69 | 74 2c 20 47 61 6d 65 46 |BM^, Ini|t, GameF|
|00003720| 6f 6e 74 2c 20 46 69 72 | 73 74 4c 66 29 3b 0d 20 |ont, Fir|stLf);. |
|00003730| 20 44 69 73 70 6c 61 79 | 43 68 61 72 20 28 53 74 | Display|Char (St|
|00003740| 6f 72 61 67 65 42 4d 5e | 2c 20 49 6e 69 74 2c 20 |orageBM^|, Init, |
|00003750| 47 61 6d 65 46 6f 6e 74 | 2c 20 4c 61 73 74 4c 66 |GameFont|, LastLf|
|00003760| 29 3b 0d 20 20 47 65 74 | 54 65 6d 70 6c 61 74 65 |);. Get|Template|
|00003770| 20 28 49 6e 69 74 2c 20 | 46 72 6f 67 4c 29 3b 0d | (Init, |FrogL);.|
|00003780| 20 20 49 6e 69 74 2e 6c | 65 66 74 20 3a 3d 20 49 | Init.l|eft := I|
|00003790| 6e 69 74 2e 72 69 67 68 | 74 3b 0d 20 20 44 69 73 |nit.righ|t;. Dis|
|000037a0| 70 6c 61 79 43 68 61 72 | 20 28 53 74 6f 72 61 67 |playChar| (Storag|
|000037b0| 65 42 4d 5e 2c 20 49 6e | 69 74 2c 20 47 61 6d 65 |eBM^, In|it, Game|
|000037c0| 46 6f 6e 74 2c 20 46 69 | 72 73 74 52 74 29 3b 0d |Font, Fi|rstRt);.|
|000037d0| 20 20 44 69 73 70 6c 61 | 79 43 68 61 72 20 28 53 | Displa|yChar (S|
|000037e0| 74 6f 72 61 67 65 42 4d | 5e 2c 20 49 6e 69 74 2c |torageBM|^, Init,|
|000037f0| 20 47 61 6d 65 46 6f 6e | 74 2c 20 4c 61 73 74 52 | GameFon|t, LastR|
|00003800| 74 29 3b 0d 20 20 47 65 | 74 54 65 6d 70 6c 61 74 |t);. Ge|tTemplat|
|00003810| 65 20 28 49 6e 69 74 2c | 20 46 72 6f 67 52 29 3b |e (Init,| FrogR);|
|00003820| 0d 20 20 49 6e 69 74 2e | 6c 65 66 74 20 3a 3d 20 |. Init.|left := |
|00003830| 49 6e 69 74 2e 72 69 67 | 68 74 3b 0d 20 20 44 69 |Init.rig|ht;. Di|
|00003840| 73 70 6c 61 79 43 68 61 | 72 20 28 53 74 6f 72 61 |splayCha|r (Stora|
|00003850| 67 65 42 4d 5e 2c 20 49 | 6e 69 74 2c 20 47 61 6d |geBM^, I|nit, Gam|
|00003860| 65 46 6f 6e 74 2c 20 53 | 46 69 72 73 74 55 70 29 |eFont, S|FirstUp)|
|00003870| 3b 0d 20 20 44 69 73 70 | 6c 61 79 43 68 61 72 20 |;. Disp|layChar |
|00003880| 28 53 74 6f 72 61 67 65 | 42 4d 5e 2c 20 49 6e 69 |(Storage|BM^, Ini|
|00003890| 74 2c 20 47 61 6d 65 46 | 6f 6e 74 2c 20 53 4c 61 |t, GameF|ont, SLa|
|000038a0| 73 74 55 70 29 3b 0d 20 | 20 47 65 74 54 65 6d 70 |stUp);. | GetTemp|
|000038b0| 6c 61 74 65 20 28 49 6e | 69 74 2c 20 53 68 61 64 |late (In|it, Shad|
|000038c0| 6f 77 55 29 3b 0d 20 20 | 49 6e 69 74 2e 6c 65 66 |owU);. |Init.lef|
|000038d0| 74 20 3a 3d 20 49 6e 69 | 74 2e 72 69 67 68 74 3b |t := Ini|t.right;|
|000038e0| 0d 20 20 44 69 73 70 6c | 61 79 43 68 61 72 20 28 |. Displ|ayChar (|
|000038f0| 53 74 6f 72 61 67 65 42 | 4d 5e 2c 20 49 6e 69 74 |StorageB|M^, Init|
|00003900| 2c 20 47 61 6d 65 46 6f | 6e 74 2c 20 53 46 69 72 |, GameFo|nt, SFir|
|00003910| 73 74 44 6e 29 3b 0d 20 | 20 44 69 73 70 6c 61 79 |stDn);. | Display|
|00003920| 43 68 61 72 20 28 53 74 | 6f 72 61 67 65 42 4d 5e |Char (St|orageBM^|
|00003930| 2c 20 49 6e 69 74 2c 20 | 47 61 6d 65 46 6f 6e 74 |, Init, |GameFont|
|00003940| 2c 20 53 4c 61 73 74 44 | 6e 29 3b 0d 20 20 47 65 |, SLastD|n);. Ge|
|00003950| 74 54 65 6d 70 6c 61 74 | 65 20 28 49 6e 69 74 2c |tTemplat|e (Init,|
|00003960| 20 53 68 61 64 6f 77 44 | 29 3b 0d 20 20 49 6e 69 | ShadowD|);. Ini|
|00003970| 74 2e 6c 65 66 74 20 3a | 3d 20 49 6e 69 74 2e 72 |t.left :|= Init.r|
|00003980| 69 67 68 74 3b 0d 20 20 | 44 69 73 70 6c 61 79 43 |ight;. |DisplayC|
|00003990| 68 61 72 20 28 53 74 6f | 72 61 67 65 42 4d 5e 2c |har (Sto|rageBM^,|
|000039a0| 20 49 6e 69 74 2c 20 47 | 61 6d 65 46 6f 6e 74 2c | Init, G|ameFont,|
|000039b0| 20 53 46 69 72 73 74 4c | 66 29 3b 0d 20 20 44 69 | SFirstL|f);. Di|
|000039c0| 73 70 6c 61 79 43 68 61 | 72 20 28 53 74 6f 72 61 |splayCha|r (Stora|
|000039d0| 67 65 42 4d 5e 2c 20 49 | 6e 69 74 2c 20 47 61 6d |geBM^, I|nit, Gam|
|000039e0| 65 46 6f 6e 74 2c 20 53 | 4c 61 73 74 4c 66 29 3b |eFont, S|LastLf);|
|000039f0| 0d 20 20 47 65 74 54 65 | 6d 70 6c 61 74 65 20 28 |. GetTe|mplate (|
|00003a00| 49 6e 69 74 2c 20 53 68 | 61 64 6f 77 4c 29 3b 0d |Init, Sh|adowL);.|
|00003a10| 20 20 49 6e 69 74 2e 6c | 65 66 74 20 3a 3d 20 49 | Init.l|eft := I|
|00003a20| 6e 69 74 2e 72 69 67 68 | 74 3b 0d 20 20 44 69 73 |nit.righ|t;. Dis|
|00003a30| 70 6c 61 79 43 68 61 72 | 20 28 53 74 6f 72 61 67 |playChar| (Storag|
|00003a40| 65 42 4d 5e 2c 20 49 6e | 69 74 2c 20 47 61 6d 65 |eBM^, In|it, Game|
|00003a50| 46 6f 6e 74 2c 20 53 46 | 69 72 73 74 52 74 29 3b |Font, SF|irstRt);|
|00003a60| 0d 20 20 44 69 73 70 6c | 61 79 43 68 61 72 20 28 |. Displ|ayChar (|
|00003a70| 53 74 6f 72 61 67 65 42 | 4d 5e 2c 20 49 6e 69 74 |StorageB|M^, Init|
|00003a80| 2c 20 47 61 6d 65 46 6f | 6e 74 2c 20 53 4c 61 73 |, GameFo|nt, SLas|
|00003a90| 74 52 74 29 3b 0d 20 20 | 47 65 74 54 65 6d 70 6c |tRt);. |GetTempl|
|00003aa0| 61 74 65 20 28 49 6e 69 | 74 2c 20 53 68 61 64 6f |ate (Ini|t, Shado|
|00003ab0| 77 52 29 3b 0d 20 20 49 | 6e 69 74 2e 6c 65 66 74 |wR);. I|nit.left|
|00003ac0| 20 3a 3d 20 49 6e 69 74 | 2e 72 69 67 68 74 3b 0d | := Init|.right;.|
|00003ad0| 20 20 44 69 73 70 6c 61 | 79 43 68 61 72 20 28 53 | Displa|yChar (S|
|00003ae0| 74 6f 72 61 67 65 42 4d | 5e 2c 20 49 6e 69 74 2c |torageBM|^, Init,|
|00003af0| 20 47 61 6d 65 46 6f 6e | 74 2c 20 46 69 72 73 74 | GameFon|t, First|
|00003b00| 53 70 6c 61 73 68 29 3b | 0d 20 20 44 69 73 70 6c |Splash);|. Displ|
|00003b10| 61 79 43 68 61 72 20 28 | 53 74 6f 72 61 67 65 42 |ayChar (|StorageB|
|00003b20| 4d 5e 2c 20 49 6e 69 74 | 2c 20 47 61 6d 65 46 6f |M^, Init|, GameFo|
|00003b30| 6e 74 2c 20 4c 61 73 74 | 53 70 6c 61 73 68 29 3b |nt, Last|Splash);|
|00003b40| 0d 20 20 47 65 74 54 65 | 6d 70 6c 61 74 65 20 28 |. GetTe|mplate (|
|00003b50| 49 6e 69 74 2c 20 53 70 | 6c 61 73 68 29 3b 0d 20 |Init, Sp|lash);. |
|00003b60| 20 0d 0d 20 20 0d 20 20 | 28 2a 20 70 72 65 70 61 | .. . |(* prepa|
|00003b70| 72 65 20 74 68 65 20 66 | 69 72 73 74 20 46 72 6f |re the f|irst Fro|
|00003b80| 67 20 69 6e 20 74 68 65 | 20 67 72 61 79 20 62 6f |g in the| gray bo|
|00003b90| 72 64 65 72 20 6f 66 20 | 74 68 65 20 72 6f 61 64 |rder of |the road|
|00003ba0| 2c 0d 20 20 20 20 20 61 | 6e 64 20 69 74 73 20 62 |,. a|nd its b|
|00003bb0| 65 68 69 6e 64 20 28 74 | 68 65 20 62 6f 72 64 65 |ehind (t|he borde|
|00003bc0| 72 2c 20 6f 66 20 63 6f | 75 72 73 65 29 20 2a 29 |r, of co|urse) *)|
|00003bd0| 0d 20 20 46 69 6c 6c 52 | 65 63 74 20 28 42 65 68 |. FillR|ect (Beh|
|00003be0| 69 6e 64 41 72 65 61 2c | 20 67 72 61 79 29 3b 0d |indArea,| gray);.|
|00003bf0| 20 20 46 69 6c 6c 52 65 | 63 74 20 28 46 72 6f 67 | FillRe|ct (Frog|
|00003c00| 41 72 65 61 2c 20 67 72 | 61 79 29 3b 0d 20 20 43 |Area, gr|ay);. C|
|00003c10| 6f 70 79 42 69 74 73 20 | 28 53 74 6f 72 61 67 65 |opyBits |(Storage|
|00003c20| 42 4d 5e 2c 20 53 74 6f | 72 61 67 65 42 4d 5e 2c |BM^, Sto|rageBM^,|
|00003c30| 20 53 68 61 64 6f 77 55 | 2c 20 46 72 6f 67 41 72 | ShadowU|, FrogAr|
|00003c40| 65 61 2c 20 73 72 63 42 | 69 63 2c 6e 6f 4d 61 73 |ea, srcB|ic,noMas|
|00003c50| 6b 29 3b 0d 20 20 43 6f | 70 79 42 69 74 73 20 28 |k);. Co|pyBits (|
|00003c60| 53 74 6f 72 61 67 65 42 | 4d 5e 2c 20 53 74 6f 72 |StorageB|M^, Stor|
|00003c70| 61 67 65 42 4d 5e 2c 20 | 46 72 6f 67 55 2c 20 46 |ageBM^, |FrogU, F|
|00003c80| 72 6f 67 41 72 65 61 2c | 20 73 72 63 4f 72 2c 6e |rogArea,| srcOr,n|
|00003c90| 6f 4d 61 73 6b 29 3b 0d | 20 20 0d 20 20 0d 20 20 |oMask);.| . . |
|00003ca0| 53 65 74 50 6f 72 74 20 | 28 52 65 61 6c 50 6f 72 |SetPort |(RealPor|
|00003cb0| 74 29 3b 0d 20 20 49 46 | 20 52 65 63 61 6c 63 4f |t);. IF| RecalcO|
|00003cc0| 72 69 67 69 6e 28 29 20 | 54 48 45 4e 20 45 4e 44 |rigin() |THEN END|
|00003cd0| 3b 20 20 20 28 2a 20 73 | 65 74 20 67 6c 6f 62 61 |; (* s|et globa|
|00003ce0| 6c 20 76 61 72 69 61 62 | 6c 65 73 20 2a 29 0d 20 |l variab|les *). |
|00003cf0| 20 53 65 74 4f 72 69 67 | 69 6e 20 28 30 2c 20 4e | SetOrig|in (0, N|
|00003d00| 65 77 4f 72 69 67 69 6e | 29 3b 0d 20 20 53 65 74 |ewOrigin|);. Set|
|00003d10| 75 70 43 6f 6e 74 72 6f | 6c 73 3b 0d 20 20 55 70 |upContro|ls;. Up|
|00003d20| 64 61 74 65 53 63 72 65 | 65 6e 3b 20 20 20 20 20 |dateScre|en; |
|00003d30| 20 20 20 20 20 20 20 20 | 20 20 20 20 28 2a 20 64 | | (* d|
|00003d40| 72 61 77 20 62 61 63 6b | 67 72 6f 75 6e 64 20 2a |raw back|ground *|
|00003d50| 29 0d 0d 20 20 28 2a 20 | 64 6f 20 61 20 66 65 77 |).. (* |do a few|
|00003d60| 20 63 79 63 6c 65 73 20 | 6f 66 20 74 68 65 20 67 | cycles |of the g|
|00003d70| 61 6d 65 2c 20 69 6e 20 | 6f 72 64 65 72 20 74 6f |ame, in |order to|
|00003d80| 20 66 69 6c 6c 20 74 68 | 65 20 73 63 72 65 65 6e | fill th|e screen|
|00003d90| 2e 0d 20 20 20 20 20 62 | 75 74 20 64 6f 20 69 74 |.. b|ut do it|
|00003da0| 20 63 6c 69 70 70 65 64 | 2c 20 73 6f 20 6e 6f 74 | clipped|, so not|
|00003db0| 68 69 6e 67 20 69 73 20 | 61 63 74 75 61 6c 6c 79 |hing is |actually|
|00003dc0| 20 64 72 61 77 6e 2e 0d | 20 20 20 20 20 54 68 65 | drawn..| The|
|00003dd0| 6e 20 77 65 20 6d 61 6b | 65 20 74 68 65 20 63 6c |n we mak|e the cl|
|00003de0| 69 70 52 67 6e 20 77 69 | 64 65 20 67 61 69 6e 2a |ipRgn wi|de gain*|
|00003df0| 29 0d 20 20 53 65 74 45 | 6d 70 74 79 52 67 6e 28 |). SetE|mptyRgn(|
|00003e00| 52 65 61 6c 50 6f 72 74 | 5e 2e 63 6c 69 70 52 67 |RealPort|^.clipRg|
|00003e10| 6e 29 3b 0d 20 20 46 4f | 52 20 69 20 3a 3d 20 31 |n);. FO|R i := 1|
|00003e20| 20 54 4f 20 33 30 30 20 | 44 4f 20 44 72 61 77 53 | TO 300 |DO DrawS|
|00003e30| 63 72 65 65 6e 20 45 4e | 44 3b 0d 20 20 53 65 74 |creen EN|D;. Set|
|00003e40| 52 65 63 74 52 67 6e 20 | 28 52 65 61 6c 50 6f 72 |RectRgn |(RealPor|
|00003e50| 74 5e 2e 63 6c 69 70 52 | 67 6e 2c 20 2d 31 30 30 |t^.clipR|gn, -100|
|00003e60| 30 2c 2d 31 30 30 30 2c | 2b 31 30 30 30 2c 2b 31 |0,-1000,|+1000,+1|
|00003e70| 30 30 30 29 3b 0d 20 20 | 28 2a 20 6e 65 78 74 20 |000);. |(* next |
|00003e80| 69 73 20 74 68 65 20 75 | 70 64 61 74 65 20 65 76 |is the u|pdate ev|
|00003e90| 65 6e 74 2c 20 65 76 65 | 6e 20 66 6f 72 20 61 20 |ent, eve|n for a |
|00003ea0| 52 65 73 74 61 72 74 20 | 6f 66 20 74 68 65 20 67 |Restart |of the g|
|00003eb0| 61 6d 65 20 2a 29 0d 0d | 45 4e 44 20 49 6e 69 74 |ame *)..|END Init|
|00003ec0| 47 61 6d 65 3b 0d 0d 0d | 56 41 52 20 4e 65 77 4f |Game;...|VAR NewO|
|00003ed0| 72 69 67 69 6e 3a 20 49 | 4e 54 45 47 45 52 3b 0d |rigin: I|NTEGER;.|
|00003ee0| 0d 50 52 4f 43 45 44 55 | 52 45 20 52 65 63 61 6c |.PROCEDU|RE Recal|
|00003ef0| 63 4f 72 69 67 69 6e 20 | 28 29 3a 20 42 4f 4f 4c |cOrigin |(): BOOL|
|00003f00| 45 41 4e 3b 0d 28 2a 20 | 54 52 55 45 20 69 66 20 |EAN;.(* |TRUE if |
|00003f10| 6e 65 77 20 6f 72 69 67 | 69 6e 2e 20 4e 65 77 4f |new orig|in. NewO|
|00003f20| 72 69 67 69 6e 20 63 6f | 6e 74 61 69 6e 73 20 74 |rigin co|ntains t|
|00003f30| 68 65 20 6e 65 77 20 76 | 61 6c 75 65 20 2e 0d 20 |he new v|alue .. |
|00003f40| 20 20 46 41 4c 53 45 20 | 69 66 20 6e 6f 20 6e 65 | FALSE |if no ne|
|00003f50| 77 20 6f 72 69 67 69 6e | 20 2a 29 0d 56 41 52 20 |w origin| *).VAR |
|00003f60| 4f 6c 64 52 6f 77 44 69 | 73 70 6c 61 79 3a 20 42 |OldRowDi|splay: B|
|00003f70| 49 54 53 45 54 3b 20 20 | 69 3a 20 49 4e 54 45 47 |ITSET; |i: INTEG|
|00003f80| 45 52 3b 20 77 69 64 74 | 68 3a 20 49 4e 54 45 47 |ER; widt|h: INTEG|
|00003f90| 45 52 3b 0d 42 45 47 49 | 4e 0d 20 20 4f 6c 64 52 |ER;.BEGI|N. OldR|
|00003fa0| 6f 77 44 69 73 70 6c 61 | 79 20 3a 3d 20 52 6f 77 |owDispla|y := Row|
|00003fb0| 44 69 73 70 6c 61 79 3b | 0d 20 20 57 49 54 48 20 |Display;|. WITH |
|00003fc0| 52 65 61 6c 57 69 6e 64 | 6f 77 5e 2e 70 6f 72 74 |RealWind|ow^.port|
|00003fd0| 52 65 63 74 20 44 4f 20 | 20 20 28 2a 20 63 6f 70 |Rect DO | (* cop|
|00003fe0| 79 20 66 72 6f 6d 20 69 | 74 20 2a 29 0d 20 20 20 |y from i|t *). |
|00003ff0| 20 4c 65 66 74 45 64 67 | 65 20 3a 3d 20 6c 65 66 | LeftEdg|e := lef|
|00004000| 74 3b 20 52 69 67 68 74 | 45 64 67 65 20 3a 3d 20 |t; Right|Edge := |
|00004010| 72 69 67 68 74 2d 53 43 | 42 3b 0d 20 20 20 20 48 |right-SC|B;. H|
|00004020| 65 69 67 68 74 20 3a 3d | 20 62 6f 74 74 6f 6d 2d |eight :=| bottom-|
|00004030| 74 6f 70 3b 0d 20 20 20 | 20 77 69 64 74 68 20 3a |top;. | width :|
|00004040| 3d 20 72 69 67 68 74 20 | 2d 20 6c 65 66 74 3b 0d |= right |- left;.|
|00004050| 20 20 45 4e 44 3b 0d 20 | 20 49 46 20 28 46 72 6f | END;. | IF (Fro|
|00004060| 67 2e 50 6f 73 58 20 3c | 20 4c 65 66 74 45 64 67 |g.PosX <| LeftEdg|
|00004070| 65 20 2b 20 43 68 61 72 | 57 29 20 54 48 45 4e 0d |e + Char|W) THEN.|
|00004080| 20 20 20 20 46 72 6f 67 | 2e 50 6f 73 58 20 3a 3d | Frog|.PosX :=|
|00004090| 20 20 4c 65 66 74 45 64 | 67 65 20 2b 20 43 68 61 | LeftEd|ge + Cha|
|000040a0| 72 57 3b 20 20 20 45 4e | 44 3b 0d 20 20 49 46 20 |rW; EN|D;. IF |
|000040b0| 28 28 46 72 6f 67 2e 50 | 6f 73 58 20 2b 20 28 34 |((Frog.P|osX + (4|
|000040c0| 20 2a 20 43 68 61 72 57 | 29 29 20 3e 20 52 69 67 | * CharW|)) > Rig|
|000040d0| 68 74 45 64 67 65 29 20 | 54 48 45 4e 0d 20 20 20 |htEdge) |THEN. |
|000040e0| 20 46 72 6f 67 2e 50 6f | 73 58 20 3a 3d 20 28 52 | Frog.Po|sX := (R|
|000040f0| 69 67 68 74 45 64 67 65 | 20 2d 20 28 34 20 2a 20 |ightEdge| - (4 * |
|00004100| 43 68 61 72 57 29 29 3b | 20 20 20 45 4e 44 3b 0d |CharW));| END;.|
|00004110| 20 20 52 6f 77 44 69 73 | 70 6c 61 79 20 3a 3d 20 | RowDis|play := |
|00004120| 7b 30 2e 2e 31 32 7d 3b | 0d 20 20 49 46 20 28 28 |{0..12};|. IF ((|
|00004130| 48 65 69 67 68 74 20 3c | 3d 20 28 28 31 33 20 2a |Height <|= ((13 *|
|00004140| 20 43 68 61 72 48 65 69 | 67 68 74 29 20 2b 20 35 | CharHei|ght) + 5|
|00004150| 29 29 20 4f 52 20 28 77 | 69 64 74 68 20 3c 3d 20 |)) OR (w|idth <= |
|00004160| 32 32 30 29 29 20 20 54 | 48 45 4e 0d 20 20 20 20 |220)) T|HEN. |
|00004170| 52 6f 77 44 69 73 70 6c | 61 79 20 3a 3d 20 7b 7d |RowDispl|ay := {}|
|00004180| 3b 0d 20 20 20 20 49 46 | 20 28 28 48 65 69 67 68 |;. IF| ((Heigh|
|00004190| 74 20 3c 3d 20 28 28 35 | 20 2a 20 43 68 61 72 48 |t <= ((5| * CharH|
|000041a0| 65 69 67 68 74 29 20 2b | 20 35 29 29 20 4f 52 20 |eight) +| 5)) OR |
|000041b0| 28 77 69 64 74 68 20 3c | 3d 20 32 32 30 29 29 20 |(width <|= 220)) |
|000041c0| 20 54 48 45 4e 0d 20 20 | 20 20 20 20 50 72 6f 6d | THEN. | Prom|
|000041d0| 70 74 4d 65 73 73 61 67 | 65 20 28 27 45 6e 6c 61 |ptMessag|e ('Enla|
|000041e0| 72 67 65 20 74 68 65 20 | 64 61 74 61 20 77 69 6e |rge the |data win|
|000041f0| 64 6f 77 20 74 6f 20 73 | 65 65 20 74 68 65 20 67 |dow to s|ee the g|
|00004200| 61 6d 65 21 21 27 29 3b | 0d 20 20 20 20 20 20 52 |ame!!');|. R|
|00004210| 45 54 55 52 4e 20 28 46 | 41 4c 53 45 29 3b 20 20 |ETURN (F|ALSE); |
|00004220| 45 4e 44 3b 0d 20 20 20 | 20 69 20 3a 3d 20 30 3b |END;. | i := 0;|
|00004230| 0d 20 20 20 20 4c 4f 4f | 50 20 28 2a 50 75 74 20 |. LOO|P (*Put |
|00004240| 61 73 20 6d 61 6e 79 20 | 72 6f 77 73 20 61 73 20 |as many |rows as |
|00004250| 77 69 6c 6c 20 66 69 74 | 20 69 6e 74 20 74 68 65 |will fit| int the|
|00004260| 20 77 69 6e 64 6f 77 20 | 69 6e 74 6f 20 52 6f 77 | window |into Row|
|00004270| 44 69 73 70 6c 61 79 2a | 29 0d 20 20 20 20 20 20 |Display*|). |
|00004280| 49 46 20 28 28 28 69 20 | 2b 20 31 29 20 2a 20 43 |IF (((i |+ 1) * C|
|00004290| 68 61 72 48 65 69 67 68 | 74 29 20 3e 20 28 48 65 |harHeigh|t) > (He|
|000042a0| 69 67 68 74 20 2d 53 43 | 42 29 29 20 54 48 45 4e |ight -SC|B)) THEN|
|000042b0| 20 20 45 58 49 54 3b 20 | 20 45 4e 44 3b 0d 20 20 | EXIT; | END;. |
|000042c0| 20 20 20 20 49 4e 43 4c | 20 28 52 6f 77 44 69 73 | INCL| (RowDis|
|000042d0| 70 6c 61 79 2c 20 69 29 | 3b 0d 20 20 20 20 20 20 |play, i)|;. |
|000042e0| 49 4e 43 20 28 69 29 3b | 0d 20 20 20 20 45 4e 44 |INC (i);|. END|
|000042f0| 3b 0d 20 20 20 20 28 2a | 2a 69 20 3a 3d 20 28 28 |;. (*|*i := ((|
|00004300| 69 20 2d 20 31 29 20 44 | 49 56 20 32 29 3b 2a 2a |i - 1) D|IV 2);**|
|00004310| 29 0d 20 20 20 20 49 46 | 20 46 72 6f 67 2e 52 6f |). IF| Frog.Ro|
|00004320| 77 20 3e 3d 20 69 2d 33 | 20 54 48 45 4e 20 20 28 |w >= i-3| THEN (|
|00004330| 2a 20 73 63 72 6f 6c 6c | 20 6e 65 65 64 65 64 20 |* scroll| needed |
|00004340| 2a 29 0d 20 20 20 20 20 | 20 69 3a 3d 30 3b 20 20 |*). | i:=0; |
|00004350| 28 2a 20 6c 6f 77 65 72 | 20 45 64 67 65 20 2a 29 |(* lower| Edge *)|
|00004360| 0d 20 20 20 20 20 20 4c | 4f 4f 50 20 20 20 28 2a |. L|OOP (*|
|00004370| 4e 6f 77 20 73 68 69 66 | 74 20 74 68 65 20 62 69 |Now shif|t the bi|
|00004380| 74 73 20 75 70 20 75 6e | 74 69 6c 20 74 68 65 20 |ts up un|til the |
|00004390| 66 72 6f 67 20 69 73 20 | 69 6e 20 74 68 65 20 6d |frog is |in the m|
|000043a0| 69 64 64 6c 65 20 6f 66 | 20 74 68 65 20 64 69 73 |iddle of| the dis|
|000043b0| 70 6c 61 79 2a 29 0d 09 | 49 46 20 28 69 20 3e 3d |play*)..|IF (i >=|
|000043c0| 20 46 72 6f 67 2e 52 6f | 77 2d 33 29 20 4f 52 20 | Frog.Ro|w-3) OR |
|000043d0| 28 31 32 20 49 4e 20 52 | 6f 77 44 69 73 70 6c 61 |(12 IN R|owDispla|
|000043e0| 79 29 20 54 48 45 4e 20 | 20 45 58 49 54 3b 20 20 |y) THEN | EXIT; |
|000043f0| 0d 09 45 4e 44 3b 0d 09 | 52 6f 77 44 69 73 70 6c |..END;..|RowDispl|
|00004400| 61 79 20 3a 3d 20 42 49 | 54 53 45 54 20 28 32 2a |ay := BI|TSET (2*|
|00004410| 43 41 52 44 49 4e 41 4c | 28 52 6f 77 44 69 73 70 |CARDINAL|(RowDisp|
|00004420| 6c 61 79 29 29 3b 20 28 | 2a 20 63 6f 6d 70 69 6c |lay)); (|* compil|
|00004430| 65 73 20 74 6f 20 73 68 | 69 66 74 2a 29 0d 09 49 |es to sh|ift*)..I|
|00004440| 4e 43 20 28 69 29 20 0d | 09 0d 20 20 20 20 20 20 |NC (i) .|.. |
|00004450| 45 4e 44 3b 0d 20 20 20 | 20 45 4e 44 3b 0d 20 20 |END;. | END;. |
|00004460| 45 4e 44 3b 0d 20 20 28 | 2a 20 66 69 6e 64 20 74 |END;. (|* find t|
|00004470| 68 65 20 68 69 67 68 65 | 73 74 20 52 6f 77 2e 20 |he highe|st Row. |
|00004480| 31 32 2e 74 6f 70 20 69 | 73 20 2d 33 30 34 2e 2a |12.top i|s -304.*|
|00004490| 29 0d 20 20 69 3a 3d 31 | 32 3b 20 57 48 49 4c 45 |). i:=1|2; WHILE|
|000044a0| 20 4e 4f 54 20 28 43 41 | 52 44 49 4e 41 4c 28 69 | NOT (CA|RDINAL(i|
|000044b0| 29 20 49 4e 20 52 6f 77 | 44 69 73 70 6c 61 79 29 |) IN Row|Display)|
|000044c0| 20 44 4f 20 44 45 43 28 | 69 29 20 45 4e 44 3b 0d | DO DEC(|i) END;.|
|000044d0| 20 20 0d 20 20 4e 65 77 | 4f 72 69 67 69 6e 20 3a | . New|Origin :|
|000044e0| 3d 20 20 2d 28 69 2b 31 | 29 2a 28 43 68 61 72 48 |= -(i+1|)*(CharH|
|000044f0| 65 69 67 68 74 29 3b 0d | 20 20 0d 20 20 52 45 54 |eight);.| . RET|
|00004500| 55 52 4e 20 28 52 6f 77 | 44 69 73 70 6c 61 79 20 |URN (Row|Display |
|00004510| 3c 3e 20 4f 6c 64 52 6f | 77 44 69 73 70 6c 61 79 |<> OldRo|wDisplay|
|00004520| 29 0d 45 4e 44 20 52 65 | 63 61 6c 63 4f 72 69 67 |).END Re|calcOrig|
|00004530| 69 6e 3b 0d 20 0d 0d 0d | 0d 0d 50 52 4f 43 45 44 |in;. ...|..PROCED|
|00004540| 55 52 45 20 44 72 61 77 | 47 61 6d 65 3b 0d 28 2a |URE Draw|Game;.(*|
|00004550| 20 77 68 65 6e 20 74 68 | 65 20 67 61 6d 65 20 64 | when th|e game d|
|00004560| 65 63 69 64 65 73 2c 20 | 74 68 61 74 20 74 68 65 |ecides, |that the|
|00004570| 20 77 68 6f 6c 65 20 73 | 63 72 65 65 6e 20 68 61 | whole s|creen ha|
|00004580| 73 20 74 6f 20 62 65 20 | 72 65 64 72 61 77 6e 2e |s to be |redrawn.|
|00004590| 0d 20 20 20 64 6f 65 73 | 20 63 61 6c 63 75 6c 61 |. does| calcula|
|000045a0| 74 69 6f 6e 73 2c 20 61 | 6e 64 20 70 65 72 68 61 |tions, a|nd perha|
|000045b0| 70 73 20 77 61 69 74 73 | 20 66 6f 72 20 61 6e 20 |ps waits| for an |
|000045c0| 75 70 64 61 74 65 20 65 | 76 65 6e 74 20 2a 29 0d |update e|vent *).|
|000045d0| 28 2a 20 74 68 65 72 65 | 20 69 73 20 61 6e 20 69 |(* there| is an i|
|000045e0| 6e 74 65 72 65 73 74 69 | 6e 67 20 62 61 64 20 73 |nteresti|ng bad s|
|000045f0| 65 71 75 65 6e 63 65 2c | 20 62 79 20 63 61 6c 6c |equence,| by call|
|00004600| 69 6e 67 20 44 72 61 77 | 47 61 6d 65 20 74 77 69 |ing Draw|Game twi|
|00004610| 63 65 3a 0d 20 20 20 20 | 44 72 61 77 47 61 6d 65 |ce:. |DrawGame|
|00004620| 20 20 2d 2d 20 6f 70 65 | 6e 73 20 74 68 65 20 63 | -- ope|ns the c|
|00004630| 6c 69 70 20 72 67 6e 2c | 20 6d 6f 76 65 73 3d 64 |lip rgn,| moves=d|
|00004640| 72 61 77 73 20 74 68 65 | 20 73 63 72 6f 6c 6c 20 |raws the| scroll |
|00004650| 62 61 72 73 0d 20 20 20 | 20 20 20 20 20 20 20 20 |bars. | |
|00004660| 20 20 20 20 20 20 77 61 | 69 74 73 20 66 6f 72 20 | wa|its for |
|00004670| 75 70 64 61 74 65 45 76 | 74 0d 20 20 20 20 44 72 |updateEv|t. Dr|
|00004680| 61 77 47 61 6d 65 20 20 | 2d 2d 20 64 72 61 77 73 |awGame |-- draws|
|00004690| 20 74 68 65 20 77 68 6f | 6c 65 20 73 63 72 65 65 | the who|le scree|
|000046a0| 6e 20 20 28 2a 20 57 52 | 4f 4e 47 20 2a 29 0d 20 |n (* WR|ONG *). |
|000046b0| 20 20 20 75 70 64 61 74 | 65 45 76 74 20 2d 2d 20 | updat|eEvt -- |
|000046c0| 73 65 74 73 20 74 68 65 | 20 63 6c 69 70 20 72 67 |sets the| clip rg|
|000046d0| 6e 2c 20 64 72 61 77 73 | 20 6f 6e 6c 79 20 74 68 |n, draws| only th|
|000046e0| 65 20 75 70 64 61 74 65 | 20 52 67 6e 2c 0d 20 20 |e update| Rgn,. |
|000046f0| 20 20 20 20 20 20 20 20 | 20 20 20 20 20 20 20 77 | | w|
|00004700| 69 74 68 6f 75 74 20 74 | 68 65 20 73 63 72 6f 6c |ithout t|he scrol|
|00004710| 6c 20 62 61 72 73 0d 2a | 29 09 09 0d 0d 42 45 47 |l bars.*|)....BEG|
|00004720| 49 4e 0d 0d 20 20 49 46 | 20 52 65 63 61 6c 63 4f |IN.. IF| RecalcO|
|00004730| 72 69 67 69 6e 28 29 0d | 20 20 20 20 54 48 45 4e |rigin().| THEN|
|00004740| 20 4d 6f 76 65 43 6f 6e | 74 72 6f 6c 73 20 28 54 | MoveCon|trols (T|
|00004750| 52 55 45 29 20 28 2a 69 | 6e 76 61 6c 69 64 61 74 |RUE) (*i|nvalidat|
|00004760| 65 20 77 68 6f 6c 65 20 | 73 63 72 65 65 6e 2a 29 |e whole |screen*)|
|00004770| 0d 20 20 20 20 20 20 28 | 2a 20 77 61 69 74 20 66 |. (|* wait f|
|00004780| 6f 72 20 75 70 64 61 74 | 65 45 76 74 20 2a 29 0d |or updat|eEvt *).|
|00004790| 20 20 20 20 45 4c 53 45 | 0d 20 20 20 20 20 20 44 | ELSE|. D|
|000047a0| 72 61 77 53 63 72 65 65 | 6e 0d 20 20 45 4e 44 3b |rawScree|n. END;|
|000047b0| 0d 45 4e 44 20 44 72 61 | 77 47 61 6d 65 3b 0d 0d |.END Dra|wGame;..|
|000047c0| 0d 20 20 20 50 52 4f 43 | 45 44 55 52 45 20 44 72 |. PROC|EDURE Dr|
|000047d0| 61 77 48 6f 75 73 65 20 | 28 53 63 72 65 65 6e 58 |awHouse |(ScreenX|
|000047e0| 3a 20 49 4e 54 45 47 45 | 52 3b 20 42 75 73 79 48 |: INTEGE|R; BusyH|
|000047f0| 6f 75 73 65 3a 20 42 4f | 4f 4c 45 41 4e 29 3b 0d |ouse: BO|OLEAN);.|
|00004800| 20 20 20 43 4f 4e 53 54 | 20 0d 09 20 48 20 3d 20 | CONST| .. H = |
|00004810| 43 68 61 72 48 65 69 67 | 68 74 2d 35 3b 0d 09 20 |CharHeig|ht-5;.. |
|00004820| 59 20 3d 20 31 32 20 2a | 20 43 68 61 72 48 65 69 |Y = 12 *| CharHei|
|00004830| 67 68 74 20 3b 0d 20 20 | 20 56 41 52 20 42 44 3a |ght ;. | VAR BD:|
|00004840| 20 52 65 63 74 3b 0d 20 | 20 20 42 45 47 49 4e 0d | Rect;. | BEGIN.|
|00004850| 20 20 20 20 20 57 49 54 | 48 20 42 44 20 44 4f 20 | WIT|H BD DO |
|00004860| 0d 20 20 20 20 20 20 20 | 6c 65 66 74 20 3a 3d 20 |. |left := |
|00004870| 53 63 72 65 65 6e 58 3b | 0d 20 20 20 20 20 20 20 |ScreenX;|. |
|00004880| 72 69 67 68 74 20 3a 3d | 20 53 63 72 65 65 6e 58 |right :=| ScreenX|
|00004890| 20 2b 20 48 6f 75 73 65 | 57 3b 0d 20 20 20 20 20 | + House|W;. |
|000048a0| 20 20 62 6f 74 74 6f 6d | 20 3a 3d 20 2d 20 59 3b | bottom| := - Y;|
|000048b0| 0d 20 20 20 20 20 20 20 | 74 6f 70 20 3a 3d 20 62 |. |top := b|
|000048c0| 6f 74 74 6f 6d 20 2d 20 | 48 3b 0d 20 20 20 20 20 |ottom - |H;. |
|000048d0| 45 4e 44 3b 0d 20 20 20 | 20 20 46 69 6c 6c 52 65 |END;. | FillRe|
|000048e0| 63 74 20 28 42 44 2c 20 | 77 68 69 74 65 29 3b 0d |ct (BD, |white);.|
|000048f0| 20 20 20 20 20 49 46 20 | 42 75 73 79 48 6f 75 73 | IF |BusyHous|
|00004900| 65 20 54 48 45 4e 0d 20 | 20 20 20 20 20 20 42 44 |e THEN. | BD|
|00004910| 2e 74 6f 70 20 3a 3d 20 | 42 44 2e 62 6f 74 74 6f |.top := |BD.botto|
|00004920| 6d 2d 43 68 61 72 48 65 | 69 67 68 74 3b 0d 20 20 |m-CharHe|ight;. |
|00004930| 20 20 20 20 20 43 6f 70 | 79 42 69 74 73 20 28 53 | Cop|yBits (S|
|00004940| 74 6f 72 61 67 65 42 4d | 5e 2c 20 52 65 61 6c 42 |torageBM|^, RealB|
|00004950| 4d 5e 2c 20 53 68 61 64 | 6f 77 44 2c 20 42 44 2c |M^, Shad|owD, BD,|
|00004960| 20 73 72 63 42 69 63 2c | 20 6e 6f 4d 61 73 6b 29 | srcBic,| noMask)|
|00004970| 3b 0d 20 20 20 20 20 20 | 20 43 6f 70 79 42 69 74 |;. | CopyBit|
|00004980| 73 20 28 53 74 6f 72 61 | 67 65 42 4d 5e 2c 20 52 |s (Stora|geBM^, R|
|00004990| 65 61 6c 42 4d 5e 2c 20 | 46 72 6f 67 44 2c 20 42 |ealBM^, |FrogD, B|
|000049a0| 44 2c 20 73 72 63 4f 72 | 2c 20 6e 6f 4d 61 73 6b |D, srcOr|, noMask|
|000049b0| 29 0d 20 20 20 20 20 45 | 4e 44 3b 0d 20 20 20 45 |). E|ND;. E|
|000049c0| 4e 44 20 44 72 61 77 48 | 6f 75 73 65 3b 0d 20 20 |ND DrawH|ouse;. |
|000049d0| 20 0d 0d 50 52 4f 43 45 | 44 55 52 45 20 55 70 64 | ..PROCE|DURE Upd|
|000049e0| 61 74 65 53 63 72 65 65 | 6e 3b 0d 28 2a 20 64 72 |ateScree|n;.(* dr|
|000049f0| 61 77 20 74 68 65 20 62 | 61 63 6b 67 72 6f 75 6e |aw the b|ackgroun|
|00004a00| 64 2c 20 64 72 61 77 20 | 74 68 65 20 73 63 72 6f |d, draw |the scro|
|00004a10| 6c 6c 20 62 61 72 73 20 | 61 6e 64 20 74 68 65 20 |ll bars |and the |
|00004a20| 6f 62 6a 65 63 74 73 20 | 2a 29 0d 28 2a 20 73 65 |objects |*).(* se|
|00004a30| 74 73 20 74 68 65 20 63 | 6c 69 70 20 72 65 67 69 |ts the c|lip regi|
|00004a40| 6f 6e 20 66 6f 72 20 73 | 75 62 73 65 71 75 65 6e |on for s|ubsequen|
|00004a50| 74 20 73 61 6d 65 2d 6f | 72 69 67 69 6e 20 44 72 |t same-o|rigin Dr|
|00004a60| 61 77 47 61 6d 65 20 63 | 61 6c 6c 73 20 2a 29 0d |awGame c|alls *).|
|00004a70| 28 2a 20 62 61 73 69 63 | 61 6c 6c 79 20 74 68 69 |(* basic|ally thi|
|00004a80| 73 20 69 73 20 74 68 65 | 20 75 70 64 61 74 65 45 |s is the| updateE|
|00004a90| 76 74 20 70 72 6f 63 65 | 64 75 72 65 2c 20 73 75 |vt proce|dure, su|
|00004aa0| 62 6a 65 63 74 20 74 6f | 20 74 68 65 20 75 70 64 |bject to| the upd|
|00004ab0| 61 74 65 0d 20 20 20 72 | 65 67 69 6f 6e 20 63 6c |ate. r|egion cl|
|00004ac0| 69 70 70 69 6e 67 20 2a | 29 0d 20 20 20 0d 20 20 |ipping *|). . |
|00004ad0| 20 0d 56 41 52 20 20 20 | 53 61 66 65 41 72 65 61 | .VAR |SafeArea|
|00004ae0| 20 20 20 20 20 3a 20 52 | 65 63 74 3b 20 20 20 20 | : R|ect; |
|00004af0| 20 20 20 20 20 20 20 20 | 20 20 20 28 2a 20 5a 6f | | (* Zo|
|00004b00| 6e 65 73 20 61 74 20 62 | 6f 74 74 6f 6d 2c 20 6d |nes at b|ottom, m|
|00004b10| 69 64 64 6c 65 2c 20 74 | 6f 70 2a 29 0d 20 20 20 |iddle, t|op*). |
|00004b20| 0d 42 45 47 49 4e 0d 20 | 20 53 65 74 50 6f 72 74 |.BEGIN. | SetPort|
|00004b30| 20 28 52 65 61 6c 57 69 | 6e 64 6f 77 29 3b 20 20 | (RealWi|ndow); |
|00004b40| 20 0d 20 20 53 65 74 52 | 65 63 74 52 67 6e 20 28 | . SetR|ectRgn (|
|00004b50| 52 65 61 6c 57 69 6e 64 | 6f 77 5e 2e 63 6c 69 70 |RealWind|ow^.clip|
|00004b60| 52 67 6e 2c 20 2d 31 30 | 30 30 2c 2d 31 30 30 30 |Rgn, -10|00,-1000|
|00004b70| 2c 2b 31 30 30 30 2c 2b | 31 30 30 30 29 3b 0d 20 |,+1000,+|1000);. |
|00004b80| 20 44 72 61 77 43 6f 6e | 74 72 6f 6c 73 28 52 65 | DrawCon|trols(Re|
|00004b90| 61 6c 57 69 6e 64 6f 77 | 29 3b 0d 20 20 44 72 61 |alWindow|);. Dra|
|00004ba0| 77 47 72 6f 77 49 63 6f | 6e 20 28 52 65 61 6c 57 |wGrowIco|n (RealW|
|00004bb0| 69 6e 64 6f 77 29 3b 0d | 20 20 0d 20 20 4d 61 6b |indow);.| . Mak|
|00004bc0| 65 52 67 6e 20 28 53 63 | 72 6f 6c 6c 42 61 72 52 |eRgn (Sc|rollBarR|
|00004bd0| 67 6e 29 3b 0d 20 20 44 | 69 66 66 52 67 6e 20 28 |gn);. D|iffRgn (|
|00004be0| 52 65 61 6c 57 69 6e 64 | 6f 77 5e 2e 63 6c 69 70 |RealWind|ow^.clip|
|00004bf0| 52 67 6e 2c 20 53 63 72 | 6f 6c 6c 42 61 72 52 67 |Rgn, Scr|ollBarRg|
|00004c00| 6e 2c 20 52 65 61 6c 57 | 69 6e 64 6f 77 5e 2e 63 |n, RealW|indow^.c|
|00004c10| 6c 69 70 52 67 6e 29 3b | 0d 20 20 0d 20 20 45 72 |lipRgn);|. . Er|
|00004c20| 61 73 65 52 65 63 74 28 | 52 65 61 6c 50 6f 72 74 |aseRect(|RealPort|
|00004c30| 5e 2e 70 6f 72 74 52 65 | 63 74 29 3b 0d 20 20 0d |^.portRe|ct);. .|
|00004c40| 20 20 53 61 66 65 41 72 | 65 61 2e 6c 65 66 74 20 | SafeAr|ea.left |
|00004c50| 3a 3d 20 4c 65 66 74 45 | 64 67 65 3b 20 20 20 20 |:= LeftE|dge; |
|00004c60| 20 20 53 61 66 65 41 72 | 65 61 2e 72 69 67 68 74 | SafeAr|ea.right|
|00004c70| 20 3a 3d 20 52 69 67 68 | 74 45 64 67 65 3b 0d 20 | := Righ|tEdge;. |
|00004c80| 20 49 46 20 28 30 20 49 | 4e 20 52 6f 77 44 69 73 | IF (0 I|N RowDis|
|00004c90| 70 6c 61 79 29 20 54 48 | 45 4e 0d 20 20 20 20 53 |play) TH|EN. S|
|00004ca0| 61 66 65 41 72 65 61 2e | 74 6f 70 20 3a 3d 20 2d |afeArea.|top := -|
|00004cb0| 28 43 68 61 72 48 65 69 | 67 68 74 29 3b 20 20 20 |(CharHei|ght); |
|00004cc0| 20 53 61 66 65 41 72 65 | 61 2e 62 6f 74 74 6f 6d | SafeAre|a.bottom|
|00004cd0| 20 3a 3d 20 30 3b 0d 20 | 20 20 20 46 69 6c 6c 52 | := 0;. | FillR|
|00004ce0| 65 63 74 20 28 53 61 66 | 65 41 72 65 61 2c 20 67 |ect (Saf|eArea, g|
|00004cf0| 72 61 79 29 3b 20 20 20 | 45 4e 44 3b 0d 20 20 49 |ray); |END;. I|
|00004d00| 46 20 28 36 20 49 4e 20 | 52 6f 77 44 69 73 70 6c |F (6 IN |RowDispl|
|00004d10| 61 79 29 20 54 48 45 4e | 0d 20 20 20 20 53 61 66 |ay) THEN|. Saf|
|00004d20| 65 41 72 65 61 2e 62 6f | 74 74 6f 6d 20 3a 3d 20 |eArea.bo|ttom := |
|00004d30| 2d 28 28 28 36 20 2a 20 | 43 68 61 72 48 65 69 67 |-(((6 * |CharHeig|
|00004d40| 68 74 29 20 20 2b 20 33 | 29 29 3b 0d 20 20 20 20 |ht) + 3|));. |
|00004d50| 53 61 66 65 41 72 65 61 | 2e 74 6f 70 20 3a 3d 20 |SafeArea|.top := |
|00004d60| 53 61 66 65 41 72 65 61 | 2e 62 6f 74 74 6f 6d 2d |SafeArea|.bottom-|
|00004d70| 28 43 68 61 72 48 65 69 | 67 68 74 20 2d 20 33 29 |(CharHei|ght - 3)|
|00004d80| 3b 0d 20 20 20 20 46 69 | 6c 6c 52 65 63 74 20 28 |;. Fi|llRect (|
|00004d90| 53 61 66 65 41 72 65 61 | 2c 20 67 72 61 79 29 20 |SafeArea|, gray) |
|00004da0| 20 20 45 4e 44 3b 0d 20 | 20 49 46 20 28 31 32 20 | END;. | IF (12 |
|00004db0| 49 4e 20 52 6f 77 44 69 | 73 70 6c 61 79 29 20 54 |IN RowDi|splay) T|
|00004dc0| 48 45 4e 0d 20 20 20 20 | 53 61 66 65 41 72 65 61 |HEN. |SafeArea|
|00004dd0| 2e 62 6f 74 74 6f 6d 20 | 3a 3d 20 2d 28 28 28 31 |.bottom |:= -(((1|
|00004de0| 32 20 2a 20 43 68 61 72 | 48 65 69 67 68 74 29 20 |2 * Char|Height) |
|00004df0| 2b 20 20 33 29 20 29 3b | 0d 20 20 20 20 53 61 66 |+ 3) );|. Saf|
|00004e00| 65 41 72 65 61 2e 74 6f | 70 20 3a 3d 20 53 61 66 |eArea.to|p := Saf|
|00004e10| 65 41 72 65 61 2e 62 6f | 74 74 6f 6d 2d 28 43 68 |eArea.bo|ttom-(Ch|
|00004e20| 61 72 48 65 69 67 68 74 | 20 2d 20 33 29 3b 0d 20 |arHeight| - 3);. |
|00004e30| 20 20 20 46 69 6c 6c 52 | 65 63 74 20 28 53 61 66 | FillR|ect (Saf|
|00004e40| 65 41 72 65 61 2c 20 67 | 72 61 79 29 3b 0d 20 20 |eArea, g|ray);. |
|00004e50| 20 20 46 4f 52 20 69 20 | 3a 3d 20 31 20 54 4f 20 | FOR i |:= 1 TO |
|00004e60| 36 20 44 4f 20 20 20 28 | 2a 4e 6f 20 6d 6f 72 65 |6 DO (|*No more|
|00004e70| 20 74 68 61 6e 20 36 20 | 68 6f 75 73 65 2a 29 0d | than 6 |house*).|
|00004e80| 20 20 20 20 20 20 20 20 | 44 72 61 77 48 6f 75 73 | |DrawHous|
|00004e90| 65 20 28 28 4c 65 66 74 | 45 64 67 65 20 2b 20 28 |e ((Left|Edge + (|
|00004ea0| 32 20 2a 20 69 20 2a 20 | 48 6f 75 73 65 57 29 20 |2 * i * |HouseW) |
|00004eb0| 2d 20 48 6f 75 73 65 57 | 29 2c 0d 20 20 20 20 20 |- HouseW|),. |
|00004ec0| 20 20 20 20 20 20 20 20 | 20 20 20 20 20 20 20 20 | | |
|00004ed0| 20 20 28 43 41 52 44 49 | 4e 41 4c 20 28 69 29 20 | (CARDI|NAL (i) |
|00004ee0| 49 4e 20 42 75 73 79 48 | 6f 75 73 65 73 29 29 3b |IN BusyH|ouses));|
|00004ef0| 0d 20 20 20 20 20 20 20 | 20 28 2a 20 63 6c 69 70 |. | (* clip|
|00004f00| 70 69 6e 67 20 74 6f 20 | 74 68 65 20 73 63 72 65 |ping to |the scre|
|00004f10| 65 6e 20 69 73 20 41 55 | 54 4f 4d 41 54 49 43 20 |en is AU|TOMATIC |
|00004f20| 6f 6e 20 74 68 65 20 4d | 61 63 20 2a 29 0d 20 20 |on the M|ac *). |
|00004f30| 20 20 45 4e 44 3b 0d 20 | 20 45 4e 44 3b 0d 0d 20 | END;. | END;.. |
|00004f40| 20 44 72 61 77 53 63 72 | 65 65 6e 3b 20 20 20 28 | DrawScr|een; (|
|00004f50| 2a 20 64 72 61 77 73 20 | 74 68 65 20 72 65 73 74 |* draws |the rest|
|00004f60| 20 2a 29 0d 45 4e 44 20 | 55 70 64 61 74 65 53 63 | *).END |UpdateSc|
|00004f70| 72 65 65 6e 3b 0d 20 20 | 20 0d 20 20 0d 0d 50 52 |reen;. | . ..PR|
|00004f80| 4f 43 45 44 55 52 45 20 | 44 65 6c 65 74 65 4f 62 |OCEDURE |DeleteOb|
|00004f90| 6a 65 63 74 20 28 44 65 | 6c 65 74 65 3a 20 42 4f |ject (De|lete: BO|
|00004fa0| 4f 4c 45 41 4e 3b 20 56 | 41 52 20 41 6c 6c 2c 20 |OLEAN; V|AR All, |
|00004fb0| 43 75 72 72 65 6e 74 2c | 20 4c 61 73 74 45 6c 3a |Current,| LastEl:|
|00004fc0| 20 4c 69 73 74 45 6c 29 | 3b 0d 20 20 28 2a 20 61 | ListEl)|;. (* a|
|00004fd0| 64 76 61 6e 63 65 73 20 | 74 68 65 20 70 6f 69 6e |dvances |the poin|
|00004fe0| 74 65 72 73 20 69 6e 20 | 44 72 61 77 53 63 72 65 |ters in |DrawScre|
|00004ff0| 65 6e 20 2a 29 0d 20 20 | 28 2a 20 49 46 20 44 65 |en *). |(* IF De|
|00005000| 6c 65 74 65 2c 20 74 68 | 65 6e 20 64 65 6c 65 74 |lete, th|en delet|
|00005010| 65 73 20 74 68 65 20 43 | 75 72 72 65 6e 74 20 4f |es the C|urrent O|
|00005020| 62 6a 65 63 74 20 2a 29 | 0d 56 41 52 20 20 54 65 |bject *)|.VAR Te|
|00005030| 6d 70 3a 20 4c 69 73 74 | 45 6c 3b 0d 42 45 47 49 |mp: List|El;.BEGI|
|00005040| 4e 0d 20 20 49 46 20 44 | 65 6c 65 74 65 20 54 48 |N. IF D|elete TH|
|00005050| 45 4e 0d 20 20 20 20 49 | 46 20 28 43 75 72 72 65 |EN. I|F (Curre|
|00005060| 6e 74 20 23 20 41 6c 6c | 29 20 54 48 45 4e 20 20 |nt # All|) THEN |
|00005070| 4c 61 73 74 45 6c 5e 2e | 4e 65 78 74 20 3a 3d 20 |LastEl^.|Next := |
|00005080| 43 75 72 72 65 6e 74 5e | 2e 4e 65 78 74 3b 0d 20 |Current^|.Next;. |
|00005090| 20 20 20 20 20 54 65 6d | 70 20 3a 3d 20 43 75 72 | Tem|p := Cur|
|000050a0| 72 65 6e 74 3b 20 20 20 | 20 43 75 72 72 65 6e 74 |rent; | Current|
|000050b0| 3a 3d 20 43 75 72 72 65 | 6e 74 5e 2e 4e 65 78 74 |:= Curre|nt^.Next|
|000050c0| 3b 0d 20 20 20 20 45 4c | 53 45 20 41 6c 6c 4f 62 |;. EL|SE AllOb|
|000050d0| 6a 65 63 74 73 20 3a 3d | 20 43 75 72 72 65 6e 74 |jects :=| Current|
|000050e0| 5e 2e 4e 65 78 74 3b 0d | 20 20 20 20 20 20 54 65 |^.Next;.| Te|
|000050f0| 6d 70 20 3a 3d 20 43 75 | 72 72 65 6e 74 3b 0d 20 |mp := Cu|rrent;. |
|00005100| 20 20 20 20 20 43 75 72 | 72 65 6e 74 20 3a 3d 20 | Cur|rent := |
|00005110| 41 6c 6c 4f 62 6a 65 63 | 74 73 3b 20 20 45 4e 44 |AllObjec|ts; END|
|00005120| 3b 0d 20 20 20 20 44 49 | 53 50 4f 53 45 20 28 54 |;. DI|SPOSE (T|
|00005130| 65 6d 70 29 3b 0d 20 20 | 45 4c 53 45 0d 20 20 20 |emp);. |ELSE. |
|00005140| 20 4c 61 73 74 45 6c 20 | 3a 3d 20 43 75 72 72 65 | LastEl |:= Curre|
|00005150| 6e 74 3b 0d 20 20 20 20 | 43 75 72 72 65 6e 74 20 |nt;. |Current |
|00005160| 3a 3d 20 43 75 72 72 65 | 6e 74 5e 2e 4e 65 78 74 |:= Curre|nt^.Next|
|00005170| 3b 0d 20 20 45 4e 44 3b | 0d 45 4e 44 20 44 65 6c |;. END;|.END Del|
|00005180| 65 74 65 4f 62 6a 65 63 | 74 3b 0d 0d 50 52 4f 43 |eteObjec|t;..PROC|
|00005190| 45 44 55 52 45 20 44 72 | 61 77 53 63 72 65 65 6e |EDURE Dr|awScreen|
|000051a0| 3b 0d 28 2a 20 64 72 61 | 77 20 72 6f 61 64 2c 20 |;.(* dra|w road, |
|000051b0| 72 69 76 65 72 2c 20 66 | 72 6f 67 2c 20 61 6e 64 |river, f|rog, and|
|000051c0| 20 6d 6f 76 65 20 74 68 | 65 20 63 61 72 73 2c 20 | move th|e cars, |
|000051d0| 66 72 6f 67 73 20 61 6e | 64 20 74 72 75 6e 6b 73 |frogs an|d trunks|
|000051e0| 2e 0d 20 20 20 64 65 63 | 69 64 65 20 6f 6e 20 63 |.. dec|ide on c|
|000051f0| 6f 6c 6c 69 73 69 6f 6e | 20 2a 29 0d 43 4f 4e 53 |ollision| *).CONS|
|00005200| 54 20 48 61 6c 66 46 72 | 6f 67 57 20 3d 20 43 68 |T HalfFr|ogW = Ch|
|00005210| 61 72 57 69 64 74 68 3b | 0d 20 20 20 20 20 20 4c |arWidth;|. L|
|00005220| 65 66 74 4d 20 3d 20 7b | 38 2c 20 39 2c 20 31 31 |eftM = {|8, 9, 11|
|00005230| 7d 3b 0d 20 20 20 20 20 | 20 52 69 67 68 74 4d 3d |};. | RightM=|
|00005240| 20 7b 37 2c 20 31 30 7d | 3b 0d 56 41 52 20 20 50 | {7, 10}|;.VAR P|
|00005250| 6f 69 6e 74 65 72 2c 0d | 20 20 20 20 20 4c 61 73 |ointer,.| Las|
|00005260| 74 3a 20 4c 69 73 74 45 | 6c 3b 0d 20 20 20 20 20 |t: ListE|l;. |
|00005270| 46 72 6f 67 53 68 6f 77 | 6e 2c 0d 20 20 20 20 20 |FrogShow|n,. |
|00005280| 44 6f 6e 65 3a 20 42 4f | 4f 4c 45 41 4e 3b 0d 0d |Done: BO|OLEAN;..|
|00005290| 20 20 50 52 4f 43 45 44 | 55 52 45 20 55 70 64 61 | PROCED|URE Upda|
|000052a0| 74 65 4c 65 66 74 20 28 | 56 41 52 20 53 6f 75 72 |teLeft (|VAR Sour|
|000052b0| 63 65 2c 20 44 65 73 74 | 69 6e 61 74 69 6f 6e 3a |ce, Dest|ination:|
|000052c0| 20 52 65 63 74 3b 20 52 | 6f 77 3a 20 43 41 52 44 | Rect; R|ow: CARD|
|000052d0| 49 4e 41 4c 29 3b 0d 20 | 20 42 45 47 49 4e 20 20 |INAL);. | BEGIN |
|000052e0| 28 2a 55 70 64 61 74 65 | 73 20 74 68 65 20 6f 62 |(*Update|s the ob|
|000052f0| 6a 65 63 74 73 20 74 68 | 61 74 20 6d 6f 76 65 20 |jects th|at move |
|00005300| 66 72 6f 6d 20 6c 65 66 | 74 20 74 6f 20 72 69 67 |from lef|t to rig|
|00005310| 68 74 2a 29 0d 20 20 20 | 20 57 49 54 48 20 44 65 |ht*). | WITH De|
|00005320| 73 74 69 6e 61 74 69 6f | 6e 20 44 4f 0d 20 20 20 |stinatio|n DO. |
|00005330| 20 20 20 49 4e 43 20 28 | 6c 65 66 74 2c 20 53 70 | INC (|left, Sp|
|00005340| 65 65 64 20 5b 52 6f 77 | 5d 29 3b 0d 20 20 20 20 |eed [Row|]);. |
|00005350| 20 20 49 4e 43 20 28 72 | 69 67 68 74 2c 20 53 70 | INC (r|ight, Sp|
|00005360| 65 65 64 20 5b 52 6f 77 | 5d 29 3b 0d 20 20 20 20 |eed [Row|]);. |
|00005370| 20 20 49 46 20 6c 65 66 | 74 20 3e 3d 20 52 69 67 | IF lef|t >= Rig|
|00005380| 68 74 45 64 67 65 20 54 | 48 45 4e 20 20 20 20 20 |htEdge T|HEN |
|00005390| 20 20 20 20 20 20 20 20 | 20 20 20 20 20 20 20 28 | | (|
|000053a0| 2a 47 65 74 20 72 69 64 | 20 6f 66 20 74 68 65 20 |*Get rid| of the |
|000053b0| 6f 62 6a 65 63 74 2a 29 | 0d 20 20 20 20 20 20 20 |object*)|. |
|000053c0| 20 20 20 44 6f 6e 65 20 | 3a 3d 20 54 52 55 45 3b | Done |:= TRUE;|
|000053d0| 0d 20 20 20 20 20 20 20 | 20 20 20 52 45 54 55 52 |. | RETUR|
|000053e0| 4e 3b 0d 20 20 20 20 20 | 20 45 4e 44 3b 0d 20 20 |N;. | END;. |
|000053f0| 20 20 20 20 49 46 20 6c | 65 66 74 20 3c 20 4c 65 | IF l|eft < Le|
|00005400| 66 74 45 64 67 65 20 54 | 48 45 4e 20 49 4e 43 4c |ftEdge T|HEN INCL|
|00005410| 20 28 42 75 73 79 52 6f | 77 73 2c 20 52 6f 77 29 | (BusyRo|ws, Row)|
|00005420| 20 45 4e 44 3b 20 20 28 | 2a 20 69 6e 68 69 62 69 | END; (|* inhibi|
|00005430| 74 73 20 41 64 64 4f 62 | 6a 65 63 74 20 2a 29 0d |ts AddOb|ject *).|
|00005440| 20 20 20 20 45 4e 44 3b | 20 20 20 20 20 20 28 2a | END;| (*|
|00005450| 57 49 54 48 2a 29 0d 20 | 20 45 4e 44 20 55 70 64 |WITH*). | END Upd|
|00005460| 61 74 65 4c 65 66 74 3b | 0d 0d 20 20 50 52 4f 43 |ateLeft;|.. PROC|
|00005470| 45 44 55 52 45 20 55 70 | 64 61 74 65 52 69 67 68 |EDURE Up|dateRigh|
|00005480| 74 20 28 56 41 52 20 53 | 6f 75 72 63 65 2c 20 44 |t (VAR S|ource, D|
|00005490| 65 73 74 69 6e 61 74 69 | 6f 6e 3a 20 52 65 63 74 |estinati|on: Rect|
|000054a0| 3b 20 52 6f 77 3a 20 43 | 41 52 44 49 4e 41 4c 29 |; Row: C|ARDINAL)|
|000054b0| 3b 0d 20 20 42 45 47 49 | 4e 20 20 28 2a 55 70 64 |;. BEGI|N (*Upd|
|000054c0| 61 74 65 73 20 74 68 65 | 20 6f 62 6a 65 63 74 73 |ates the| objects|
|000054d0| 20 74 68 61 74 20 6d 6f | 76 65 20 66 72 6f 6d 20 | that mo|ve from |
|000054e0| 72 69 67 68 74 20 74 6f | 20 6c 65 66 74 2a 29 0d |right to| left*).|
|000054f0| 20 20 20 20 57 49 54 48 | 20 44 65 73 74 69 6e 61 | WITH| Destina|
|00005500| 74 69 6f 6e 20 44 4f 0d | 20 20 20 20 20 20 44 45 |tion DO.| DE|
|00005510| 43 20 28 6c 65 66 74 2c | 20 53 70 65 65 64 20 5b |C (left,| Speed [|
|00005520| 52 6f 77 5d 29 3b 20 44 | 45 43 20 28 72 69 67 68 |Row]); D|EC (righ|
|00005530| 74 2c 20 53 70 65 65 64 | 20 5b 52 6f 77 5d 29 3b |t, Speed| [Row]);|
|00005540| 0d 20 20 20 20 20 20 49 | 46 20 72 69 67 68 74 20 |. I|F right |
|00005550| 3c 3d 20 4c 65 66 74 45 | 64 67 65 20 54 48 45 4e |<= LeftE|dge THEN|
|00005560| 20 20 20 20 20 20 28 2a | 47 65 74 20 72 69 64 20 | (*|Get rid |
|00005570| 6f 66 20 74 68 65 20 6f | 62 6a 65 63 74 2a 29 0d |of the o|bject*).|
|00005580| 20 20 20 20 20 20 20 20 | 20 20 44 6f 6e 65 20 3a | | Done :|
|00005590| 3d 20 54 52 55 45 3b 0d | 20 20 20 20 20 20 20 20 |= TRUE;.| |
|000055a0| 20 20 52 45 54 55 52 4e | 3b 0d 20 20 20 20 20 20 | RETURN|;. |
|000055b0| 45 4e 44 3b 0d 20 20 20 | 20 20 20 49 46 20 72 69 |END;. | IF ri|
|000055c0| 67 68 74 20 3e 20 52 69 | 67 68 74 45 64 67 65 20 |ght > Ri|ghtEdge |
|000055d0| 54 48 45 4e 20 49 4e 43 | 4c 20 28 42 75 73 79 52 |THEN INC|L (BusyR|
|000055e0| 6f 77 73 2c 20 52 6f 77 | 29 20 45 4e 44 3b 0d 20 |ows, Row|) END;. |
|000055f0| 20 20 20 45 4e 44 3b 20 | 20 20 28 2a 57 49 54 48 | END; | (*WITH|
|00005600| 2a 29 0d 20 20 45 4e 44 | 20 55 70 64 61 74 65 52 |*). END| UpdateR|
|00005610| 69 67 68 74 3b 0d 0d 42 | 45 47 49 4e 20 20 28 2a |ight;..B|EGIN (*|
|00005620| 44 72 61 77 53 63 72 65 | 65 6e 2a 29 0d 20 20 53 |DrawScre|en*). S|
|00005630| 65 74 50 6f 72 74 20 28 | 52 65 61 6c 57 69 6e 64 |etPort (|RealWind|
|00005640| 6f 77 29 3b 0d 20 20 42 | 75 73 79 52 6f 77 73 20 |ow);. B|usyRows |
|00005650| 3a 3d 20 7b 30 2c 36 2c | 31 32 7d 3b 0d 20 20 46 |:= {0,6,|12};. F|
|00005660| 72 6f 67 53 68 6f 77 6e | 20 3a 3d 20 46 41 4c 53 |rogShown| := FALS|
|00005670| 45 3b 0d 20 20 50 6f 69 | 6e 74 65 72 20 3a 3d 20 |E;. Poi|nter := |
|00005680| 41 6c 6c 4f 62 6a 65 63 | 74 73 3b 0d 20 20 57 48 |AllObjec|ts;. WH|
|00005690| 49 4c 45 20 28 50 6f 69 | 6e 74 65 72 20 23 20 4e |ILE (Poi|nter # N|
|000056a0| 49 4c 29 20 44 4f 0d 20 | 20 20 20 57 49 54 48 20 |IL) DO. | WITH |
|000056b0| 50 6f 69 6e 74 65 72 5e | 20 44 4f 0d 20 20 20 20 |Pointer^| DO. |
|000056c0| 20 20 49 46 20 28 43 41 | 52 44 49 4e 41 4c 28 52 | IF (CA|RDINAL(R|
|000056d0| 6f 77 29 20 49 4e 20 52 | 6f 77 44 69 73 70 6c 61 |ow) IN R|owDispla|
|000056e0| 79 29 20 54 48 45 4e 0d | 20 20 20 20 20 20 20 20 |y) THEN.| |
|000056f0| 43 6f 70 79 42 69 74 73 | 28 53 74 6f 72 61 67 65 |CopyBits|(Storage|
|00005700| 42 4d 5e 2c 20 52 65 61 | 6c 42 4d 5e 2c 20 53 6f |BM^, Rea|lBM^, So|
|00005710| 75 72 63 65 2c 20 44 65 | 73 74 69 6e 61 74 69 6f |urce, De|stinatio|
|00005720| 6e 2c 20 73 72 63 43 6f | 70 79 2c 6e 6f 4d 61 73 |n, srcCo|py,noMas|
|00005730| 6b 29 3b 0d 20 20 20 20 | 20 20 45 4e 44 3b 0d 20 |k);. | END;. |
|00005740| 20 20 20 20 20 49 46 20 | 28 52 6f 77 20 3d 20 46 | IF |(Row = F|
|00005750| 72 6f 67 2e 52 6f 77 29 | 20 54 48 45 4e 0d 20 20 |rog.Row)| THEN. |
|00005760| 20 20 20 20 20 20 49 46 | 20 28 28 44 65 73 74 69 | IF| ((Desti|
|00005770| 6e 61 74 69 6f 6e 2e 6c | 65 66 74 2b 4c 65 66 74 |nation.l|eft+Left|
|00005780| 4d 20 3c 3d 20 46 72 6f | 67 2e 50 6f 73 58 29 20 |M <= Fro|g.PosX) |
|00005790| 41 4e 44 0d 20 20 20 20 | 20 20 20 20 20 20 20 28 |AND. | (|
|000057a0| 28 44 65 73 74 69 6e 61 | 74 69 6f 6e 2e 72 69 67 |(Destina|tion.rig|
|000057b0| 68 74 2d 52 69 67 68 74 | 4d 29 20 3e 3d 20 28 46 |ht-Right|M) >= (F|
|000057c0| 72 6f 67 2e 50 6f 73 58 | 20 2b 20 28 32 20 2a 20 |rog.PosX| + (2 * |
|000057d0| 48 61 6c 66 46 72 6f 67 | 57 29 29 29 29 20 0d 09 |HalfFrog|W)))) ..|
|000057e0| 54 48 45 4e 0d 20 20 20 | 20 20 20 20 20 20 20 44 |THEN. | D|
|000057f0| 72 61 77 46 72 6f 67 20 | 28 54 52 55 45 29 3b 20 |rawFrog |(TRUE); |
|00005800| 20 20 46 72 6f 67 53 68 | 6f 77 6e 20 3a 3d 20 54 | FrogSh|own := T|
|00005810| 52 55 45 3b 0d 20 20 20 | 20 20 20 20 20 45 4c 53 |RUE;. | ELS|
|00005820| 49 46 20 28 28 44 65 73 | 74 69 6e 61 74 69 6f 6e |IF ((Des|tination|
|00005830| 2e 6c 65 66 74 20 3c 3d | 20 28 46 72 6f 67 2e 50 |.left <=| (Frog.P|
|00005840| 6f 73 58 20 2b 20 28 32 | 20 2a 20 48 61 6c 66 46 |osX + (2| * HalfF|
|00005850| 72 6f 67 57 29 29 29 20 | 41 4e 44 0d 20 20 20 20 |rogW))) |AND. |
|00005860| 20 20 20 20 20 20 20 20 | 28 28 44 65 73 74 69 6e | |((Destin|
|00005870| 61 74 69 6f 6e 2e 72 69 | 67 68 74 29 20 3e 3d 20 |ation.ri|ght) >= |
|00005880| 46 72 6f 67 2e 50 6f 73 | 58 29 29 20 54 48 45 4e |Frog.Pos|X)) THEN|
|00005890| 0d 20 20 20 20 20 20 20 | 20 20 20 44 72 61 77 46 |. | DrawF|
|000058a0| 72 6f 67 20 28 46 41 4c | 53 45 29 3b 20 20 20 46 |rog (FAL|SE); F|
|000058b0| 72 6f 67 53 68 6f 77 6e | 20 3a 3d 20 54 52 55 45 |rogShown| := TRUE|
|000058c0| 3b 0d 20 20 20 20 20 20 | 20 20 45 4e 44 3b 0d 20 |;. | END;. |
|000058d0| 20 20 20 20 20 45 4e 44 | 3b 0d 20 20 20 20 20 20 | END|;. |
|000058e0| 44 6f 6e 65 20 3a 3d 20 | 46 41 4c 53 45 3b 0d 20 |Done := |FALSE;. |
|000058f0| 20 20 20 20 20 49 46 20 | 4c 65 66 74 20 54 48 45 | IF |Left THE|
|00005900| 4e 0d 20 20 20 20 20 20 | 20 20 55 70 64 61 74 65 |N. | Update|
|00005910| 4c 65 66 74 20 28 53 6f | 75 72 63 65 2c 20 44 65 |Left (So|urce, De|
|00005920| 73 74 69 6e 61 74 69 6f | 6e 2c 20 52 6f 77 29 3b |stinatio|n, Row);|
|00005930| 0d 20 20 20 20 20 20 45 | 4c 53 45 20 55 70 64 61 |. E|LSE Upda|
|00005940| 74 65 52 69 67 68 74 20 | 28 53 6f 75 72 63 65 2c |teRight |(Source,|
|00005950| 20 44 65 73 74 69 6e 61 | 74 69 6f 6e 2c 20 52 6f | Destina|tion, Ro|
|00005960| 77 29 3b 0d 20 20 20 20 | 20 20 45 4e 44 3b 0d 20 |w);. | END;. |
|00005970| 20 20 20 20 20 44 65 6c | 65 74 65 4f 62 6a 65 63 | Del|eteObjec|
|00005980| 74 20 28 44 6f 6e 65 2c | 20 41 6c 6c 4f 62 6a 65 |t (Done,| AllObje|
|00005990| 63 74 73 2c 20 50 6f 69 | 6e 74 65 72 2c 20 4c 61 |cts, Poi|nter, La|
|000059a0| 73 74 29 3b 0d 20 20 20 | 20 45 4e 44 3b 20 20 20 |st);. | END; |
|000059b0| 20 20 20 20 28 2a 57 49 | 54 48 20 50 6f 69 6e 74 | (*WI|TH Point|
|000059c0| 65 72 5e 20 44 4f 2a 29 | 0d 20 20 45 4e 44 3b 20 |er^ DO*)|. END; |
|000059d0| 20 20 28 2a 57 48 49 4c | 45 20 28 50 6f 69 6e 74 | (*WHIL|E (Point|
|000059e0| 65 72 20 23 20 4e 49 4c | 2a 29 0d 20 20 49 46 20 |er # NIL|*). IF |
|000059f0| 4e 4f 54 20 46 72 6f 67 | 53 68 6f 77 6e 20 54 48 |NOT Frog|Shown TH|
|00005a00| 45 4e 20 20 20 44 72 61 | 77 46 72 6f 67 20 28 46 |EN Dra|wFrog (F|
|00005a10| 41 4c 53 45 29 3b 20 20 | 20 20 45 4e 44 3b 0d 20 |ALSE); | END;. |
|00005a20| 20 49 46 20 28 43 41 52 | 44 49 4e 41 4c 28 46 72 | IF (CAR|DINAL(Fr|
|00005a30| 6f 67 2e 52 6f 77 29 20 | 49 4e 20 4c 65 66 74 4d |og.Row) |IN LeftM|
|00005a40| 29 20 54 48 45 4e 20 20 | 28 2a 49 66 20 66 72 6f |) THEN |(*If fro|
|00005a50| 67 20 6f 6e 20 74 75 72 | 74 6c 65 20 6f 72 20 6c |g on tur|tle or l|
|00005a60| 6f 67 2c 20 75 70 64 61 | 74 65 2a 29 0d 20 20 20 |og, upda|te*). |
|00005a70| 20 49 46 20 28 28 46 72 | 6f 67 2e 50 6f 73 58 20 | IF ((Fr|og.PosX |
|00005a80| 2b 20 53 70 65 65 64 20 | 5b 46 72 6f 67 2e 52 6f |+ Speed |[Frog.Ro|
|00005a90| 77 5d 20 2b 20 48 61 6c | 66 46 72 6f 67 57 29 20 |w] + Hal|fFrogW) |
|00005aa0| 3c 20 52 69 67 68 74 45 | 64 67 65 29 20 54 48 45 |< RightE|dge) THE|
|00005ab0| 4e 0d 20 20 20 20 20 20 | 46 72 6f 67 2e 50 6f 73 |N. |Frog.Pos|
|00005ac0| 58 20 3a 3d 20 28 46 72 | 6f 67 2e 50 6f 73 58 20 |X := (Fr|og.PosX |
|00005ad0| 2b 20 53 70 65 65 64 20 | 5b 46 72 6f 67 2e 52 6f |+ Speed |[Frog.Ro|
|00005ae0| 77 5d 29 3b 0d 20 20 20 | 20 45 4c 53 45 20 46 72 |w]);. | ELSE Fr|
|00005af0| 6f 67 2e 43 72 6f 61 6b | 65 64 20 3a 3d 20 54 52 |og.Croak|ed := TR|
|00005b00| 55 45 3b 20 20 45 4e 44 | 3b 0d 20 20 45 4c 53 49 |UE; END|;. ELSI|
|00005b10| 46 20 28 43 41 52 44 49 | 4e 41 4c 28 46 72 6f 67 |F (CARDI|NAL(Frog|
|00005b20| 2e 52 6f 77 29 20 49 4e | 20 52 69 67 68 74 4d 29 |.Row) IN| RightM)|
|00005b30| 20 54 48 45 4e 0d 20 20 | 20 20 49 46 20 28 46 72 | THEN. | IF (Fr|
|00005b40| 6f 67 2e 50 6f 73 58 20 | 3e 20 28 4c 65 66 74 45 |og.PosX |> (LeftE|
|00005b50| 64 67 65 20 2b 20 53 70 | 65 65 64 20 5b 46 72 6f |dge + Sp|eed [Fro|
|00005b60| 67 2e 52 6f 77 5d 20 2b | 20 48 61 6c 66 46 72 6f |g.Row] +| HalfFro|
|00005b70| 67 57 29 29 20 20 54 48 | 45 4e 0d 20 20 20 20 20 |gW)) TH|EN. |
|00005b80| 20 46 72 6f 67 2e 50 6f | 73 58 20 3a 3d 20 28 46 | Frog.Po|sX := (F|
|00005b90| 72 6f 67 2e 50 6f 73 58 | 20 2d 20 53 70 65 65 64 |rog.PosX| - Speed|
|00005ba0| 20 5b 46 72 6f 67 2e 52 | 6f 77 5d 29 3b 0d 20 20 | [Frog.R|ow]);. |
|00005bb0| 20 20 45 4c 53 45 20 46 | 72 6f 67 2e 43 72 6f 61 | ELSE F|rog.Croa|
|00005bc0| 6b 65 64 20 3a 3d 20 54 | 52 55 45 3b 20 20 20 45 |ked := T|RUE; E|
|00005bd0| 4e 44 3b 20 20 20 20 45 | 4e 44 3b 0d 20 20 20 20 |ND; E|ND;. |
|00005be0| 0d 20 20 41 64 6a 75 73 | 74 43 6f 6e 74 72 6f 6c |. Adjus|tControl|
|00005bf0| 73 3b 0d 0d 20 20 20 20 | 20 52 61 6e 64 6f 6d 20 |s;.. | Random |
|00005c00| 3a 3d 20 28 52 61 6e 64 | 6f 6d 2a 32 35 2b 31 29 |:= (Rand|om*25+1)|
|00005c10| 20 4d 4f 44 20 36 34 3b | 0d 20 20 20 20 20 0d 20 | MOD 64;|. . |
|00005c20| 20 20 20 20 41 64 64 4f | 62 6a 65 63 74 20 28 0d | AddO|bject (.|
|00005c30| 20 20 20 20 20 20 20 20 | 20 20 20 20 20 20 20 20 | | |
|00005c40| 49 4e 54 45 47 45 52 28 | 20 52 61 6e 64 6f 6d 20 |INTEGER(| Random |
|00005c50| 4d 4f 44 20 36 34 29 0d | 09 20 20 20 20 20 20 20 |MOD 64).|. |
|00005c60| 29 3b 0d 0d 20 20 0d 20 | 20 20 20 20 20 20 20 20 |);.. . | |
|00005c70| 28 2a 4f 6e 63 65 20 69 | 6e 20 61 20 77 68 69 6c |(*Once i|n a whil|
|00005c80| 65 2c 20 61 64 64 20 61 | 6e 20 6f 62 6a 65 63 74 |e, add a|n object|
|00005c90| 2a 29 0d 45 4e 44 20 44 | 72 61 77 53 63 72 65 65 |*).END D|rawScree|
|00005ca0| 6e 3b 0d 0d 0d 50 52 4f | 43 45 44 55 52 45 20 44 |n;...PRO|CEDURE D|
|00005cb0| 72 61 77 46 72 6f 67 20 | 28 48 69 74 3a 20 42 4f |rawFrog |(Hit: BO|
|00005cc0| 4f 4c 45 41 4e 29 3b 0d | 20 20 28 2a 54 68 69 73 |OLEAN);.| (*This|
|00005cd0| 20 6f 70 65 72 61 74 69 | 6f 6e 20 69 73 20 63 6f | operati|on is co|
|00005ce0| 6d 70 6c 65 78 3a 20 66 | 69 72 73 74 20 6f 66 20 |mplex: f|irst of |
|00005cf0| 61 6c 6c 20 69 74 20 64 | 65 63 69 64 65 73 20 77 |all it d|ecides w|
|00005d00| 68 65 74 68 65 72 20 74 | 68 65 20 63 6f 6c 6c 69 |hether t|he colli|
|00005d10| 73 69 6f 6e 20 69 73 20 | 77 65 6c 63 6f 6d 65 0d |sion is |welcome.|
|00005d20| 20 20 20 20 6f 72 20 6e | 6f 74 20 28 62 61 73 65 | or n|ot (base|
|00005d30| 64 20 6f 6e 20 74 68 65 | 20 72 6f 77 20 6e 75 6d |d on the| row num|
|00005d40| 62 65 72 29 20 61 6e 64 | 20 69 66 20 6e 6f 74 20 |ber) and| if not |
|00005d50| 69 74 20 73 65 74 73 20 | 74 68 65 20 62 6f 6f 6c |it sets |the bool|
|00005d60| 65 61 6e 20 27 43 72 6f | 61 6b 65 64 27 2e 0d 20 |ean 'Cro|aked'.. |
|00005d70| 20 20 20 54 68 65 6e 2c | 20 69 66 20 69 74 20 69 | Then,| if it i|
|00005d80| 73 20 6e 6f 74 20 64 65 | 61 64 2c 20 69 66 20 27 |s not de|ad, if '|
|00005d90| 4d 6f 76 65 64 27 20 69 | 73 20 73 65 74 20 74 68 |Moved' i|s set th|
|00005da0| 65 6e 20 74 68 65 20 62 | 69 74 6d 61 70 20 6f 66 |en the b|itmap of|
|00005db0| 20 74 68 65 20 6f 6c 64 | 20 66 72 6f 67 20 70 6f | the old| frog po|
|00005dc0| 73 69 74 69 6f 6e 0d 20 | 20 20 20 28 6d 6f 76 65 |sition. | (move|
|00005dd0| 64 20 62 79 20 53 70 65 | 65 64 5b 52 6f 77 5d 2c |d by Spe|ed[Row],|
|00005de0| 20 6f 66 20 63 6f 75 72 | 73 65 29 20 69 73 20 63 | of cour|se) is c|
|00005df0| 6f 70 69 65 64 20 62 61 | 63 6b 2c 20 74 68 65 20 |opied ba|ck, the |
|00005e00| 6e 65 77 20 6f 6e 65 20 | 69 73 20 73 61 76 65 64 |new one |is saved|
|00005e10| 2e 20 20 54 68 65 20 6f | 6c 64 0d 20 20 20 20 70 |. The o|ld. p|
|00005e20| 6f 73 69 74 69 6f 6e 20 | 69 73 20 6b 6e 6f 77 6e |osition |is known|
|00005e30| 20 62 79 20 74 68 65 20 | 64 69 72 65 63 74 69 6f | by the |directio|
|00005e40| 6e 20 6f 66 20 74 68 65 | 20 66 72 6f 67 2e 20 20 |n of the| frog. |
|00005e50| 20 41 66 74 65 72 20 61 | 6c 6c 20 74 68 69 73 2c | After a|ll this,|
|00005e60| 20 74 68 65 20 66 72 6f | 67 20 69 73 0d 20 20 20 | the fro|g is. |
|00005e70| 20 64 72 61 77 6e 20 69 | 6e 20 74 68 65 20 63 75 | drawn i|n the cu|
|00005e80| 72 72 65 6e 74 20 28 6e | 65 77 29 20 70 6f 73 69 |rrent (n|ew) posi|
|00005e90| 74 69 6f 6e 2c 20 77 68 | 69 63 68 20 69 73 20 75 |tion, wh|ich is u|
|00005ea0| 70 64 61 74 65 64 20 62 | 79 20 74 68 65 20 73 70 |pdated b|y the sp|
|00005eb0| 65 65 64 20 6f 66 20 74 | 68 65 20 72 6f 77 0d 20 |eed of t|he row. |
|00005ec0| 20 20 20 69 66 20 74 68 | 65 20 66 72 6f 67 20 69 | if th|e frog i|
|00005ed0| 73 20 6f 6e 20 74 68 65 | 20 72 69 76 65 72 2e 2a |s on the| river.*|
|00005ee0| 29 0d 43 4f 4e 53 54 20 | 20 52 6f 61 64 20 20 3d |).CONST | Road =|
|00005ef0| 20 7b 31 2e 2e 35 7d 3b | 0d 20 20 20 20 20 20 20 | {1..5};|. |
|00005f00| 52 69 76 65 72 20 3d 20 | 7b 37 2e 2e 31 31 7d 3b |River = |{7..11};|
|00005f10| 0d 20 20 20 20 20 20 20 | 4c 65 66 74 52 20 3d 20 |. |LeftR = |
|00005f20| 7b 32 2c 20 34 2c 20 38 | 2c 20 39 2c 20 31 31 7d |{2, 4, 8|, 9, 11}|
|00005f30| 3b 0d 20 20 20 20 20 20 | 20 4c 65 66 74 4d 20 3d |;. | LeftM =|
|00005f40| 20 7b 38 2c 20 39 2c 20 | 31 31 7d 3b 0d 20 20 20 | {8, 9, |11};. |
|00005f50| 20 20 20 20 52 69 67 68 | 74 4d 3d 20 7b 37 2c 20 | Righ|tM= {7, |
|00005f60| 31 30 7d 3b 0d 0d 56 41 | 52 20 52 65 61 6c 42 44 |10};..VA|R RealBD|
|00005f70| 3a 20 52 65 63 74 3b 0d | 20 20 20 20 53 61 76 65 |: Rect;.| Save|
|00005f80| 42 44 2c 20 53 68 61 64 | 6f 77 42 44 20 3a 20 52 |BD, Shad|owBD : R|
|00005f90| 65 63 74 3b 0d 0d 42 45 | 47 49 4e 0d 20 20 49 46 |ect;..BE|GIN. IF|
|00005fa0| 20 48 69 74 20 54 48 45 | 4e 0d 20 20 20 20 49 46 | Hit THE|N. IF|
|00005fb0| 20 28 43 41 52 44 49 4e | 41 4c 28 46 72 6f 67 2e | (CARDIN|AL(Frog.|
|00005fc0| 52 6f 77 29 20 49 4e 20 | 52 6f 61 64 29 20 54 48 |Row) IN |Road) TH|
|00005fd0| 45 4e 0d 20 20 20 20 20 | 20 46 72 6f 67 2e 43 72 |EN. | Frog.Cr|
|00005fe0| 6f 61 6b 65 64 20 3a 3d | 20 54 52 55 45 3b 0d 20 |oaked :=| TRUE;. |
|00005ff0| 20 20 20 45 4e 44 3b 0d | 20 20 45 4c 53 49 46 20 | END;.| ELSIF |
|00006000| 28 43 41 52 44 49 4e 41 | 4c 28 46 72 6f 67 2e 52 |(CARDINA|L(Frog.R|
|00006010| 6f 77 29 20 49 4e 20 52 | 69 76 65 72 29 20 54 48 |ow) IN R|iver) TH|
|00006020| 45 4e 0d 20 20 20 20 46 | 72 6f 67 2e 43 72 6f 61 |EN. F|rog.Croa|
|00006030| 6b 65 64 20 3a 3d 20 54 | 52 55 45 3b 0d 20 20 45 |ked := T|RUE;. E|
|00006040| 4e 44 3b 0d 20 20 57 49 | 54 48 20 46 72 6f 67 20 |ND;. WI|TH Frog |
|00006050| 44 4f 20 20 0d 20 20 20 | 20 4d 6f 76 65 64 20 3a |DO . | Moved :|
|00006060| 3d 20 4d 6f 76 65 64 20 | 41 4e 44 20 4e 4f 54 20 |= Moved |AND NOT |
|00006070| 43 72 6f 61 6b 65 64 3b | 0d 20 20 45 4e 44 3b 0d |Croaked;|. END;.|
|00006080| 20 20 0d 20 20 57 49 54 | 48 20 46 72 6f 67 20 44 | . WIT|H Frog D|
|00006090| 4f 0d 20 20 20 20 20 0d | 20 20 20 20 57 49 54 48 |O. .| WITH|
|000060a0| 20 52 65 61 6c 42 44 20 | 44 4f 20 6c 65 66 74 3a | RealBD |DO left:|
|000060b0| 3d 46 72 6f 67 2e 50 6f | 73 58 3b 20 72 69 67 68 |=Frog.Po|sX; righ|
|000060c0| 74 3a 3d 6c 65 66 74 2b | 46 72 6f 67 57 3b 0d 09 |t:=left+|FrogW;..|
|000060d0| 09 20 20 20 20 20 62 6f | 74 74 6f 6d 3a 3d 2d 52 |. bo|ttom:=-R|
|000060e0| 6f 77 2a 43 68 61 72 48 | 3b 20 74 6f 70 3a 3d 62 |ow*CharH|; top:=b|
|000060f0| 6f 74 74 6f 6d 2d 43 68 | 61 72 48 0d 20 20 20 20 |ottom-Ch|arH. |
|00006100| 45 4e 44 3b 0d 20 20 20 | 20 49 46 20 4d 6f 76 65 |END;. | IF Move|
|00006110| 64 20 54 48 45 4e 0d 20 | 20 20 20 20 43 6f 70 79 |d THEN. | Copy|
|00006120| 42 69 74 73 20 28 52 65 | 61 6c 42 4d 5e 2c 20 53 |Bits (Re|alBM^, S|
|00006130| 74 6f 72 61 67 65 42 4d | 5e 2c 20 52 65 61 6c 42 |torageBM|^, RealB|
|00006140| 44 2c 20 42 65 68 69 6e | 64 41 72 65 61 2c 20 73 |D, Behin|dArea, s|
|00006150| 72 63 43 6f 70 79 2c 20 | 6e 6f 4d 61 73 6b 29 3b |rcCopy, |noMask);|
|00006160| 0d 20 20 20 20 45 4e 44 | 3b 0d 20 20 0d 20 20 20 |. END|;. . |
|00006170| 20 49 46 20 4e 4f 54 20 | 43 72 6f 61 6b 65 64 20 | IF NOT |Croaked |
|00006180| 54 48 45 4e 20 43 41 53 | 45 20 4f 72 69 65 6e 74 |THEN CAS|E Orient|
|00006190| 61 74 69 6f 6e 20 4f 46 | 0d 20 20 20 20 20 20 75 |ation OF|. u|
|000061a0| 70 20 20 20 3a 20 53 61 | 76 65 42 44 20 3a 3d 20 |p : Sa|veBD := |
|000061b0| 46 72 6f 67 55 3b 20 53 | 68 61 64 6f 77 42 44 20 |FrogU; S|hadowBD |
|000061c0| 3a 3d 20 53 68 61 64 6f | 77 55 20 20 7c 0d 20 20 |:= Shado|wU |. |
|000061d0| 20 20 20 20 64 6f 77 6e | 20 3a 20 53 61 76 65 42 | down| : SaveB|
|000061e0| 44 20 3a 3d 20 46 72 6f | 67 44 3b 20 53 68 61 64 |D := Fro|gD; Shad|
|000061f0| 6f 77 42 44 20 3a 3d 20 | 53 68 61 64 6f 77 44 20 |owBD := |ShadowD |
|00006200| 20 7c 0d 20 20 20 20 20 | 20 6c 65 66 74 20 3a 20 | |. | left : |
|00006210| 53 61 76 65 42 44 20 3a | 3d 20 46 72 6f 67 4c 3b |SaveBD :|= FrogL;|
|00006220| 20 53 68 61 64 6f 77 42 | 44 20 3a 3d 20 53 68 61 | ShadowB|D := Sha|
|00006230| 64 6f 77 4c 20 20 7c 0d | 20 20 20 20 20 20 72 69 |dowL |.| ri|
|00006240| 67 68 74 3a 20 53 61 76 | 65 42 44 20 3a 3d 20 46 |ght: Sav|eBD := F|
|00006250| 72 6f 67 52 3b 20 53 68 | 61 64 6f 77 42 44 20 3a |rogR; Sh|adowBD :|
|00006260| 3d 20 53 68 61 64 6f 77 | 52 0d 20 20 20 20 20 20 |= Shadow|R. |
|00006270| 45 4e 44 0d 20 20 20 20 | 45 4c 53 45 0d 20 20 20 |END. |ELSE. |
|00006280| 20 20 20 53 61 76 65 42 | 44 20 3a 3d 20 53 70 6c | SaveB|D := Spl|
|00006290| 61 73 68 3b 20 53 68 61 | 64 6f 77 42 44 20 3a 3d |ash; Sha|dowBD :=|
|000062a0| 20 53 68 61 64 6f 77 55 | 0d 20 20 20 20 45 4e 44 | ShadowU|. END|
|000062b0| 3b 0d 20 20 20 20 43 6f | 70 79 42 69 74 73 20 28 |;. Co|pyBits (|
|000062c0| 53 74 6f 72 61 67 65 42 | 4d 5e 2c 20 52 65 61 6c |StorageB|M^, Real|
|000062d0| 42 4d 5e 2c 20 53 68 61 | 64 6f 77 42 44 2c 20 52 |BM^, Sha|dowBD, R|
|000062e0| 65 61 6c 42 44 2c 73 72 | 63 42 69 63 2c 6e 6f 4d |ealBD,sr|cBic,noM|
|000062f0| 61 73 6b 29 3b 0d 20 20 | 20 20 43 6f 70 79 42 69 |ask);. | CopyBi|
|00006300| 74 73 20 28 53 74 6f 72 | 61 67 65 42 4d 5e 2c 20 |ts (Stor|ageBM^, |
|00006310| 52 65 61 6c 42 4d 5e 2c | 20 53 61 76 65 42 44 2c |RealBM^,| SaveBD,|
|00006320| 20 52 65 61 6c 42 44 2c | 20 73 72 63 4f 72 2c 20 | RealBD,| srcOr, |
|00006330| 6e 6f 4d 61 73 6b 29 3b | 0d 20 20 20 20 0d 20 20 |noMask);|. . |
|00006340| 20 20 4d 6f 76 65 64 20 | 3a 3d 20 46 41 4c 53 45 | Moved |:= FALSE|
|00006350| 0d 20 20 45 4e 44 3b 20 | 20 20 20 28 2a 57 49 54 |. END; | (*WIT|
|00006360| 48 20 46 72 6f 67 2a 29 | 0d 45 4e 44 20 44 72 61 |H Frog*)|.END Dra|
|00006370| 77 46 72 6f 67 3b 0d 0d | 50 52 4f 43 45 44 55 52 |wFrog;..|PROCEDUR|
|00006380| 45 20 53 65 74 75 70 4c | 6f 67 20 28 56 41 52 20 |E SetupL|og (VAR |
|00006390| 50 6f 69 6e 74 65 72 3a | 20 4c 69 73 74 45 6c 3b |Pointer:| ListEl;|
|000063a0| 20 54 79 70 65 3a 20 43 | 41 52 44 49 4e 41 4c 29 | Type: C|ARDINAL)|
|000063b0| 3b 0d 20 20 28 2a 43 72 | 65 61 74 65 73 20 61 20 |;. (*Cr|eates a |
|000063c0| 6e 65 77 20 70 6f 69 6e | 74 65 72 20 66 6f 72 20 |new poin|ter for |
|000063d0| 61 20 4c 6f 67 20 61 6e | 64 20 73 65 74 73 20 73 |a Log an|d sets s|
|000063e0| 6f 75 72 63 65 2e 78 2c | 20 73 6f 75 72 63 65 2e |ource.x,| source.|
|000063f0| 79 20 61 6e 64 20 57 69 | 64 74 68 2a 29 0d 43 4f |y and Wi|dth*).CO|
+--------+-------------------------+-------------------------+--------+--------+
Only 25.0 KB of data is shown above.