; Space ORG #8000 DEFS 3 DEFS 3 JP DrawMaze JP Page PageX DEFW 0 PageY EQU PageX+1 JP CLS JP Random JP Rand Seed DEFW 1278,42 JP OutItHL JP OutItHLAttr JP OutItHLCol JP ScanKeys JP ReadKey JP DoScore Damage DEFB 0 Score DEFW 0 nKeys DEFB 0 Mode DEFB 0 WayOutX DEFB 63 WayOutY DEFB 63 ExitOpen DEFB 0 ChestPos DEFW 0 KeyA NOP KeyAP NOP KeyF NOP KeyFP NOP KeyO NOP KeyOP NOP KeyC NOP KeyCP NOP KeyS NOP KeySP NOP Keysp NOP KeyspP NOP KeyAL NOP KeyALP NOP KeyAR NOP KeyARP NOP KeyAU NOP KeyAUP NOP KeyAD NOP KeyADP NOP KeyW NOP KeyWP NOP CColour DEFB 0 nRhumes EQU 50 ; Locals from here . nOpen EQU 5 nArch EQU 2 DoorProb EQU 10 Wall0 EQU #95 Wall1 EQU #9A Wall2 EQU #91 Wall3 EQU #98 Wall4 EQU #94 Wall5 EQU #92 Wall6 EQU #DC Wall7 EQU #DD CornBase EQU #90 xDisp EQU 4 yDisp EQU 3 KeyNo EQU 15 ObjTab EQU #7780 ORG #8200 DrawMaze LD A,#FF:LD (cKeys),A LD (cDamage),A LD (cScore),A LD (cScore+1),A LD HL,Maze LD DE,Maze+1 LD BC,#3FFF LD (HL),0 LDIR LD A,R:LD (Seed),A LD HL,#3F3F+Maze LD (SX),HL CALL DMDoRhume CALL DMNext DM0 SET 6,L SET 0,(HL) RES 6,L DM1 CALL DMMoveOpts JR Z DM2 CALL DMMove JR DM0 DM2 CALL DMNext JR C DrawMazeEx CALL DMLinkOpts JR Z DM2 CALL DMLink JR DM0 DrawMazeEx CALL DMFillRhume CALL DMAddDoors RET Random PUSH HL:PUSH DE:PUSH BC:PUSH AF CALL Rand POP AF LD B,16 LD C,A XOR A LD HL,(Seed) Random1 ADD HL,HL RLA JR C Random2 CP C JR C Random3 Random2 SUB C INC HL Random3 DJNZ Random1 POP BC:POP DE:POP HL RET Rand LD HL,(Seed+2) RL L RL H RL L RL H LD C,H LD A,(Seed) RLA LD B,A LD DE,(Seed+1) RL E RL D RES 7,D LD HL,(Seed) ADD HL,BC LD (Seed),HL LD HL,(Seed+2) ADC HL,DE RES 7,H LD (Seed+2),HL RET M LD HL,Seed Rnd1 INC (HL) RET NZ INC HL JP Rnd1 DMNext LD C,64 DMN1 LD B,64 DMN2 LD HL,(SX) LD A,L ADD A,C AND #3F LD L,A LD A,H ADD A,B AND #3F OR Maze/256 LD H,A SET 6,L LD A,(HL) RES 6,L OR A JR Z DMN3 DJNZ DMN2 DEC C JR NZ DMN1 SCF RET DMN3 LD (SX),HL RET DMMoveOpts LD C,0 LD B,0 LD DE,DMList CALL DMTMLeft CALL DMTMDown CALL DMTMRight CALL DMTMUp LD A,C OR A RET DMLinkOpts LD C,0 LD B,1 LD DE,DMList CALL DMTMLeft CALL DMTMDown CALL DMTMRight CALL DMTMUp LD A,C OR A RET DMMove CALL Random LD DE,DMList ADD A,E LD E,A LD A,(DE) DEC A JR Z DMMoveDown DEC A JR Z DMMoveRight DEC A JR Z DMMoveUp DMMoveLeft CALL DMRat LD A,B OR (HL) LD (HL),A DEC L LD A,B RLCA:RLCA:RLCA:RLCA OR (HL) LD (HL),A RET DMMoveDown CALL DMRat LD A,B RLCA:RLCA OR (HL) LD (HL),A INC H LD A,B RRCA:RRCA OR (HL) LD (HL),A RET DMMoveRight CALL DMRat LD A,B RLCA:RLCA:RLCA:RLCA OR (HL) LD (HL),A INC L LD A,B OR (HL) LD (HL),A RET DMMoveUp CALL DMRat LD A,B RRCA:RRCA OR (HL) LD (HL),A DEC H LD A,B RLCA:RLCA OR (HL) LD (HL),A RET DMLink PUSH HL CALL DMMove POP HL RET DMTMLeft LD A,L OR A RET Z DEC L SET 6,L LD A,(HL) RES 6,L INC L CP B RET NZ LD A,0 LD (DE),A INC DE INC C RET DMTMDown LD A,H CP Maze/256+63 RET Z INC H SET 6,L LD A,(HL) RES 6,L DEC H CP B RET NZ LD A,1 LD (DE),A INC DE INC C RET DMTMRight LD A,L CP 63 RET Z INC L SET 6,L LD A,(HL) RES 6,L DEC L CP B RET NZ LD A,2 LD (DE),A INC DE INC C RET DMTMUp LD A,H CP Maze/256 RET Z DEC H SET 6,L LD A,(HL) RES 6,L INC H CP B RET NZ LD A,3 LD (DE),A INC DE INC C RET DMRat LD A,(Seed+1) LD B,A LD A,R ADD A,B AND #7F CP nOpen LD B,2:RET NC CP nArch LD B,3:RET NC LD B,1 RET DMDoRhume LD IX,RhumeList LD (IX),#FF LD B,nRhumes DMDR1 PUSH BC CALL DMGRhume POP BC DJNZ DMDR1 RET DMGRhume LD A,59 CALL Random ADD A,2 LD L,A LD A,59 CALL Random ADD A,2 LD H,A LD A,4 CALL Random ADD A,2 LD C,A LD A,4 CALL Random ADD A,2 LD B,A LD A,L ADD A,C CP 62 JR NC DMGRhume LD A,H ADD A,B CP 62 JR NC DMGRhume LD IX,RhumeList DMNRhume LD A,(IX) CP #FF JR Z DMAddRhume ADD A,(IX+2):INC A:CP L:JR C DMNR1 LD A,(IX+1) ADD A,(IX+3):INC A:CP H:JR C DMNR1 LD A,L ADD A,C:INC A:CP (IX):JR C DMNR1 LD A,H ADD A,B:INC A:CP (IX+1):JR C DMNR1 JR DMGRhume DMNR1 INC IX:INC IX:INC IX:INC IX JR DMNRhume DMAddRhume LD (IX+0),L LD (IX+1),H LD (IX+2),C LD (IX+3),B LD (IX+4),#FF LD A,H:OR Maze/256:LD H,A SET 6,L LD A,C:LD C,B:LD B,A INC C:INC B LD A,B:NEG:LD E,A LD D,0 LD A,B DMARlp LD (HL),2 INC L DJNZ DMARlp ADD HL,DE LD B,A DEC C JR NZ DMARlp RET DMFillRhume LD IX,RhumeList XOR A:LD (RoomObj),A:EX AF,AF' DMFR1 LD A,(IX) CP #FF RET Z:EX AF,AF':INC A:EX AF,AF' LD L,(IX) LD H,(IX+1) LD B,(IX+2) LD C,(IX+3) LD A,H OR Maze/256 LD H,A INC B INC C LD D,B LD E,C DMFR2 SET 7,L:EX AF,AF':LD (HL),A EX AF,AF':RES 7,L LD A,B CP D JR Z DMFR3 DEC L RES 4,(HL) SET 5,(HL) INC L RES 0,(HL) SET 1,(HL) DMFR3 LD A,C CP E JR Z DMFR4 DEC H RES 2,(HL) SET 3,(HL) INC H RES 6,(HL) SET 7,(HL) DMFR4 INC L DJNZ DMFR2 LD A,L SUB D LD L,A INC H LD B,D DEC C JR NZ DMFR2 LD L,(IX):LD H,(IX+1) LD C,(IX+2):LD B,(IX+3) SRA B:SRA C ADD HL,BC LD BC,#C0C0 ADD HL,BC LD A,(RoomObj):CP KeyNo+1:JR Z DMFR5 INC A:LD (RoomObj),A:CP 1:LD A,#F4 CALL Z StoreChest LD (HL),A DMFR5 INC IX:INC IX:INC IX:INC IX JP DMFR1 StoreChest LD A,L:AND #3F:INC A:LD C,A LD A,H:AND #3F:LD B,A LD (ChestPos),BC:LD A,#F5:RET RoomObj DEFB 0 DMAddDoors LD IX,RhumeList DMAD0 LD A,(IX) CP #FF RET Z LD L,(IX+0) LD A,(IX+1):OR Maze/256:LD H,A LD D,0:LD E,DoorProb DMAD1 CALL DMDoorGen LD B,(IX+2) DMADL0 INC L CALL DMDoorGen DJNZ DMADL0 LD B,(IX+3) INC D DMADL1 CALL DMDoorGen INC H DJNZ DMADL1 CALL DMDoorGen LD B,(IX+2) INC D DMADL2 CALL DMDoorGen DEC L DJNZ DMADL2 CALL DMDoorGen LD B,(IX+3) INC D DMADL3 CALL DMDoorGen DEC H DJNZ DMADL3 CALL DMDoorGen INC IX:INC IX:INC IX:INC IX JR DMAD0 DMDoorGen LD A,E CALL Random DEC E OR A RET NZ LD E,DoorProb LD A,D OR A JR Z DoorUp DEC A JR Z DoorRight DEC A JR Z DoorDown DoorLeft DEC L SET 4,(HL) RES 5,(HL) INC L SET 0,(HL) RES 1,(HL) RET DoorDown INC H SET 6,(HL) RES 7,(HL) DEC H SET 2,(HL) RES 3,(HL) RET DoorRight INC L SET 0,(HL) RES 1,(HL) DEC L SET 4,(HL) RES 5,(HL) RET DoorUp DEC H SET 2,(HL) RES 3,(HL) INC H SET 6,(HL) RES 7,(HL) RET cDamage DEFB #FF cScore DEFW #FFFF cKeys DEFB #FF cMode DEFB 0 DoScore LD A,(Damage) LD B,A LD A,(cDamage) CP B JR NZ DoScore1 LD A,(Score) LD B,A LD A,(cScore) CP B JR NZ DoScore1 LD A,(Score+1) LD B,A LD A,(cScore+1) CP B JR NZ DoScore1 LD A,(nKeys) LD B,A LD A,(cKeys) CP B JR NZ DoScore1 LD A,(Mode) LD B,A LD A,(cMode) CP B RET Z DoScore1 LD HL,Damage LD DE,cDamage LD BC,5 LDIR LD A,(cDamage):NEG:LD HL,pBar JR NZ DS2a LD A,#FF DS2a CALL PrintBar LD HL,(cScore) LD IX,pScore CALL PrintScore LD A,(cKeys) LD IX,pKeys CALL PrintKeys JR PShack ClearBL PUSH DE:LD HL,#50E0 LD B,8 DS1 PUSH HL LD E,L:LD D,H:INC E LD (HL),0 PUSH BC LD BC,31 LDIR POP BC POP HL INC H DJNZ DS1 POP DE RET PShack CALL ClearBL LD A,(cMode) AND #7F JR NZ DS2 LD DE,DWMWounds CALL DWMess RET DS2 CP 2:JR NZ DispScore LD IX,PauseMess CALL pSillyMess DPause CALL SillyMess LD BC,65278:IN A,(C):BIT 3,A JR NZ DPause LD A,#FF:LD (cMode),A XOR A:LD (Mode),A INC A:LD (Keysp),A RET DispScore LD DE,DWMScore DWMess LD HL,#1700 DWMlp LD A,(DE) OR A RET Z CALL OutItHL INC L INC DE JR DWMlp DWMWounds DEFM /Wounds / pBar DEFM / / DEFM / / DEFM / / NOP DWMScore DEFM /Score / pScore DEFM /00000 / DEFM /Keys / pKeys DEFM /00 / NOP PauseMess DEFW 80,PM1:DEFM /Pausing - press C/ DEFM / to continue/ NOP PM1 DEFW 16,PM2:DEFM /C,short for/ DEFM / CONTINUE/ NOP PM3 DEFW 8,PM4:DEFM /When you're/ DEFM / quite ready/ NOP PM2 DEFW 8,PM3:DEFM /4th along,bottom / DEFM /row/ NOP PM4 DEFW 5,PM5:DEFM /Hello ?/ NOP PM5 DEFW 8,PM6:DEFM /Gone for a / DEFM /cheesecake ?/ NOP PM6 DEFW 80,PM7:DEFM /Pausing - press C/ DEFM / to continue/ NOP PM7 DEFW 4,PM8a:DEFM /Oh not again/ NOP PM8a DEFW 4,PM8b:DEFM /No not again/ NOP PM8b DEFW 4,PM8c:DEFM /Please not again/ NOP PM8c DEFW 4,PM8d:DEFM / /:NOP PM8d DEFW 20,PauseMess:DEFM /The next / DEFM /one's good !/ NOP pSillyMess PUSH IX:POP DE:INC DE:INC DE INC DE:INC DE:CALL ClearBL:CALL DWMess LD HL,30000:LD (SDel),HL LD L,(IX):LD H,(IX+1):LD (SSpeed),HL LD L,(IX+2):LD H,(IX+3):PUSH HL:POP IX RET SillyMess LD HL,(SDel):DEC HL:LD (SDel),HL LD A,L:OR H:RET NZ LD HL,30000:LD (SDel),HL LD HL,(SSpeed):DEC HL:LD (SSpeed),HL LD A,L:OR H:RET NZ JR pSillyMess SDel DEFW 0 SSpeed DEFW 0 PrintScore LD C,0 LD A,H CALL PSHN CALL PSHN LD A,L CALL PSHN PSHN RRCA:RRCA:RRCA:RRCA PUSH AF AND #F CP C JR Z PSHNx DEC C OR #30 LD (IX),A INC IX POP AF RET PSHNx LD (IX),#20 INC IX POP AF RET PrintKeys LD C,0 CALL PSHN DEC C JR PSHN Page LD HL,ObjTab+2:LD (HL),#FF LD HL,(PageX) LD IX,WallTypes LD DE,0 LD C,0 Page1 LD B,0 Page2 PUSH BC:PUSH HL:PUSH DE LD A,L ADD A,B CP 64 JR NC MoatEx LD L,A LD A,H ADD A,C CP 64 JR NC MoatEx LD H,A PUSH HL LD A,L:OR #C0:LD L,A LD A,H:OR #C0:LD H,A LD A,(HL) OR A:CALL NZ DispThingy POP HL LD A,(ExitOpen):OR A:JR Z Page2a LD A,(WayOutX):CP L:JR NZ Page2a LD A,(WayOutY):CP H:JR NZ Page2a PUSH HL:PUSH DE:PUSH BC EX DE,HL INC L:INC H LD A,#F6 LD C,6 HI1 PUSH HL:LD B,6 HI2 CALL AddChar DJNZ HI2 POP HL INC H LD A,C:CP 5:CALL Z WriteExit LD A,#F6 DEC C JR NZ HI1 POP BC:POP DE:POP HL Page2a CALL ShowRhume MoatEx INC IX:POP DE:POP HL:POP BC LD A,7:ADD A,E:LD E,A INC B LD A,B CP xDisp JR NZ Page2 LD E,0 LD A,7:ADD A,D:LD D,A INC C LD A,C CP yDisp JR NZ Page1 RET WriteExit PUSH HL LD A,#F6:CALL AddChar LD A,"E":CALL AddChar LD A,"x":CALL AddChar LD A,"i":CALL AddChar LD A,"t":CALL AddChar LD A,#F6:CALL AddChar DEC C POP HL INC H RET AddChar CALL OutItHL PUSH IX:PUSH AF LD IX,ObjTab AClp LD A,(IX+2) INC IX:INC IX:INC IX CP #FF JR NZ AClp POP AF LD (IX-1),A LD (IX-3),L LD (IX-2),H LD (IX+2),#FF INC L POP IX RET DispThingy PUSH IX:LD IX,ObjTab DTlp LD A,(IX+2) CP #FF INC IX:INC IX:INC IX JR NZ DTlp LD A,(HL) LD (IX-1),A LD (IX+2),#FF LD HL,#303 ADD HL,DE LD (IX-3),L LD (IX-2),H CALL OutItHL POP IX RET ShowRhume LD A,H:OR Maze/256:LD H,A EX DE,HL:CALL ShowWalls:EX DE,HL RET ShowWalls LD A,(IX) OR A JR Z WallType0 DEC A JR Z WallType1 DEC A JR Z WallType2 LD A,(DE) CALL ShowUp:CALL ShowTLC:CALL MpR LD A,(DE) CALL ShowRight:CALL ShowTRC:CALL MpL LD A,(DE) CALL ShowLeft:CALL MpD:CALL ShowBLC LD A,(DE) CALL ShowDown:CALL MpR:CALL ShowBRC RET WallType2 LD A,(DE):CALL ShowUp:CALL ShowTLC LD A,(DE):CALL ShowLeft:CALL MpD LD A,(DE):CALL ShowDown:CALL ShowBLC RET WallType1 LD A,(DE):CALL ShowUp:CALL ShowTLC LD A,(DE):CALL ShowLeft:CALL MpR CALL ShowTRC LD A,(DE):CALL ShowRight RET WallType0 LD A,(DE):CALL ShowUp LD A,(DE):CALL ShowLeft CALL ShowTLC RET MpR LD BC,7:ADD HL,BC:RET MpL LD BC,0-7:ADD HL,BC:RET MpD LD BC,#700:ADD HL,BC:RET MpU LD BC,0-#700:ADD HL,BC:RET ShowUp RLCA:RLCA JR ShowHoris ShowDown RRCA:RRCA ShowHoris PUSH HL:AND #3 JR Z SHWall DEC A JR Z SHDoor DEC A JR Z SHOpen JR SHArch SHWall LD A,Wall0 LD B,6 INC L SHW1 CALL OutItHL INC L DJNZ SHW1 SHOpen POP HL:RET SHDoor INC L LD A,Wall2:CALL OutItHL:INC L LD A,Wall6:CALL OutItHL:INC L LD A,Wall6:CALL OutItHL:INC L LD A,Wall6:CALL OutItHL:INC L LD A,Wall6:CALL OutItHL:INC L LD A,Wall4:CALL OutItHL:INC L POP HL:RET SHArch INC L LD A,Wall2:CALL OutItHL:INC L INC L INC L INC L INC L LD A,Wall4:CALL OutItHL:INC L POP HL:RET ShowRight RRCA:RRCA:RRCA:RRCA ShowLeft PUSH HL:AND #3 JR Z SVWall DEC A JR Z SVDoor DEC A JR Z SVOpen JR SVArch SVWall LD A,Wall1 LD B,6 INC H SVW1 CALL OutItHL INC H DJNZ SVW1 SVOpen POP HL:RET SVDoor INC H LD A,Wall3:CALL OutItHL:INC H LD A,Wall7:CALL OutItHL:INC H LD A,Wall7:CALL OutItHL:INC H LD A,Wall7:CALL OutItHL:INC H LD A,Wall7:CALL OutItHL:INC H LD A,Wall5:CALL OutItHL:INC H POP HL:RET SVArch INC H LD A,Wall3:CALL OutItHL:INC H INC H INC H INC H INC H LD A,Wall5:CALL OutItHL:INC H POP HL:RET ShowTLC LD B,0:CALL CkTLD CALL CkTLR CALL CkTLU CALL CkTLL LD A,B ADD A,CornBase CALL OutItHL RET ShowTRC LD B,0:CALL CkTRD CALL CkTRR CALL CkTRU CALL CkTRL LD A,B ADD A,CornBase CALL OutItHL RET ShowBLC LD B,0:CALL CkBLD CALL CkBLR CALL CkBLU CALL CkBLL LD A,B ADD A,CornBase CALL OutItHL RET ShowBRC LD B,0:CALL CkBRD CALL CkBRR CALL CkBRU CALL CkBRL LD A,B ADD A,CornBase CALL OutItHL RET CkTLD LD A,(DE) AND #3 CP 2 RET Z SET 1,B RET CkTLR LD A,(DE) RLCA:RLCA AND #3 CP 2 RET Z SET 2,B RET CkTLU LD A,D CP Maze/256 RET Z DEC D LD A,(DE) INC D AND #3 CP 2 RET Z SET 3,B RET CkTLL LD A,E OR A RET Z DEC E LD A,(DE) INC E RLCA:RLCA AND #3 CP 2 RET Z SET 0,B RET CkTRD LD A,(DE) RRCA:RRCA:RRCA:RRCA AND #3 CP 2 RET Z SET 1,B RET CkTRR LD A,E CP 63 RET Z INC E LD A,(DE) DEC E RLCA:RLCA AND #3 CP 2 RET Z SET 2,B RET CkTRU LD A,D CP Maze/256 RET Z DEC D LD A,(DE) INC D RRCA:RRCA:RRCA:RRCA AND #3 CP 2 RET Z SET 3,B RET CkTRL LD A,(DE) RLCA:RLCA AND #3 CP 2 RET Z SET 0,B RET CkBLD LD A,D CP 63+Maze/256 RET Z INC D LD A,(DE) DEC D AND #3 CP 2 RET Z SET 1,B RET CkBLR LD A,(DE) RRCA:RRCA AND #3 CP 2 RET Z SET 2,B RET CkBLU LD A,(DE) AND #3 CP 2 RET Z SET 3,B RET CkBLL LD A,E OR A RET Z DEC E LD A,(DE) INC E RRCA:RRCA AND #3 CP 2 RET Z SET 0,B RET CkBRD LD A,D CP 63+Maze/256 RET Z INC D LD A,(DE) DEC D RRCA:RRCA:RRCA:RRCA AND #3 CP 2 RET Z SET 1,B RET CkBRR LD A,E CP 63 RET Z INC E LD A,(DE) DEC E RRCA:RRCA AND #3 CP 2 RET Z SET 2,B RET CkBRU LD A,(DE) RRCA:RRCA:RRCA:RRCA AND #3 CP 2 RET Z SET 3,B RET CkBRL LD A,(DE) RRCA:RRCA AND #3 CP 2 RET Z SET 0,B RET CLS LD HL,#4000 LD DE,#4001 LD BC,#1AFF LD (HL),0 LDIR RET OutItDE EX DE,HL CALL OutItHL EX DE,HL RET WallTypes DEFB 0,0,0,1 DEFB 0,0,0,1 DEFB 2,2,2,3 Characters EQU #7800 OutItHL PUSH HL PUSH DE PUSH AF PUSH BC PUSH HL PUSH HL:LD H,Characters/256:LD L,A:LD C,(HL):POP HL LD DE,SpecTab PUSH HL:LD L,H:LD H,0:ADD HL,HL ADD HL,DE:LD E,(HL):INC HL LD D,(HL):POP HL:LD H,0:ADD HL,DE PUSH HL:LD L,A:LD H,0 ADD HL,HL:ADD HL,HL:ADD HL,HL LD DE,Characters:ADD HL,DE:POP DE LD B,8 OutItL LD A,(DE):XOR (HL):LD (DE),A:INC HL:INC D DJNZ OutItL POP HL LD A,L:ADD A,A:ADD A,A:ADD A,A SRL H:RRA:SRL H:RRA:SRL H:RRA LD L,A:LD DE,pAttrib:ADD HL,DE:LD A,(CColour) OR A:JR NZ OutItC:LD (HL),C POP BC POP AF POP DE POP HL RET OutItC LD (HL),7 POP BC POP AF POP DE POP HL RET OutItHLAttr PUSH HL PUSH DE PUSH AF PUSH BC LD D,Characters/256:LD E,A:LD A,(DE) LD C,A LD A,L:ADD A,A:ADD A,A:ADD A,A SRL H:RRA:SRL H:RRA:SRL H:RRA LD L,A:LD DE,pAttrib:ADD HL,DE:LD A,(CColour) OR A:JR NZ OutItC:LD (HL),C POP BC POP AF POP DE POP HL RET OutItHLCol PUSH HL PUSH DE PUSH AF PUSH BC PUSH HL LD DE,SpecTab PUSH HL:LD L,H:LD H,0:ADD HL,HL ADD HL,DE:LD E,(HL):INC HL LD D,(HL):POP HL:LD H,0:ADD HL,DE PUSH HL:LD L,A:LD H,0 ADD HL,HL:ADD HL,HL:ADD HL,HL LD DE,Characters:ADD HL,DE:POP DE LD B,8 OutItc LD A,(DE):XOR (HL):LD (DE),A:INC HL:INC D DJNZ OutItc POP HL LD A,L:ADD A,A:ADD A,A:ADD A,A SRL H:RRA:SRL H:RRA:SRL H:RRA LD L,A:LD DE,pAttrib:ADD HL,DE:LD A,(CColour) OR A:JR NZ OutItC POP BC LD (HL),B POP AF POP DE POP HL RET ScanKeys EQU $ LD BC,65022:IN A,(C):BIT 0,A LD HL,KeyA CALL DWKey LD BC,57342:IN A,(C):BIT 1,A LD HL,KeyO CALL DWKey LD BC,65278:IN A,(C):BIT 3,A LD HL,KeyC CALL DWKey LD BC,65022:IN A,(C):BIT 1,A LD HL,KeyS CALL DWKey LD BC,32766:IN A,(C):BIT 0,A LD HL,Keysp CALL DWKey LD BC,63486:IN A,(C):BIT 4,A LD HL,KeyAL CALL DWKey LD BC,61438:IN A,(C):BIT 2,A LD HL,KeyAR CALL DWKey LD BC,61438:IN A,(C):BIT 3,A LD HL,KeyAU CALL DWKey LD BC,61438:IN A,(C):BIT 4,A LD HL,KeyAD CALL DWKey LD BC,64510:IN A,(C):BIT 1,A LD HL,KeyW CALL DWKey RET DWKey JR NZ KillDWKey LD A,(HL) OR A RET NZ INC A LD (HL),A INC HL LD (HL),A RET KillDWKey XOR A LD (HL),A RET ReadKey LD A,(HL) OR A RET Z LD A,0 LD (HL),A RET PrintBar SRL A:CALL PBarF1:CP #FF:JR Z PBarF LD DE,17 ADD HL,DE LD D,15 CALL PBarF2 DEC HL LD C,A SRL A:SRL A:SRL A OR A JR Z PBarE LD B,A PBarL CALL PBarF0 DEC HL DEC D DJNZ PBarL PBarE LD A,C AND #7 OR #E8 LD (HL),A LD A,D OR A JR Z PBarEx LD B,D PBarL2 DEC HL LD A,#E8:LD (HL),A DJNZ PBarL2 PBarEx RET PBarF LD B,16 PBarFl CALL PBarF0:DEC HL:DJNZ PBarFl:RET PBarF0 LD (HL),#F0 RET PBarF1 LD (HL),#F1 RET PBarF2 LD (HL),#F2 RET SpecTab EQU $ DEFW #4000,#4020,#4040,#4060 DEFW #4080,#40A0,#40C0,#40E0 DEFW #4800,#4820,#4840,#4860 DEFW #4880,#48A0,#48C0,#48E0 DEFW #5000,#5020,#5040,#5060 DEFW #5080,#50A0,#50C0,#50E0 DEFW #0000,#0000,#0000,#0000 pAttrib EQU #5800 SX DEFW 0 SY EQU SX+1 ORG $!3+1 DMList DEFS 4 Maze EQU #C000 RhumeList EQU #BE00 ENDY EQU $