obLen EQU 16 ORG #A200 ENT:PUSH IY:DI CALL InA:CALL InB CALL InG:CALL Game POP IY:IM 0:EI:RET InA CALL MkE LD A,9:CALL SAt CALL IRL CALL DClr LD DE,128:LD HL,24 LD BC,24:CALL Cc CALL TrE CALL DClr LD A,#F:CALL SAt RET InB CALL FCk CALL KCk CALL InRn CALL SUI RET InG CALL DClr LD DE,128:LD HL,24 LD BC,24:CALL Cc CALL ClrMap CALL ClrHFl CALL MakeObj CALL InPl XOR A:LD (Aim),A LD (TkN),A:LD (VEnk),A LD (DFlg),A:LD (REnk),A LD H,A:LD L,A LD (Scor),HL LD A,1:LD (DTk),A LD (SEn),A LD (REn),A:LD (VEn),A LD A,3:LD (PlLiv),A CALL InLv LD HL,BScT:LD (BScPt),HL CALL SClr CALL PrtSc CALL PrtNL CALL PutMtns CALL Sts CALL StB CALL DispObj CALL CopyDown CALL GrumSet CALL EnR RET Game CALL INTk:JR C,GameF LD HL,DTk:DEC (HL) Game1 XOR A:LD (Aim),A LD (BkF),A CALL MvObj CALL EnKR:CALL EnKV CALL EnKS:CALL Keys CALL Full CALL Kemp CALL MovPlyr CALL Grumble CALL SClr CALL PrtSc CALL PrtNL CALL PutMtns CALL Sts CALL StB CALL DispObj CALL CopyDown CALL CkBon CALL DoBonks LD A,(kQuit):AND 1 JR Z,GameF LD A,(DFlg):OR A CALL NZ,DPl LD A,(PlLiv):OR A JR Z,GameF LD A,(DTk):OR A JR NZ,Game JR Game1 GameF CALL KillFull RET SUI LD HL,SUIT LD DE,#FFF0:LD BC,#G LDIR:LD A,#3A:LD I,A IM 2:RET SUIT DEFS 4:JP IR DEFS 8:DEFB #18 IR PUSH AF:PUSH BC PUSH DE:PUSH HL:PUSH IX PUSH IY:EX AF,AF':EXX PUSH AF:PUSH BC:PUSH DE PUSH HL LD A,(REn):RRA:JR NC,IR1 LD A,(IntFlag):XOR 1 LD (IntFlag),A JR NZ,IR1 LD IX,(IntPnt) CALL RDQ LD A,(InCt):ADD A,8 LD (InCt),A JR NZ,IR2 LD IX,IntLinD IR2 LD (IntPnt),IX CALL RDQ IR1 LD A,(VEn):RRA JR NC,IR4:LD A,(LvF) OR A:JR Z,IR1a LD A,1:LD (IntLog),A JR IR4 IR1a LD A,(LC) INC A:CP 5:JR NZ,IR3 XOR A IR3 LD (LC),A LD B,A CALL MvLv IR4 POP HL:POP DE POP BC:POP AF:EXX EX AF,AF':POP IY:POP IX POP HL:POP DE:POP BC POP AF:EI:RET EnR XOR A LD (InCt),A LD (IntFlag),A LD HL,IntLinD LD (IntPnt),HL LD HL,#1780 LD DE,#0180 CALL SL:EI:RET RDQ LD A,(InCt) CP #80 JR NC,RDQb:CP #40 JP C,R1Q:JP R2Q RDQb CP #C0 JP C,R3Q:JP R4Q IRLCl LD HL,#4000 LD DE,#4001:LD BC,#7FF LD (HL),0:LDIR:RET RET R1Q LD HL,#4750 R1Qa LD A,(IX):INC IX XOR (HL):LD (HL),A LD A,(IX):INC IX OR A:RET Z BIT 0,A:JR Z,R1Qb INC L R1Qb BIT 1,A JR Z,R1Qa DEC H:LD A,H:CP #40 JP NC,R1Qa LD H,#47:LD A,L SUB #20:LD L,A JP R1Qa R2Q LD HL,#4070 R2Qa LD A,(IX):INC IX XOR (HL):LD (HL),A LD A,(IX):INC IX OR A:RET Z BIT 0,A:JR Z,R2Qb INC L R2Qb BIT 1,A JR Z,R2Qa INC H:LD A,H:CP #48 JP C,R2Qa LD H,#40:LD A,L ADD A,#20:LD L,A JP R2Qa R3Q LD HL,#406F R3Qa LD A,(IX):INC IX XOR (HL):LD (HL),A LD A,(IX):INC IX OR A:RET Z BIT 0,A:JR Z,R3Qb DEC L R3Qb BIT 1,A JR Z,R3Qa INC H:LD A,H:CP #48 JP C,R3Qa LD H,#40:LD A,L ADD A,#20:LD L,A JP R3Qa R4Q LD HL,#474F R4Qa LD A,(IX):INC IX XOR (HL):LD (HL),A LD A,(IX):INC IX OR A:RET Z BIT 0,A:JR Z,R4Qb DEC L R4Qb BIT 1,A JR Z,R4Qa DEC H:LD A,H:CP #40 JP NC,R4Qa LD H,#47:LD A,L SUB #20:LD L,A JP R4Qa IRL LD IX,IntLinT LD IY,IntLinD:LD B,8 IRL1 PUSH BC:CALL IRLCl LD D,(IX):INC IX LD E,(IX):INC IX LD HL,#1780:CALL SL CALL IRLC1 POP BC:DJNZ IRL1 LD B,8 IRL2 PUSH BC:CALL IRLCl LD D,(IX):INC IX LD E,(IX):INC IX LD HL,#1880:CALL SL CALL IRLC2 POP BC:DJNZ IRL2 LD B,8 IRL3 PUSH BC:CALL IRLCl LD D,(IX):INC IX LD E,(IX):INC IX LD HL,#187F:CALL SL CALL IRLC3 POP BC:DJNZ IRL3 LD B,8 IRL4 PUSH BC:CALL IRLCl LD D,(IX):INC IX LD E,(IX):INC IX LD HL,#177F:CALL SL CALL IRLC4 POP BC:DJNZ IRL4:RET IRLC1 LD HL,#4750 IRLC1a LD A,(HL) LD (IY),A:INC IY CALL IRLU:LD A,(HL) OR A:JR Z,IRLC1b LD (IY),2:INC IY JR IRLC1a IRLC1b CALL IRLD INC L:LD A,(HL) OR A:JR Z,IRLC1c LD (IY),1:INC IY JR IRLC1a IRLC1c CALL IRLU LD A,(HL):OR A JR Z,IRLC1d:LD (IY),3 INC IY:JR IRLC1a IRLC1d LD (IY),0:INC IY RET IRLC2 LD HL,#4070 IRLC2a LD A,(HL) LD (IY),A:INC IY CALL IRLD:LD A,(HL) OR A:JR Z,IRLC2b LD (IY),2:INC IY JR IRLC2a IRLC2b CALL IRLU INC L:LD A,(HL) OR A:JR Z,IRLC2c LD (IY),1:INC IY JR IRLC2a IRLC2c CALL IRLD LD A,(HL):OR A JR Z,IRLC2d:LD (IY),3 INC IY:JR IRLC2a IRLC2d LD (IY),0:INC IY RET IRLC3 LD HL,#406F IRLC3a LD A,(HL) LD (IY),A:INC IY CALL IRLD:LD A,(HL) OR A:JR Z,IRLC3b LD (IY),2:INC IY JR IRLC3a IRLC3b CALL IRLU DEC L:LD A,(HL) OR A:JR Z,IRLC3c LD (IY),1:INC IY JR IRLC3a IRLC3c CALL IRLD LD A,(HL):OR A JR Z,IRLC3d:LD (IY),3 INC IY:JR IRLC3a IRLC3d LD (IY),0:INC IY RET IRLC4 LD HL,#474F IRLC4a LD A,(HL) LD (IY),A:INC IY CALL IRLU:LD A,(HL) OR A:JR Z,IRLC4b LD (IY),2:INC IY JR IRLC4a IRLC4b CALL IRLD DEC L:LD A,(HL) OR A:JR Z,IRLC4c LD (IY),1:INC IY JR IRLC4a IRLC4c CALL IRLU LD A,(HL):OR A JR Z,IRLC4d LD (IY),3:INC IY JR IRLC4a IRLC4d LD (IY),0:INC IY RET IRLU DEC H:LD A,H:CP #40 RET NC:LD H,#47:LD A,L SUB #20:LD L,A:RET IRLD INC H:LD A,H:CP #48 RET C:LD H,#40:LD A,L ADD A,#20:LD L,A:RET CopyDown LD A,1 LD (LvF),A XOR A LD (IntLog),A LD A,(VEn):RRA CALL C,DoLv CALL SCopy LD A,(VEn):RRA:RET NC LD B,5:LD HL,LvT+9 LD DE,10:LD A,(PlPhi) CopyD0 LD (HL),A ADD HL,DE:DJNZ CopyD0 CALL DoLv XOR A LD (LvF),A LD A,(IntLog) OR A RET Z LD A,(LC):INC A CP 5:JR NZ,CopyD1:XOR A CopyD1 LD (LC),A LD B,A:JP MvLv DoLv LD B,5 LD IX,LvT DLv1 PUSH BC DEC B CALL PL LD BC,10 ADD IX,BC POP BC DJNZ DLv1 RET InLv LD IX,LvT LD B,5 InLvb PUSH BC CALL ILv1 LD DE,10 ADD IX,DE POP BC DJNZ InLvb XOR A:LD (LC),A LD (LvF),A RET ILv1 CALL Rn1 LD A,(Sd):AND 15 ADD A,5 :LD (IX),A CALL Rn1:LD HL,(Sd) LD DE,#40:LD A,H:AND 1 LD H,A:ADD HL,DE:BIT 0,L JR Z,ILv2:EX DE,HL LD HL,0:OR A:SBC HL,DE ILv2 LD (IX+1),L LD (IX+2),H CALL Rn1:LD HL,(Sd) LD DE,#300:LD A,H:AND 3 LD H,A:ADD HL,DE:XOR A LD (IX+3),L:LD (IX+4),H LD (IX+5),A:LD (IX+6),A LD (IX+7),A:LD (IX+8),A LD A,(PlPhi):LD (IX+9),A JP PL MvLv LD IX,LvT LD A,B:ADD A,A:ADD A,A ADD A,A:ADD A,B:ADD A,B LD E,A:LD D,0:ADD IX,DE CALL PL LD A,(IX):DEC A JP Z,ILv1:LD (IX),A LD L,(IX+5):LD H,(IX+6) LD E,(IX+1):LD D,(IX+2) ADD HL,DE LD (IX+5),L:LD (IX+6),H LD L,(IX+3):LD H,(IX+4) LD DE,0-#80:ADD HL,DE LD (IX+3),L:LD (IX+4),H LD E,(IX+7):LD D,(IX+8) OR A:ADC HL,DE JP M,ILv1 LD (IX+7),L:LD (IX+8),H JP PL PL LD C,(IX+6):SRA C SRA C:SRA C:LD A,(IX+9) NEG:ADD A,C:RET M CP #20:RET P LD C,A:LD B,0 LD A,(IX+6):AND 7:LD E,A LD D,B:LD HL,Bits ADD HL,DE:LD A,(HL) LD HL,STab+160 LD E,(IX+8):SLA E SBC HL,DE:LD E,(HL) INC L:LD D,(HL) EX DE,HL:ADD HL,BC XOR (HL):LD (HL),A RET DPl LD IX,DPLT LD A,(REn):LD (tREn),A XOR A:LD (REn),A DP1 LD E,(IX):INC IX LD C,(IX):INC IX LD A,E:OR C:JR Z,DP2 PUSH IX:SLA C:LD B,0 LD HL,DPPT:ADD HL,BC LD C,(HL):INC HL LD B,(HL):SLA E:LD D,0 LD HL,DPPT:ADD HL,DE LD E,(HL):INC HL LD D,(HL):LD H,B:LD L,C CALL SL:POP IX:JR DP1 DP2 LD BC,0 DPa PUSH AF:POP AF CPI:JP V,DPa:LD DE,#A01C LD (Curs),DE:LD IX,DPMT DP3 LD A,(IX):OR A JR Z,DP4:PUSH IX RRCA:RRCA:RRCA:RRCA CALL DPPrt POP IX:LD A,(IX):PUSH IX CALL DPPrt:POP IX:INC IX JR DP3 DP4 LD HL,PlLiv:DEC (HL) XOR A:LD (DFlg),A LD B,#G DP9 PUSH BC:LD BC,#4000 DPA PUSH BC:POP BC CPI:JP V,DPA POP BC:DJNZ DP9 LD IX,ObList:LD DE,obLen DPN1 LD A,(IX):CP 17 JR C,DPN2:CP 25 JR NC,DPN2:LD (IX),0 CP 19:CALL C,RTk DPN2 ADD IX,DE:CP #FF JR NZ,DPN1:CALL InPl LD HL,TkN:LD A,(HL) LD C,A:LD (HL),11 CP 11:JR C,DPN4 LD B,1:CP 26:JR C,DPN3 INC B:CP 56:JR C,DPN3 INC B:CP 101:JR C,DPN3 INC B:CP 151:JR C,DPN3 INC B:CP 211:JR C,DPN3 INC B DPN3 PUSH BC CALL INTk:POP BC DJNZ DPN3:LD A,C LD (TkN),A:JR DPN5 DPN4 DEC A:LD (TkN),A CALL INTk DPN5 XOR A:LD (DTk),A LD A,(tREn):LD (REn),A RET DPPrt AND #F:JR Z,DPPr2 DEC A:LD E,A ADD A,A:ADD A,E:LD E,A LD D,0:LD HL,DPMCT ADD HL,DE LD E,(HL):INC HL LD D,(HL):INC HL LD B,(HL):EX DE,HL DPPr1 LD A,(HL):INC HL CALL DPPrL:DJNZ DPPr1 DPPr2 LD HL,(Curs) LD DE,10:ADD HL,DE LD (Curs),HL:RET DPPrL PUSH HL:PUSH BC LD D,A:RRCA:RRCA:RRCA RRCA:CALL DPPrP LD A,D:EX DE,HL CALL DPPrP:CALL SL LD B,0:DJNZ $:DJNZ $ DJNZ $:DJNZ $:DJNZ $ DJNZ $:DJNZ $:DJNZ $ DJNZ $:DJNZ $:DJNZ $ DJNZ $:DJNZ $:DJNZ $ DJNZ $:DJNZ $:DJNZ $ POP BC:POP HL:RET DPPrP PUSH DE:AND #F LD HL,DPMPT:ADD A,A LD E,A:LD D,0:ADD HL,DE LD C,(HL):INC HL LD B,(HL):LD HL,(Curs) ADD HL,BC:POP DE:RET EnKR LD A,#FB IN A,(#FE):AND 8:LD C,A LD A,(REnk):XOR C:RET Z LD A,C:LD (REnk),A AND 8:RET NZ:LD A,(REn) XOR 1:LD (REn),A LD IX,(IntPnt):CALL RDQ RET EnKV LD A,#FE:IN A,(#FE) AND 16:LD C,A LD A,(VEnk):XOR C:RET Z LD A,C:LD (VEnk),A AND 16:RET NZ:LD A,(VEn) XOR 1:LD (VEn),A LD B,5:LD HL,LvT+9 LD DE,10:LD A,(PlPhi) EnKV1 LD (HL),A ADD HL,DE:DJNZ EnKV1 CALL DoLv:RET EnKS LD A,#F7:IN A,(#FE) RRA:JR NC,EnKSn RRA:RET C CALL KillFull:XOR A LD (SEn),A:RET EnKSn CALL GrumSet LD A,1:LD (SEn),A:RET CkBon LD HL,(BScPt) LD E,(HL):INC HL LD D,(HL):LD HL,(Scor) OR A:SBC HL,DE:RET C LD HL,PlLiv:INC (HL) LD HL,(BScPt):INC HL INC HL:LD (BScPt),HL RET BScT DEFW 100,200,500 DEFW 1000,2000,5000 DEFW 10000,#FFF0 PrtSc LD HL,#C001 LD (Curs),HL LD HL,(Scor):LD C,1 LD DE,10000:CALL PS2 LD DE,1000:CALL PS2 LD DE,100:CALL PS2 LD DE,10:CALL PS2 LD A,L:CALL PSOt XOR A:CALL PSOt XOR A:CALL PSOt:RET PS2 XOR A PS2a INC A:SBC HL,DE JR NC,PS2a:ADD HL,DE CP C:RET Z:DEC C DEC A:JP PSOt PSOt PUSH HL:PUSH DE PUSH BC:LD IX,Chars ADD A,A:ADD A,A:ADD A,A LD E,A:LD D,0:ADD IX,DE LD HL,(Curs) INC L:LD (Curs),HL LD DE,32:LD B,8 PSOt1 LD A,(IX):LD (HL),A ADD HL,DE:INC IX DJNZ PSOt1:POP BC POP DE:POP HL:RET PrtNL LD HL,#C018 LD (Curs),HL LD A,(PlLiv):CALL PSOt RET EOO EQU $ ORG #6180 IntFlag DEFB 0 IntPnt DEFW 0 LvF DEFB 0 IntLog DEFB 0 LC DEFB 0 tREn DEFB 0 Curs DEFW 0 PlLiv DEFB 0 VEn DEFB 0 VEnk DEFB 0 REn DEFB 0 REnk DEFB 0 BScPt DEFW 0 LvT DEFS 50 DispObj EQU #6700 InCt EQU #FFFE NegHL EQU #6712 MovPlyr EQU #6760 Keys EQU #6763 SClr EQU #6766 SCopy EQU #6769 DClr EQU #676C SAt EQU #676F SL EQU #67C3 Point EQU #671B Cc EQU #671E ClrMap EQU #6778 MkE EQU #6787 TrE EQU #678A INTk EQU #67C9 InPl EQU #67C6 MakeObj EQU #678D DoBonks EQU #67E4 KillFull EQU #67E1 Grumble EQU #67DE GrumSet EQU #67DB Full EQU #67D8 Kemp EQU #67D5 MvObj EQU #67CC RTk EQU #67D2 InRn EQU #6733 Rn EQU #6730 Rn1 EQU #672D Sts EQU #67A2 StB EQU #679F ClrHFl EQU #67AB KCk EQU #67AE FCk EQU #67B1 kQuit EQU #60C5 BkF EQU #60DC Sd EQU #60A4 SEn EQU #60A8 Aim EQU #6114 DFlg EQU #6126 ORG #675D PutMtns RET:RET:RET IntLinT EQU #6D20 IntLinD EQU #6200 DTk EQU #6125 TkN EQU #611B Scor EQU #6110 Chars EQU #6EF8 Bits EQU #6B64 DPLT EQU #6E92 DPPT EQU #6EC4 DPMT EQU #6FA4 DPMPT EQU #6F48 DPMCT EQU #6F80 STab EQU #D800 PlPhi EQU #7801 ObList EQU #7810 ORG #6750 zA JP InA zB JP InB zG JP InG zGm JP Game