Table of Contents
BURGLAR BILL
Info
Author | John Filsak |
---|---|
Computer | Amstrad PCW 8256 / 8512 / 9512 |
Year | ???? |
Gender | Arcade |
Controls | Keyboard |
Languages | English |
Status | Preserved |
Screenshots
Description
Burglar Bill is an entertaining game where our character will be Bill, a thief whose mission will be to break into the Bank's offices.
Bill must steal the contents of the safe, although he will not always find something in it. We will need all our ingenuity to carry out our mission. You have to be careful in the missions or we will end up in the hands of the police.
Our first mission will be to enter through the door of the Bank, although we will find ourselves with a problem. In order to open it, we will need to discover its key, which we will have to discover its combination of five possibilities. The combination will be a sequence of three numbers between the numbers 1 to 5, although these can be repeated. The good thing is that we will have some clue to know if the numbers entered are wrong or correct.
After finding out the password for the Bank's door, you'll have to go up the elevators to the different floors and pick up the objects (only one) until you place it in the right place and you can go get another. We will have to be cunning and place them intelligently, either to block an elevator and not take us to another floor, pile them up to be able to walk through the floors and thus, with great ingenuity, be able to reach the safe. We will find another problem, to open the safe we have to enter another combination different from the one at the entrance door and if we fail like the bank door, we will fall into the hands of the police.
Listing
- Listing - BURGLAR.BAS
10 REM Burglar Bill, by John Filsak 20 OPTION RUN:highmem!=HIMEM:MEMORY &HCFFF:DEFINT a-z 30 DIM a(53,31):e$=CHR$(27):cls$=e$+"E"+e$+"H 40 DEF FNat$(x,y,a$)=e$+"Y"+CHR$(y+32)+CHR$(x+32)+a$ 50 RANDOMIZE PEEK(64504!):GOSUB 1740:play=-1:WHILE play:nicked=0 60 GOSUB 870:WHILE NOT nicked:GOSUB 140:WEND:PRINT cls$:x=0:y=4:POKE double,0 70 IF leave AND cracked=5 THEN a$="Game complete. You have escaped with £"+MID$(STR$(haul),2)+"."ELSE a$="The police have caught up with you! 80 CALL pr(x,y,a$):y=8 90 IF leave AND cracked=5 THEN a$="But don't think you've got away for ever!"ELSE a$="You are sentenced to"+STR$(2+haul/100)+" years. 100 CALL pr(x,y,a$):y=14 110 a$="Play again? (Y/N)":CALL pr(x,y,a$) 120 ans$="YN":GOSUB 850:IF ii=2 THEN play=0 130 WEND:MEMORY highmem!:WIDTH 90,90:PRINT e$"e"e$"1":RUN"menu 140 i$=UPPER$(INKEY$):IF i$="P"OR i$="Q"THEN GOSUB 570 150 IF i$=sp$THEN GOSUB 700 160 IF i$=CHR$(22)THEN GOSUB 770 170 IF i$=CHR$(28)THEN GOSUB 810 180 IF a(bx,by+2)=0 THEN CALL pr(bx,by,sp$):by=by+1:CALL pr(bx,by,b$) 190 IF a(bx,by+2)=10 AND a(bx,by-3)=0 THEN GOSUB 420 200 IF a(bx+j,by+1)=2 AND a(bx,by+2)>0 THEN GOSUB 350 210 IF bx=51 AND by=29 AND b$=br$THEN GOSUB 250 220 IF i$=e$THEN nicked=-1 230 t=t+1:IF t=3 THEN t=0:GOSUB 310 240 i$="":POKE double,1:RETURN 250 PRINT CHR$(7);:GOSUB 1570:x=64:leave=0 260 PRINT FNat$(x,6,"You are at the door.")FNat$(x,8,"Do you wish to leave") 270 PRINT FNat$(x,9,"the building? (Y/N)"):ans$="YN":GOSUB 850 280 IF ii=1 THEN nicked=-1:leave=-1 290 IF ii=2 THEN b$=bl$:j=-2:i=-1:GOSUB 1570:GOSUB 1620:POKE double,1:CALL pr(bx,by,b$) 300 RETURN 310 time=time-1:a$=MID$(STR$(time),2):a$=LEFT$("0000",4-LEN(a$))+a$ 320 POKE double,0:CALL pr(tx,ty,a$):IF time<=0 THEN nicked=-1 330 RETURN 340 REM Open and empty safe 350 PRINT CHR$(7);:d$="safe":GOSUB 1570:GOSUB 1280 360 IF NOT nicked THEN GOSUB 1570:GOSUB 1620:GOSUB 380 370 RETURN 380 POKE double,0:POKE pen,85:x=bx+j:y=by+1:CALL pr(x,y,sf$):cracked=cracked+1 390 PRINT CHR$(7):POKE pen,255:a(x,y)=3:haul=haul+INT(RND*10)*100 400 a$=MID$(STR$(haul),2):CALL pr(hx,hy,a$):RETURN 410 REM Work lift 420 ly=by+1:FOR l=1 TO 4:PRINT FNat$(bx,by+2,c$+c$); 430 POKE double,0:CALL pr(bx,ly,flr$):ly=ly-1 440 POKE double,1:by=by-1:CALL pr(bx,by,b$):GOSUB 550:NEXT 450 ly=ly+1:IF a(bx,ly)=0 THEN GOSUB 510 ELSE GOSUB 470 460 RETURN 470 IF a(bx,ly)=1 THEN POKE pen,85 480 POKE double,0:CALL pr(bx,ly,flr$):POKE pen,255:ly=ly+1 490 CALL pr(bx,ly,flr$):GOSUB 550:FOR l=1 TO 3:CALL pr(bx,ly,sp$) 500 ly=ly+1:CALL pr(bx,ly,flr$):GOSUB 550:NEXT:RETURN 510 POKE double,1:ly1=by:by=by+1:CALL pr(bx,ly1,sp$):CALL pr(bx,by,b$):ly=ly+1 520 POKE double,0:CALL pr(bx,ly,flr$):GOSUB 550:FOR l=1 TO 3 530 POKE double,1:ly1=ly1+1:CALL pr(bx,ly1,sp$):by=by+1:CALL pr(bx,by,b$) 540 ly=ly+1:POKE double,0:CALL pr(bx,ly,flr$):GOSUB 550:NEXT:RETURN 550 FOR a=0 TO 200:NEXT:GOSUB 310:RETURN 560 REM Left and right 570 IF i$="P"AND b$=bl$THEN b$=br$:CALL pr(bx,by,b$):j=2:i=1:RETURN 580 IF i$="Q"AND b$=br$THEN b$=bl$:CALL pr(bx,by,b$):j=-2:i=-1:RETURN 590 f=a(bx+j,by+1):IF a(bx+j,by)>0 OR f>0 AND f<4 OR f=10 THEN RETURN 600 IF f>3 AND f<10 THEN blocked=0:GOSUB 620:IF blocked THEN RETURN 610 FOR e=1 TO 2:CALL pr(bx,by,sp$):bx=bx+i:CALL pr(bx,by,b$):NEXT:RETURN 620 POKE double,0:f$=f$(f):fx=bx+j:fy=by+1 630 IF a(fx+j,fy)>0 OR a(fx,by)>0 THEN blocked=-1:POKE double,1:RETURN 640 FOR e=1 TO 2:CALL pr(fx,fy,sp$):fx=fx+i:CALL pr(fx,fy,f$):NEXT 650 a(fx,fy)=f:a(bx+j,by+1)=0:IF a(fx,fy+1)=0 THEN GOSUB 670 660 POKE double,1:RETURN 670 WHILE a(fx,fy+1)=0:CALL pr(fx,fy,sp$):a(fx,fy)=0 680 fy=fy+1:CALL pr(fx,fy,f$):a(fx,fy)=f:WEND:RETURN 690 REM Jump 700 IF a(bx,by-1)>0 THEN RETURN 710 CALL pr(bx,by,sp$):by=by-1:CALL pr(bx,by,b$):f=a(bx+j,by+1) 720 IF a(bx+j,by)=0 AND f=0 THEN CALL pr(bx,by,sp$):bx=bx+j:CALL pr(bx,by,b$) 730 IF f>3 AND f<10 THEN blocked=0:GOSUB 620:IF blocked THEN RETURN 740 IF a(bx,by+2)=0 THEN CALL pr(bx,by,sp$):by=by+1:CALL pr(bx,by,b$) 750 RETURN 760 REM Pick up 770 f=a(bx+j,by+1):IF a(bx+j,by)>0 OR f<4 OR carry>0 THEN RETURN 780 POKE double,0:fx=bx+j:fy=by+1:CALL pr(fx,fy,sp$):a(fx,fy)=0 790 f$=f$(f):CALL pr(cx,cy,f$):carry=f:RETURN 800 REM Drop 810 IF a(bx+j,by+1)>0 OR carry=0 THEN RETURN 820 POKE double,0:fx=bx+j:fy=by+1:f$=f$(carry):CALL pr(fx,fy,f$) 830 CALL pr(cx,cy,sp$):GOSUB 670:a(fx,fy)=carry:carry=0:RETURN 840 REM Inkey$ routine 850 ii=0:i$="":WHILE ii=0 OR i$="":i$=UPPER$(INKEY$):ii=INSTR(ans$,i$):WEND:RETURN 860 REM Draw and furnish offices 870 ERASE a:DIM a(53,31):carry=0:PRINT cls$ 880 POKE double,0:c$=CHR$(133):y=6:FOR x=0 TO 10 STEP 2 890 PRINT FNat$(x,y,CHR$(134)+CHR$(138)+CHR$(137)) 900 y=y-1:NEXT:PRINT FNat$(x,y,CHR$(134)) 910 a$=STRING$(30,138):PRINT FNat$(x+1,y,a$+CHR$(140)) 920 a=LEN(a$)+1:FOR z=x+a TO x+a+10 STEP 2:y=y+1 930 PRINT FNat$(z,y,CHR$(131)+CHR$(138)+CHR$(140)):NEXT 940 x=3:PRINT FNat$(x-2,y,CHR$(132)+CHR$(141))FNat$(z-2,y,CHR$(135)+CHR$(132)) 950 b=a:a=b/2+1:b=z-5-b/2:POKE pen,85:FOR w=y+1 TO 31 960 PRINT FNat$(x-3,w,c$+CHR$(149)+c$);:a(x-2,w)=1 970 IF w MOD 4=3 THEN GOSUB 1260 ELSE PRINT FNat$(a,w,STRING$(2,149))FNat$(b,w,STRING$(2,149)):a(a,w)=1:a(b,w)=1 980 PRINT FNat$(z-2,w,c$+CHR$(149)+c$);:a(z-2,w)=1:NEXT 990 bx=z+1:y=31:CALL pr(bx,y,flr$):RESTORE 1970 1000 POKE pen,255:x=16:y=3:a$="BANK OFFICES":CALL pr(x,y,a$) 1010 READ fx,fy,n:WHILE fx<>0 OR fy<>0 1020 a(fx,fy)=n:IF n=0 THEN f$=sp$ 1030 IF n=2 THEN f$=sf$ 1040 IF n>3 AND n<10 THEN f$=f$(n) 1050 IF n=10 THEN f$=flr$ 1060 CALL pr(fx,fy,f$):READ fx,fy,n:WEND 1070 GOSUB 1560:haul=0:time=4000:cracked=0:GOSUB 1600 1080 b$=bl$:by=29:j=-2:i=-1:POKE double,1:CALL pr(bx,by,b$) 1090 x=64:PRINT FNat$(x,6,"You are Burglar Bill,") 1100 PRINT FNat$(x,7,"intent on breaking into") 1110 PRINT FNat$(x,8,"the bank's offices and") 1120 PRINT FNat$(x,9,"stealing the contents") 1130 PRINT FNat$(x,10,"of the safes.") 1140 PRINT FNat$(x,11,"Some may be empty.") 1150 PRINT FNat$(x,13,"You will need all your") 1160 PRINT FNat$(x,14,"ingenuity to succeed,") 1170 PRINT FNat$(x,15,"and may not escape the") 1180 PRINT FNat$(x,16,"clutches of the police.") 1190 PRINT FNat$(x,18,"But first, you will need") 1200 PRINT FNat$(x,19,"to break in!") 1210 PRINT FNat$(x,21,"Press a key.") 1220 WHILE INKEY$="":WEND 1230 c=6:GOSUB 1570:d$="door":GOSUB 1280 1240 IF NOT nicked THEN GOSUB 1570:GOSUB 1620:POKE double,1:CALL pr(bx,by,sp$):bx=z-4:CALL pr(bx,by,b$) 1250 RETURN 1260 FOR c=x TO z-4:CALL pr(c,w,flr$):a(c,w)=1:NEXT:RETURN 1270 REM Puzzle 1280 x=64:PRINT FNat$(x,6,"Find the combination of") 1290 PRINT FNat$(x,7,"the "+d$+" in five goes") 1300 PRINT FNat$(x,8,"or less.") 1310 PRINT FNat$(x,10,"The combination will be") 1320 PRINT FNat$(x,11,"a sequence of three of") 1330 PRINT FNat$(x,12,"the numbers, 1,2,3,4,5.") 1340 PRINT FNat$(x,13,"Numbers may be repeated.") 1350 PRINT FNat$(x,15,e$+"rClues:-"+e$+"u") 1360 PRINT FNat$(x,16,blf$+" number in right place,") 1370 PRINT FNat$(x,17,ble$+" number in wrong place.") 1380 PRINT FNat$(x,19,"Type your sequence..."+e$+"e") 1390 your$="":goes=0:puz$="":FOR p=1 TO 5:p$(p)=MID$(puzzle$,p,1):NEXT 1400 FOR p=1 TO 3:q=1+INT(RND*5):puz$=puz$+p$(q):NEXT 1410 score$="":ans$=puzzle$:y=20:WHILE goes<5 AND your$<>puz$:time=time-50:GOSUB 1450:WEND 1420 IF your$=puz$THEN a$="You cracked it!"ELSE a$="You failed!":nicked=-1 1430 PRINT FNat$(x,y+1,a$):IF nicked THEN PRINT FNat$(x,y+2,"Code was "+puz$+".") 1440 PRINT FNat$(x,29,"Press a key."+e$+"f"):WHILE INKEY$="":WEND:RETURN 1450 PRINT FNat$(x,y,STR$(goes+1)+": ");:your$="":FOR p=1 TO 3 1460 GOSUB 850:PRINT p$(ii);:your$=your$+p$(ii):NEXT 1470 score$="":goes=goes+1:y=y+1 1480 FOR p=1 TO 3:p1$(p)=MID$(your$,p,1):p2$(p)=MID$(puz$,p,1) 1490 IF p1$(p)=p2$(p)THEN score$=score$+blf$:p1$(p)="*":p2$(p)="*" 1500 NEXT:FOR p=1 TO 3:IF p1$(p)="*"THEN 1530 1510 FOR q=1 TO 3:IF p1$(p)=p2$(q)THEN score$=score$+ble$:p1$(p)="*":p2$(q)="*":q=3 1520 NEXT 1530 NEXT:IF score$=""THEN score$="---" 1540 PRINT SPC(2)score$:RETURN 1550 REM Draw box 1560 a=62:b=1:c=2:h=29:r=26:PRINT FNat$(a,b,CHR$(134)+STRING$(r,138)+CHR$(140)) 1570 a=62:FOR b=c TO h:PRINT FNat$(a,b,c$+SPACE$(r)+c$):NEXT 1580 PRINT FNat$(a,b,CHR$(131)+STRING$(r,138)+CHR$(137));:RETURN 1590 REM Titles, etc 1600 x=64:y=2:a$="BURGLAR BILL":POKE double,1:POKE paper,85 1610 CALL pr(x,y,a$):POKE paper,0:POKE double,0:RETURN 1620 POKE double,0:a$="Time:"+STR$(time):tx=x:ty=6:CALL pr(tx,ty,a$):tx=76 1630 hx=x:hy=8:a$="Haul: £"+MID$(STR$(haul),2):CALL pr(hx,hy,a$):hx=78 1640 a$="Carrying: "+f$(carry):cx=x:cy=10:CALL pr(cx,cy,a$):cx=84 1650 y=14:a$="Q - left":CALL pr(x,y,a$) 1660 y=16:a$="P - right":CALL pr(x,y,a$) 1670 y=18:a$="SPACE - jump":CALL pr(x,y,a$) 1680 y=20:a$=plus$+" - pick up":CALL pr(x,y,a$) 1690 y=22:a$=minus$+" - drop":CALL pr(x,y,a$) 1700 y=24:a$="EXIT - stop":CALL pr(x,y,a$) 1710 y=27:a$="Press a key.":CALL pr(x,y,a$):WHILE INKEY$="":WEND 1720 PRINT FNat$(x,y,SPACE$(LEN(a$)*2)):RETURN 1730 REM Set up machine code, etc 1740 RESTORE 2110:address=&HE000 1750 READ code:WHILE code<256:POKE address,code:address=address+1:READ code:WEND 1760 screen=&HE000:pr=&HE003:udgs=&HD100:pen=&HD001:paper=&HD000:double=&HD006 1770 WIDTH 255,255:POKE paper,0:POKE double,0:POKE pen,255 1780 RESTORE 1840:FOR a=0 TO 95:READ b:POKE udgs+a,b:NEXT 1790 sp$=" ":bl$=CHR$(0):br$=CHR$(1):flr$=CHR$(2):sf$=CHR$(3):f$(4)=CHR$(4) 1800 f$(5)=CHR$(5):f$(6)=CHR$(6):f$(7)=CHR$(7):f$(8)=CHR$(8):f$(9)=CHR$(9) 1810 plus$=CHR$(10):minus$=CHR$(11):blf$=CHR$(188):ble$=CHR$(187):puzzle$="12345 1820 PRINT cls$e$"0"e$"f":CALL screen:RETURN 1830 REM user-defined graphics 1840 DATA 24,24,8,28,58,24,20,52 1850 DATA 24,24,16,56,92,24,40,44 1860 DATA 255,68,170,17,170,68,255,0 1870 DATA 126,126,118,110,126,126,126,126 1880 DATA 255,255,102,102,102,102,102,102 1890 DATA 60,36,36,255,219,255,255,255 1900 DATA 255,129,129,129,129,255,177,255 1910 DATA 96,96,124,124,108,108,108,108 1920 DATA 60,60,60,60,61,63,61,60 1930 DATA 66,66,126,66,66,126,66,66 1940 DATA 0,127,65,73,93,73,65,127 1950 DATA 0,127,65,65,93,65,65,127 1960 REM Position and type of furniture, lifts, etc 1970 DATA 3,30,4,3,29,2,37,22,2,31,20,2,31,22,4,31,21,4,15,10,2 1980 DATA 51,14,2,37,31,10,45,27,0,41,26,5,35,29,0,35,28,0,33,31,10 1990 DATA 31,26,4,31,25,6,29,26,7,21,27,0,17,25,0,17,24,0,19,30,8 2000 DATA 5,31,10,7,31,10,5,27,0,11,27,10,11,23,10,11,19,10,5,23,0 2010 DATA 13,22,5,19,19,10,21,19,10,29,19,0,31,19,0 2020 DATA 33,19,0,17,18,0,17,17,0,19,15,10,21,15,0,23,15,0,25,15,0 2030 DATA 27,15,0,29,15,0,31,15,0,3,14,9,3,13,8,5,15,10,13,14,7 2040 DATA 15,13,6,15,14,4,19,23,10,19,22,9,19,21,8,13,11,0,15,9,5 2050 DATA 17,9,0,17,8,0,19,11,0,23,10,7,25,10,4,25,9,6,27,10,9 2060 DATA 27,9,8,33,11,0,35,11,0,37,11,0,5,19,10,35,12,8 2070 DATA 51,11,0,47,10,7,45,10,7,43,10,7,43,9,7,45,9,7 2080 DATA 49,15,10,49,19,10,35,18,0,35,17,0,51,19,0,49,23,10 2090 DATA 49,27,10,39,23,0,51,23,0,49,18,5,0,0,0 2100 REM Machine code 2110 DATA 195,6,224,195,91,224,205,41,224,17,152,44,33,0,182,1,104,1,62 2120 DATA 32,245,213,62,8,115,35,114,35,19,61,32,248,209,235,9,235,241,61 2130 DATA 32,236,201,193,205,90,252,233,0,201,102,26,111,34,2,208,10,50,16 2140 DATA 208,3,10,111,3,10,103,237,75,16,208,6,0,17,19,208,237,176,42 2150 DATA 2,208,205,252,224,34,4,208,33,19,208,34,17,208,201,205,48,224,205 2160 DATA 41,224,243,42,17,208,126,35,34,17,208,205,234,224,17,79,225,1,8 2170 DATA 0,237,176,221,42,4,208,14,8,253,33,79,225,42,0,208,125,6,8 2180 DATA 253,203,0,6,56,13,7,221,203,8,22,221,203,0,22,7,195,164,224 2190 DATA 203,4,221,203,8,22,221,203,0,22,203,4,221,203,8,22,221,203,0 2200 DATA 22,16,215,253,35,58,6,208,167,202,209,224,221,126,8,221,119,9,221 2210 DATA 126,0,221,119,1,221,35,121,254,5,194,209,224,1,200,2,221,9,79 2220 DATA 221,35,13,194,130,224,42,4,208,1,16,0,9,34,4,208,33,16,208 2230 DATA 53,194,98,224,251,201,17,0,184,254,32,48,3,17,0,209,111,38,0 2240 DATA 41,41,41,25,201,92,38,0,84,203,37,1,15,225,9,78,35,70,235 2250 DATA 41,41,41,9,201,48,89,0,92,208,94,160,97,112,100,64,103,16,106 2260 DATA 224,108,176,111,128,114,80,117,32,120,240,122,192,125,144,128,96,131,48 2270 DATA 134,0,137,208,139,160,142,112,145,64,148,16,151,224,153,176,156,128,159 2280 DATA 80,162,32,165,240,167,192,170,144,173,96,176,0,0,0,0,0,0,256
Controls
Q = LEFT P = RIGHT + = GET OBJECT - = DROP OBJECT SPACE = JUMP EXIT = EXIT
Loading the program
1.- Insert the CP/M disc on side 2 2.- Write BASIC and wait for it to load 3.- Remove the CP/M disk and insert the disk containing the Burglar Bill game 4.- Type run "Burglar" and press the "ENTER" key
Download
- Burglar Bill (game in dsk format, compressed with zip)