procedure addscore (scorevalue : integer); forward;
type
string80 = string[80];
string20 = string[20];
VAR
plane0 : BitMap;
plane2 : BitMap;
plane1 : BitMap;
plane3 : BitMap;
ColorMap : Cmap;
ScrollMap : Smap;
parameter : string80;
TopTenFile : file;
name : array [1..20] of char;
ScoreDate : string[8];
Pointshi : integer;
Pointslo : integer;
lines : integer;
TopTenRecord : array [1..384] of byte;
inserted : boolean;
P : integer;
Q : integer;
R : integer;
S : integer;
i : integer;
j : integer;
fruitstart : integer;
fruitend : integer;
fruitlength : integer;
fruitnr : integer;
score : integer;
scoreaddon : integer;
scorecarry : integer;
bullets : integer;
bulletsmax : integer;
hits : integer;
PowerPill : integer;
Lives : integer;
nextpacman : integer;
xkoordpacman : integer;
ykoordpacman : integer;
pacmandir : integer;
nextpacmandir : integer;
aggression : integer;
speed : integer;
speedcounter1 : integer;
speedcounter2 : integer;
speedloop1 : integer;
speedloop2 : integer;
movecount : integer;
nextghost : integer;
enemydir : array [2..5] of integer;
xkoord : array [2..5] of integer;
ykoord : array [2..5] of integer;
enemyeaten : array [2..5] of boolean;
horizontallines : array [0..9] of integer;
verticallines : array [0..8] of integer;
enemy : array [0..719] of integer;
pacman : array [0..639] of integer;
dots : array [1..29] of integer;
digit : array [0..219] of integer;
layoutenemy : array [1..675] of integer;
layoutpacman : array [1..675] of integer;
gethomefast : array [1..135] of integer;
gethome : array [1..135] of integer;
bulletsplane : array [1..34] of integer;
closed : boolean;
collision : boolean;
fruitdisplay : boolean;
scorestring : longstring;
CONST
black: byte=0; green: byte=1; red: byte=2; redviolet: byte=3;
purple: byte=4; brown: byte=5; yellow: byte=6; white: byte=7;
switch1: byte=8; switch2: byte=9; switch3: byte=10; orange: byte=11;
blue: byte=12; turquoise: byte=13; burgandy: byte=14; pink: byte=15;
digitwidth : integer = 8;
kraftmax : integer = 700;
pacmanstartx : integer = 206;
pacmanstarty : integer = 99;
enemystartx : integer = 140;
enemystarty : integer = 99;
pacmenplacex : integer = 353;
mask4 : array [0..8] of integer = (
$01FF,$80FF,$C07F,$E03F,$F01F,$F80F,$FC07,$FE03,$FF01);
mask5 : array [9..15] of integer = (
$FF80,$FFC0,$FFE0,$FFF0,$FFF8,$FFFC,$FFFE);
mask6 : array [9..15] of integer = (
$FFFF,$7FFF,$3FFF,$1FFF,$0FFF,$07FF,$03FF);
maskleft : array [0..15] of integer = (
$7FFF,$BFFF,$DFFF,$EFFF,$F7FF,$FBFF,$FDFF,$FEFF,
$FF7F,$FFBF,$FFDF,$FFEF,$FFF7,$FFFB,$FFFD,$FFFE);
maskright : array [0..15] of integer = (
$7FFF,$3FFF,$9FFF,$CFFF,$E7FF,$F3FF,$F9FF,$FCFF,
$FE7F,$FF3F,$FF9F,$FFCF,$FFE7,$FFF3,$FFF9,$FFFC);
digitarray : array [0..109] of integer = (
$00FE,$0082,$0082,$0082,$0082,$0082,$0082,$0082,$0082,$0082,$00FE,
$0002,$0002,$0002,$0002,$0002,$0002,$0002,$0002,$0002,$0002,$0002,
$00FE,$0002,$0002,$0002,$0002,$00FE,$0080,$0080,$0080,$0080,$00FE,
$00FE,$0002,$0002,$0002,$0002,$00FE,$0002,$0002,$0002,$0002,$00FE,
$0082,$0082,$0082,$0082,$0082,$00FE,$0002,$0002,$0002,$0002,$0002,
$00FE,$0080,$0080,$0080,$0080,$00FE,$0002,$0002,$0002,$0002,$00FE,
$0080,$0080,$0080,$0080,$0080,$00FE,$0082,$0082,$0082,$0082,$00FE,
$00FE,$0002,$0002,$0002,$0002,$0002,$0002,$0002,$0002,$0002,$0002,
$00FE,$0082,$0082,$0082,$0082,$00FE,$0082,$0082,$0082,$0082,$00FE,
$00FE,$0082,$0082,$0082,$0082,$00FE,$0002,$0002,$0002,$0002,$0002);
fruitarray : array [0..419] of integer = (
$0000,$0000,$0600,$0000,$0100,$0000,$0000,$0080,$0000,$0080,$0000,
$0080,$0100,$00C0,$0100,$00C0,$0100,$00C0,$0300,$00E0,$0300,$00E0,
$0700,$00F0,$0F00,$00F8,$0F00,$00F8,$1F00,$00FC,$1F00,$00FC,$1F00,
$00FC,$1F00,$00FC,$0F00,$00F8,$0300,$00E0,$0000,$0000,
$0000,$0000,$1A00,$C0DD,$7700,$007B,$0E00,$00DC,$0F00,$0078,$0300,
$00F0,$0100,$00E0,$0300,$00F0,$0700,$00F8,$0700,$00F8,$0F00,$00FC,
$0F00,$00FC,$0F00,$00FC,$0F00,$00FC,$0F00,$00FC,$0F00,$00FC,$0700,
$00F8,$0700,$00F8,$0300,$00F0,$0100,$00E0,$0000,$0000,
$0000,$0000,$0000,$0000,$0000,$0000,$0000,$0000,$0000,$0000,$0000,
$0080,$0100,$00C0,$0300,$00E0,$0700,$00F0,$0700,$00F0,$0F00,$00F8,
$0F00,$00F8,$0F00,$00F8,$0F00,$00F8,$0700,$00F0,$0700,$00F0,$0300,
$00E0,$0100,$00C0,$0000,$0080,$0000,$0000,$0000,$0000,
$0000,$0000,$0000,$0000,$0000,$0000,$0000,$0000,$0000,$0000,$0100,
$00E0,$0F00,$00FC,$3F00,$00FF,$7F00,$80FF,$7F00,$80FF,$7F00,$80FF,
$7F00,$80FF,$3F00,$00FF,$3F00,$00FF,$3F00,$00FF,$1F00,$00FE,$1F00,
$00FE,$0F00,$00FC,$0700,$00F8,$0100,$00E0,$0000,$0000,
$0000,$0000,$0000,$0000,$0200,$0000,$0100,$0000,$0100,$0000,$0000,
$0080,$0000,$0080,$0000,$0080,$0100,$00C0,$0300,$00E0,$0300,$00E0,
$0700,$00F0,$0700,$00F0,$0700,$00F0,$0700,$00F0,$0700,$00F0,$0300,
$00E0,$0300,$00E0,$0100,$00C0,$0000,$0000,$0000,$0000,
$0000,$0000,$0000,$0000,$0000,$0080,$0000,$0040,$0000,$0040,$0000,
$00E0,$0100,$00F0,$0300,$00F8,$0700,$00FC,$0700,$00FC,$0300,$00F8,
$0300,$00F8,$0100,$00F0,$0100,$00F0,$0000,$00E0,$0000,$00E0,$0000,
$0040,$0000,$0000,$0000,$0000,$0000,$0000,$0000,$0000,
$0000,$0030,$0000,$0060,$0000,$00C0,$0000,$00C0,$0000,$00C0,$0800,
$0088,$1D00,$00DC,$1D00,$00DC,$2A00,$00AA,$7700,$0077,$7700,$0077,
$2A00,$00AA,$1D00,$00DC,$1D00,$00DC,$0A00,$00A8,$0700,$0070,$0700,
$0070,$0200,$00A0,$0100,$00C0,$0100,$00C0,$0000,$0080,
$0000,$0000,$0001,$0000,$C001,$0000,$C001,$0000,$E001,$0000,$F001,
$0000,$F800,$0000,$F800,$0000,$7C00,$0000,$7E00,$0000,$3F00,$0000,
$1F00,$0080,$0F00,$00C0,$0700,$00E0,$0300,$00F0,$0100,$00FC,$0000,
$00FF,$0000,$803F,$0000,$C00F,$0000,$0000,$0000,$0000,
$0000,$0000,$0100,$00E0,$0300,$00F0,$0F00,$00FC,$3F00,$00FF,$7F00,
$80FF,$7F00,$80FF,$FF00,$C0FF,$FF00,$C0FF,$FF01,$E0FF,$FF01,$E0FF,
$FF01,$E0FF,$FF01,$E0FF,$FF00,$C0FF,$FF00,$C0FF,$7F00,$80FF,$7F00,
$80FF,$3F00,$00FF,$0F00,$00FC,$0300,$00F0,$0000,$0000,
$0000,$0000,$0000,$0000,$0000,$0006,$0000,$000C,$0000,$0018,$0000,
$0030,$0000,$0060,$0000,$00C0,$0300,$00F0,$0700,$00F8,$0F00,$00FC,
$0F00,$00FC,$1F00,$00FE,$1F00,$00FE,$1F00,$00FE,$0F00,$00FC,$0F00,
$00FC,$0700,$00F8,$0100,$00E0,$0000,$0000,$0000,$0000);
horizontallinesconst : array [0..69] of integer = (
$FEFE,$6C6A,$144C,$1854,$2EA4,$0A94,$7E54,$1484,$4A94,$FEFE,
$FEFE,$5090,$D210,$4A08,$020A,$4214,$D22A,$5ACC,$52B4,$FEFE,
$FEFE,$6FDC,$3CF4,$2860,$2234,$3234,$1E30,$0414,$27B4,$FEFE,
$FEFE,$746C,$646C,$C652,$C392,$6204,$0FD2,$16E0,$6430,$FEFE,
$FEFE,$4730,$01A8,$0720,$620A,$3A08,$14C2,$3884,$582A,$FEFE,
$FEFE,$5FE4,$BA4C,$825C,$030C,$0394,$2648,$6C18,$6CA8,$FEFE,
$FEFE,$3E5C,$32A0,$6140,$CA04,$171A,$18B0,$59E8,$7AB8,$FEFE);
verticallinesconst : array [0..62] of integer = (
$8183,$D79D,$FBF7,$E1A9,$FDEF,$B021,$E5BF,$F3FB,$8C01,
$85C1,$9E3F,$80C7,$F331,$FDED,$87CD,$9811,$E307,$84C1,
$8001,$8001,$C38F,$F58F,$CDE9,$E0C7,$F6DF,$D961,$8801,
$8181,$87D1,$9985,$B81F,$9D6D,$C0B1,$F00D,$C9CF,$89C1,
$9005,$CC43,$BA7F,$DC4D,$81F3,$C497,$A31D,$C369,$8183,
$9101,$A01B,$F3F1,$BC01,$FD77,$FC3B,$89D7,$DB63,$81CD,
$A181,$C0AB,$CE5F,$97BB,$B9F1,$E467,$B707,$C20F,$81C1);
(* Keyboard Routines *)
type registers = record case integer of
1: (ax,bx,cx,dx,bp,si,di,ds,es,flags : integer);
2: (al,ah,bl,bh,cl,ch,dl,dh : byte);
end;
type F_Key_Type = (
_Help, _Do, _Compose, _PrintScreen, _Char, _F4, _nl2, _Interrupt,
_nl3, _Resume, _nl4, _Cancel, _nl5, _MainScreen, _nl6, _Exit, _nl7,
_AddtlnOptions, _nl8, _F17, _nl9, _F18, _nl10, _F19, _nl11, _F20,
_nl12, _Find, _nl13, _InsertHere, _nl14, _Remove, _nl15, _Select,
_nl16, _PrevScreen, _nl17, _NextScreen, _nl18, _UpArrow, _nl19,
_DownArrow, _nl20, _RightArrow, _nl21, _LeftArrow, _nl22, _KP0,
_nl23, _nl24, _KP1, _nl25, _nl26, _KP2, _nl27, _nl28, _KP3, _nl29,
_nl30, _KP4, _nl31, _nl32, _KP5, _nl33, _nl34, _KP6, _nl35, _nl36,
_KP7, _nl37, _nl38, _KP8, _nl39, _nl40, _KP9, _nl41, _nl42, _KPMinus,
_nl43, _nl44, _KPComma, _nl45, _nl46, _KPPeriod, _nl47, _nl48,
_KPEnter, _nl49, _nl50, _PF1, _nl51, _nl52, _PF2, _nl53, _nl54, _PF3,
_nl55, _nl56, _PF4, _nl57, _nl58, _Break);
const F_Keys : array [$0..$65] of F_Key_Type = (
_Help, _Do, _Compose, _PrintScreen, _Char, _F4, _nl2, _Interrupt,
_nl3, _Resume, _nl4, _Cancel, _nl5, _MainScreen, _nl6, _Exit, _nl7,
_AddtlnOptions, _nl8, _F17, _nl9, _F18, _nl10, _F19, _nl11, _F20,
_nl12, _Find, _nl13, _InsertHere, _nl14, _Remove, _nl15, _Select,
_nl16, _PrevScreen, _nl17, _NextScreen, _nl18, _UpArrow, _nl19,
_DownArrow, _nl20, _RightArrow, _nl21, _LeftArrow, _nl22, _KP0,
_nl23, _nl24, _KP1, _nl25, _nl26, _KP2, _nl27, _nl28, _KP3, _nl29,
_nl30, _KP4, _nl31, _nl32, _KP5, _nl33, _nl34, _KP6, _nl35, _nl36,
_KP7, _nl37, _nl38, _KP8, _nl39, _nl40, _KP9, _nl41, _nl42, _KPMinus,
_nl43, _nl44, _KPComma, _nl45, _nl46, _KPPeriod, _nl47, _nl48,
_KPEnter, _nl49, _nl50, _PF1, _nl51, _nl52, _PF2, _nl53, _nl54, _PF3,
_nl55, _nl56, _PF4, _nl57, _nl58, _Break);
type KeyType = record { Returned by ReadKbd }
Chr_Key : char; { Character }
Fun_Key : F_Key_Type; { Function Key Value }
Ctrl_Key, { \ }
Shift_Key, { > True If On }
Lock_Key : boolean; { / }
end;
var
Keystroke : keytype;