;ENTRO -<2>- ;~~~~~~~~~~~ ;(c)1992 Simon Cooke and Entropy ;This is the first source file of two. The second is "ENTRO2B.Z80" ORG 0 DUMP 1,0 DI LD A,32 OUT (&FA),A LD SP,&8000 ;set stack, page in page zero IM 1 LD A,28 ;clear sound chip LD BC,511 OUT (C),A DEC B XOR A OUT (C),A LD (play.music+1),A ;turn music playing OFF OUT (&FE),A LD BC,&0FF8 ;black out the palette pal.blank: OUT (C),A DJNZ pal.blank OUT (C),A LD A,191 ;set line interrupt to line 191 OUT (&F9),A LD A,&21 OUT (&FA),A JP here ;jump down to low memory ORG &38 DUMP 1,&38 handle.ints: ;Interrupt HANDLER PUSH AF PUSH BC PUSH DE PUSH HL IN A,(&F9) RRA frame.addr: ;vectored LINE INTERRUPT handler JP NC,frame.int exit.ints: POP HL POP DE POP BC POP AF EI RET ORG &66 DUMP 1,&66 EI ;ditch NMI's RETN frame.int: LD A,1 ;Set FRAME INT OCCURED flag LD (frame.stat),A play.music: LD A,0 ;is music enabled? OR A ;also checks if screen stuff can be done JP Z,exit.ints2 IN A,(&FB) PUSH AF PUSH IX LD A,14 OUT (&FB),A CALL clear.bobs ;clear sprite area CALL clear.textbit ;clear moving text area CALL para.stars ;update parallax starfield LD HL,temppalette+15 ;output palette (from fader) LD BC,&10F8 OTDR CALL put.text ;put the moving text onscreen CALL put.bobs ;put the moving BOB sprite onscreen LD A,3 OUT (&FB),A CALL 32774 ;call music player routine POP IX POP AF OUT (&FB),A JP exit.ints ;exit interrutps exit.ints2: LD HL,temppalette+15 LD BC,&10F8 OTDR JP exit.ints ;alternative -- just set palette if stuff ;isn't enabled here: LD A,5 ;puts on reset screen 1 OUT (&FB),A CALL 32768 ;routine is in RESET SCREEN holding page LD A,14 OUT (&FB),A LD HL,32768 LD DE,32769 LD (HL),L LD B,&60 ;clear screen area LDIR LD HL,palette1 CALL movecolours ;set up palette LD HL,palette1 CALL set.palette ;set palette LD HL,drop.table ;drop logo onto screen, ala Happy Birthday LD B,64 ;is documented there, but uses a different drop.set: ;value for delay between lines being added LD (HL),0 ;to the screen, and so LOOKS different. INC HL DJNZ drop.set LD A,&6E OUT (&FC),A next.drop: LD A,111 LD (min.height+1),A XOR A LD (dropper.count+1),A LD (add.line+1),A dropper.loop: LD A,1 IN A,(&F8) CP 115 JR NZ,dropper.loop LD HL,drop.table LD (sp.drop+1),SP LD A,(add.line+1) LD B,A drop.clear: LD A,B OR A JR Z,sp.drop LD A,(HL) INC HL INC HL DEC B CP 255 JR Z,drop.clear LD D,A LD E,231 SCF RR D RR E EX DE,HL LD SP,HL EX DE,HL LD DE,0 PUSH DE PUSH DE PUSH DE PUSH DE PUSH DE PUSH DE PUSH DE PUSH DE PUSH DE PUSH DE PUSH DE PUSH DE PUSH DE PUSH DE PUSH DE PUSH DE PUSH DE PUSH DE PUSH DE PUSH DE PUSH DE PUSH DE PUSH DE PUSH DE PUSH DE PUSH DE PUSH DE PUSH DE PUSH DE PUSH DE PUSH DE PUSH DE PUSH DE PUSH DE PUSH DE PUSH DE PUSH DE PUSH DE PUSH DE PUSH DE PUSH DE PUSH DE PUSH DE PUSH DE PUSH DE PUSH DE PUSH DE PUSH DE PUSH DE PUSH DE PUSH DE INC SP PUSH DE JR drop.clear sp.drop: LD SP,&0000 LD A,&FF LD (current.one+1),A LD HL,drop.table LD A,(add.line+1) LD B,A drop.update: PUSH HL LD HL,current.one+1 INC (HL) POP HL LD A,B OR A JR Z,drop.shower LD A,(HL) CP 255 JR NZ,not.skip.drop INC HL INC HL DEC B JR drop.update not.skip.drop: LD E,A ;E holds height INC HL LD A,(HL) ;A holds veloctity (2's comp) ADD A,2 ;add gravity LD (HL),A ADD A,E LD (rest.a+1),A min.height: ;bounce off floor LD A,111 current.one: LD D,0 LD A,111 SUB D LD D,A rest.a: LD A,0 CP D JR C,okay JR Z,okay DEC HL LD A,(current.one+1) LD D,A LD A,111 SUB D LD (HL),A INC HL LD A,(HL) NEG JR drag.coeff+1 okay: DEC HL LD (HL),A INC HL drag.coeff: LD A,(HL) ;drag effect comes here OR A JR Z,not.ddrop BIT 7,A JR NZ,not.dec.drop drag1: SUB 0 JR not.ddrop not.dec.drop: drag2: ADD A,1 not.ddrop: LD (HL),A INC HL DEC B JR drop.update drop.shower: LD A,(add.line+1) LD B,A LD C,1 LD HL,drop.table LD A,32 LD (curr.l+1),A showerd.loop: LD A,B OR A JP Z,dropper.exit LD A,(curr.l+1) DEC A LD (curr.l+1),A LD A,(HL) CP 255 JR NZ,not.inactive INC HL INC HL DEC B JR showerd.loop not.inactive: EX DE,HL LD HL,min.height+1 CP (HL) JR NZ,put.line EX DE,HL INC HL LD A,(HL) OR A JR NZ,not.zero.vel EX DE,HL LD HL,min.height+1 DEC (HL) EX DE,HL DEC HL LD A,(HL) LD (HL),&FF JR put.line2 not.zero.vel: DEC HL LD A,(HL) JR put.line2 put.line: EX DE,HL put.line2: LD C,0 LD D,A LD E,25 SCF RR D RR E PUSH HL PUSH BC PUSH DE curr.l: LD HL,0 ADD HL,HL LD DE,line.table ADD HL,DE LD E,(HL) INC HL LD D,(HL) EX DE,HL POP DE LD BC,103 LDIR POP BC POP HL INC HL INC HL DEC B JR showerd.loop dropper.exit: LD A,C OR A JR Z,dropper.count AND 1 LD (drag1+1),A LD (drag2+1),A LD A,(add.line+1) CP 32 JP Z,dropper.end dropper.count: LD A,0 OR A CALL Z,add.line DEC A LD (dropper.count+1),A JP dropper.loop dropper.end: LD B,100 halter: IN A,(&F9) BIT 3,A JR NZ,halter DJNZ halter EI CALL fadeout ;fade out screen JP main.demo ;jump to main demo routine add.line: LD A,0 CP 32 JR Z,exit.addl INC A LD (add.line+1),A DEC A LD L,A LD H,0 ADD HL,HL LD DE,drop.table ADD HL,DE LD (HL),0 INC HL LD (HL),0 exit.addl: LD A,2 RET drop.table: DEFS 64 ;Clear middle of screen using stack - quicker than clearing each ;individual bob! clear.bobs: LD (sp.blank+1),SP LD HL,&A458 LD A,8 LD BC,128 LD DE,0 clearer.loop: LD SP,HL PUSH DE PUSH DE PUSH DE PUSH DE PUSH DE PUSH DE PUSH DE PUSH DE PUSH DE PUSH DE PUSH DE PUSH DE PUSH DE PUSH DE PUSH DE PUSH DE PUSH DE PUSH DE PUSH DE PUSH DE PUSH DE PUSH DE PUSH DE PUSH DE ADD HL,BC LD SP,HL PUSH DE PUSH DE PUSH DE PUSH DE PUSH DE PUSH DE PUSH DE PUSH DE PUSH DE PUSH DE PUSH DE PUSH DE PUSH DE PUSH DE PUSH DE PUSH DE PUSH DE PUSH DE PUSH DE PUSH DE PUSH DE PUSH DE PUSH DE PUSH DE ADD HL,BC LD SP,HL PUSH DE PUSH DE PUSH DE PUSH DE PUSH DE PUSH DE PUSH DE PUSH DE PUSH DE PUSH DE PUSH DE PUSH DE PUSH DE PUSH DE PUSH DE PUSH DE PUSH DE PUSH DE PUSH DE PUSH DE PUSH DE PUSH DE PUSH DE PUSH DE ADD HL,BC LD SP,HL PUSH DE PUSH DE PUSH DE PUSH DE PUSH DE PUSH DE PUSH DE PUSH DE PUSH DE PUSH DE PUSH DE PUSH DE PUSH DE PUSH DE PUSH DE PUSH DE PUSH DE PUSH DE PUSH DE PUSH DE PUSH DE PUSH DE PUSH DE PUSH DE ADD HL,BC LD SP,HL PUSH DE PUSH DE PUSH DE PUSH DE PUSH DE PUSH DE PUSH DE PUSH DE PUSH DE PUSH DE PUSH DE PUSH DE PUSH DE PUSH DE PUSH DE PUSH DE PUSH DE PUSH DE PUSH DE PUSH DE PUSH DE PUSH DE PUSH DE PUSH DE ADD HL,BC LD SP,HL PUSH DE PUSH DE PUSH DE PUSH DE PUSH DE PUSH DE PUSH DE PUSH DE PUSH DE PUSH DE PUSH DE PUSH DE PUSH DE PUSH DE PUSH DE PUSH DE PUSH DE PUSH DE PUSH DE PUSH DE PUSH DE PUSH DE PUSH DE PUSH DE ADD HL,BC LD SP,HL PUSH DE PUSH DE PUSH DE PUSH DE PUSH DE PUSH DE PUSH DE PUSH DE PUSH DE PUSH DE PUSH DE PUSH DE PUSH DE PUSH DE PUSH DE PUSH DE PUSH DE PUSH DE PUSH DE PUSH DE PUSH DE PUSH DE PUSH DE PUSH DE ADD HL,BC LD SP,HL PUSH DE PUSH DE PUSH DE PUSH DE PUSH DE PUSH DE PUSH DE PUSH DE PUSH DE PUSH DE PUSH DE PUSH DE PUSH DE PUSH DE PUSH DE PUSH DE PUSH DE PUSH DE PUSH DE PUSH DE PUSH DE PUSH DE PUSH DE PUSH DE ADD HL,BC DEC A JP NZ,clearer.loop sp.blank: LD SP,0 RET ;Intro palette ;~~~~~~~~~~~~~ palette1: DEFB 0,29,91,32,34,38,98,102,0,8,7,15,112,120 DEFB 119,127 ;Main demo palette ;~~~~~~~~~~~~~~~~~ palette2: DEFB 0,120,63,94,93,79,122,111,0,34,38,98,102,25 DEFB 17,127 entropy.logo: MDAT "entro2.hed" ;Table of values for line positions ;~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ line.table: DEFW entropy.logo DEFW entropy.logo+103 DEFW entropy.logo+206 DEFW entropy.logo+309 DEFW entropy.logo+412 DEFW entropy.logo+515 DEFW entropy.logo+618 DEFW entropy.logo+721 DEFW entropy.logo+824 DEFW entropy.logo+927 DEFW entropy.logo+1030 DEFW entropy.logo+1133 DEFW entropy.logo+1236 DEFW entropy.logo+1339 DEFW entropy.logo+1442 DEFW entropy.logo+1545 DEFW entropy.logo+1648 DEFW entropy.logo+1751 DEFW entropy.logo+1854 DEFW entropy.logo+1957 DEFW entropy.logo+2060 DEFW entropy.logo+2163 DEFW entropy.logo+2266 DEFW entropy.logo+2369 DEFW entropy.logo+2472 DEFW entropy.logo+2575 DEFW entropy.logo+2678 DEFW entropy.logo+2781 DEFW entropy.logo+2884 DEFW entropy.logo+2987 DEFW entropy.logo+3090 DEFW entropy.logo+3193 ;Palette initialisation routine ;~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ set.palette: LD BC,&00F8 LD E,&10 pal.set: LD A,(HL) OUT (C),A INC HL INC B DEC E JR NZ,pal.set RET ;Palette fader routine - (c) 1992 Simon Cooke (& Chris White) ;~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ ;This version allows fading to occur while screen is being updated!! ;(screen update occurs due to the FRAME interrupt) fadeout: LD HL,palette LD DE,temppalette LD BC,16 LDIR LD B,8 fadeout1: LD C,16 LD HL,temppalette fadeout2: LD A,(HL) CALL dropdown LD (HL),A INC HL DEC C JP NZ,fadeout2 EXX LD B,3 fadeoutfly: HALT DJNZ fadeoutfly EXX DJNZ fadeout1 RET fadein: LD B,9 LD D,8 fadein1: LD C,16 LD HL,palette EXX LD HL,temppalette EXX fadein2: PUSH DE LD A,(HL) INC D DEC D JP Z,nofadein fadein3: PUSH DE CALL dropdown POP DE DEC D JP NZ,fadein3 nofadein: INC HL EXX LD (HL),A INC HL EXX POP DE DEC C JP NZ,fadein2 EXX LD B,3 fadeinfly: HALT DJNZ fadeinfly EXX DEC D DJNZ fadein1 RET dropdown: OR A RET Z XOR 8 BIT 3,A RET Z dropblue: LD D,A AND 17 JP NZ,nextdown1 LD A,D JP dropred nextdown1: AND 1 JP Z,drophighblue LD A,D AND 126 JP dropred drophighblue: LD A,D AND 111 OR 1 dropred: LD D,A AND 34 JP NZ,nextdown2 LD A,D JP dropgreen nextdown2: AND 2 JP Z,drophighred LD A,D AND 125 JP dropgreen drophighred: LD A,D AND 127-32 OR 2 dropgreen: LD D,A AND 68 JP NZ,nextdown3 LD A,D RET nextdown3: AND 4 JP Z,drophighgreen LD A,D AND 123 RET drophighgreen: LD A,D AND 63 OR 4 RET movecolours: LD DE,palette LD BC,16 LDIR RET palette: DEFS 16 temppalette: DEFS 16 frame.stat: DEFB 0 ;Prints the BOBS on the screen... ;POP's the coordinate off the data stack, put.bobs: LD (sp.bobs+1),SP bob.position: LD SP,0 bobs.place2: POP HL LD A,L CP &FF JP NZ,put.bob XOR H JP NZ,put.bob LD (bob.position+1),SP sp.bobs: LD SP,0 frame.bob: LD A,0 INC A LD (frame.bob+1),A CP 72 RET NZ XOR A LD (frame.bob+1),A LD HL,bobs.data LD (bob.position+1),HL RET main.demo: DI LD A,3 OUT (&FB),A CALL 32768 ;init. tune LD A,140 ;set line int to line 140 OUT (&F9),A LD A,100 ;initial text pause of 100 LD (pause.text+1),A LD HL,text.data-240 ;set text to just after "WELCOME" LD (text.pos+1),HL LD HL,text.times LD (text.tbl+1),HL LD HL,bobs.data ;initialise BOBS data LD (bob.position+1),HL XOR A LD (frame.bob+1),A LD HL,reset.screen ;put second RESET screen up XOR A OUT (&FB),A LD DE,&8000 LD B,173 copy.loop: CALL copy.line DJNZ copy.loop ;copy reset screen data... LD A,1 LD (play.music+1),A ;enable things to happen LD HL,palette2 ;set up palette CALL movecolours LD A,14 OUT (&FB),A LD HL,&8000 ;blank screen LD DE,&8001 LD (HL),L LD BC,&5FFF LDIR LD HL,side.panel ;put up side panels LD DE,&8000 EXX LD HL,side.panel LD DE,&8058 EXX LD B,192 ;copy lines of data to screen... dloop: PUSH DE CALL copy.line POP DE PUSH HL LD HL,128 ADD HL,DE EX DE,HL POP HL EXX PUSH DE CALL copy.line POP DE PUSH HL LD HL,128 ADD HL,DE EX DE,HL POP HL EXX DJNZ dloop EI CALL fadein ;fade it in and check for switch JP wait.for.switch ;Copy data copy.line: PUSH DE IN A,(&FB) PUSH AF LD A,3 OUT (&FB),A PUSH BC LD BC,40 LD DE,space.eighty LDIR POP BC POP AF OUT (&FB),A POP DE PUSH HL LD HL,space.eighty PUSH BC LD BC,40 LDIR POP BC POP HL RET ret.basic: LD A,&7F ;check for space bar... IN A,(&FE) RRA JR C,ret.basic CALL fadeout ;fadeout screen LD BC,&01FF LD A,28 ;turn soundchip off OUT (C),A DEC B DEFB &ED,&71 LD A,7 OUT (&FB),A ;call the second part of the demo CALL &8000 ;(in source ENTRO2B.Z80) LD BC,&01FF ;disable sound chip LD A,28 OUT (C),A DEC B DEFB &ED,&71 JP main.demo ;show this section again... ;Puts bob onscreen: HL=YX ;HARD CODED routines for speed... put.bob: SCF RR H RR L JR C,odd.bob ;jump if the ODD nybble aligned bob has to be ;printed LD A,&F0 AND (HL) OR &0D LD (HL),A INC L LD (HL),&DD INC L LD DE,126 ADD HL,DE LD (HL),&D4 INC L LD (HL),&DD INC L LD A,&0F AND (HL) OR &E0 LD (HL),A ADD HL,DE LD (HL),&DD INC L LD (HL),&DD INC L LD A,&0F AND (HL) OR &E0 LD (HL),A ADD HL,DE LD (HL),&DD INC L LD (HL),&DE INC L LD A,&0F AND (HL) OR &E0 LD (HL),A ADD HL,DE LD A,&F0 AND (HL) OR &0E LD (HL),A INC L LD (HL),&EE JP bobs.place2 odd.bob: ;odd aligned version. INC L LD (HL),&DD INC L LD A,(HL) AND &0F OR &D0 LD (HL),A LD DE,126 ADD HL,DE LD A,(HL) AND &F0 OR &0D LD (HL),A INC L LD (HL),&4D INC L LD (HL),&DE ADD HL,DE LD A,&F0 AND (HL) OR &0D LD (HL),A INC L LD (HL),&DD INC L LD (HL),&DE ADD HL,DE LD A,&F0 AND (HL) OR &0D LD (HL),A INC L LD (HL),&DD INC L LD (HL),&EE ADD HL,DE INC L LD (HL),&EE INC L LD A,&F0 AND (HL) OR &0E LD (HL),A JP bobs.place2 ;Parallax starfield routine ;-------------------------- para.stars: LD (sp.star+1),SP LD SP,star.data LD D,0 LD E,72 LD C,136 LD B,60 star.blank: POP HL ;get coordinates LD A,H CP E ;don't blank it if it's in the bob area JP C,blank.star CP C JP NC,blank.star DJNZ star.blank JP next.bit blank.star: SCF ;blank the star RR H RR L LD (HL),D DJNZ star.blank next.bit: LD SP,star.data LD DE,colour.table LD C,1 sped.loop: LD B,10 speed.loop: POP HL LD A,H SUB C LD H,A CP 192 JR C,under.top ADD A,192 LD H,A LD A,R AND 127 CP 96 JR C,not.overf SUB 96 not.overf: ADD A,80 LD L,A under.top: PUSH HL POP HL SCF RR H RR L LD A,(DE) JR C,low.nybble AND &F0 JR put.nyb low.nybble: AND &0F put.nyb: LD (HL),A DJNZ speed.loop INC DE INC C LD A,C CP 7 JR NZ,sped.loop sp.star: LD SP,&0000 RET ;Colour table for stars ;~~~~~~~~~~~~~~~~~~~~~~ colour.table: DEFB &99,&AA,&BB,&CC,&77,&FF ;Spinning E x-y coords ;~~~~~~~~~~~~~~~~~~~~~ bobs.data: MDAT "ebob.dat" ;Parallax stars coords star.data: MDAT "stars" ;LDIR buffer ;~~~~~~~~~~~ space.eighty: DEFS 80 text.times: DEFB 50,50,100,50,200,50,50,50,100,50,50,50,100 DEFB 50,50,50,50,50,100,50 DEFB 50,1,25,1,50,50,50,50,100,50,150,10,255,255 ;Put text sprites on the bottom of the screen at a certain Y position... ;Scroll them up and on, then down and off, with a pause at the apex. put.text: pause.text: LD A,0 CP &FF RET Z OR A JP Z,put.texter DEC A LD (pause.text+1),A OR A CALL Z,new.text RET put.texter: LD HL,y.text LD A,(HL) INC HL CP &FF JP Z,end.yy CP &FE JP Z,wait.show LD (put.texter+1),HL LD (y.pos+1),A JP put.logo end.yy: LD A,50 LD (pause.text+1),A LD HL,y.text LD (put.texter+1),HL RET wait.show: LD A,0 DEC A LD (wait.show+1),A OR A JP NZ,put.logo LD HL,(put.texter+1) INC HL LD (put.texter+1),HL put.logo: LD (sp.logo+1),SP text.pos: LD SP,text.data ;use stack and unlooped for speed y.pos: LD H,0 LD L,80 SCF RR H RR L POP DE LD A,E OR (HL) LD (HL),A INC L LD A,D OR (HL) LD (HL),A INC L POP DE LD A,E OR (HL) LD (HL),A INC L LD A,D OR (HL) LD (HL),A INC L POP DE LD A,E OR (HL) LD (HL),A INC L LD A,D OR (HL) LD (HL),A INC L POP DE LD A,E OR (HL) LD (HL),A INC L LD A,D OR (HL) LD (HL),A INC L POP DE LD A,E OR (HL) LD (HL),A INC L LD A,D OR (HL) LD (HL),A INC L POP DE LD A,E OR (HL) LD (HL),A INC L LD A,D OR (HL) LD (HL),A INC L POP DE LD A,E OR (HL) LD (HL),A INC L LD A,D OR (HL) LD (HL),A INC L POP DE LD A,E OR (HL) LD (HL),A INC L LD A,D OR (HL) LD (HL),A INC L POP DE LD A,E OR (HL) LD (HL),A INC L LD A,D OR (HL) LD (HL),A INC L POP DE LD A,E OR (HL) LD (HL),A INC L LD A,D OR (HL) LD (HL),A INC L POP DE LD A,E OR (HL) LD (HL),A INC L LD A,D OR (HL) LD (HL),A INC L POP DE LD A,E OR (HL) LD (HL),A INC L LD A,D OR (HL) LD (HL),A INC L POP DE LD A,E OR (HL) LD (HL),A INC L LD A,D OR (HL) LD (HL),A INC L POP DE LD A,E OR (HL) LD (HL),A INC L LD A,D OR (HL) LD (HL),A INC L POP DE LD A,E OR (HL) LD (HL),A INC L LD A,D OR (HL) LD (HL),A INC L POP DE LD A,E OR (HL) LD (HL),A INC L LD A,D OR (HL) LD (HL),A INC L POP DE LD A,E OR (HL) LD (HL),A INC L LD A,D OR (HL) LD (HL),A INC L POP DE LD A,E OR (HL) LD (HL),A INC L LD A,D OR (HL) LD (HL),A INC L POP DE LD A,E OR (HL) LD (HL),A INC L LD A,D OR (HL) LD (HL),A INC L POP DE LD A,E OR (HL) LD (HL),A INC L LD A,D OR (HL) LD (HL),A INC L POP DE LD A,E OR (HL) LD (HL),A INC L LD A,D OR (HL) LD (HL),A INC L POP DE LD A,E OR (HL) LD (HL),A INC L LD A,D OR (HL) LD (HL),A INC L POP DE LD A,E OR (HL) LD (HL),A INC L LD A,D OR (HL) LD (HL),A INC L POP DE LD A,E OR (HL) LD (HL),A INC L LD A,D OR (HL) LD (HL),A LD DE,81 ADD HL,DE POP DE LD A,E OR (HL) LD (HL),A INC L LD A,D OR (HL) LD (HL),A INC L POP DE LD A,E OR (HL) LD (HL),A INC L LD A,D OR (HL) LD (HL),A INC L POP DE LD A,E OR (HL) LD (HL),A INC L LD A,D OR (HL) LD (HL),A INC L POP DE LD A,E OR (HL) LD (HL),A INC L LD A,D OR (HL) LD (HL),A INC L POP DE LD A,E OR (HL) LD (HL),A INC L LD A,D OR (HL) LD (HL),A INC L POP DE LD A,E OR (HL) LD (HL),A INC L LD A,D OR (HL) LD (HL),A INC L POP DE LD A,E OR (HL) LD (HL),A INC L LD A,D OR (HL) LD (HL),A INC L POP DE LD A,E OR (HL) LD (HL),A INC L LD A,D OR (HL) LD (HL),A INC L POP DE LD A,E OR (HL) LD (HL),A INC L LD A,D OR (HL) LD (HL),A INC L POP DE LD A,E OR (HL) LD (HL),A INC L LD A,D OR (HL) LD (HL),A INC L POP DE LD A,E OR (HL) LD (HL),A INC L LD A,D OR (HL) LD (HL),A INC L POP DE LD A,E OR (HL) LD (HL),A INC L LD A,D OR (HL) LD (HL),A INC L POP DE LD A,E OR (HL) LD (HL),A INC L LD A,D OR (HL) LD (HL),A INC L POP DE LD A,E OR (HL) LD (HL),A INC L LD A,D OR (HL) LD (HL),A INC L POP DE LD A,E OR (HL) LD (HL),A INC L LD A,D OR (HL) LD (HL),A INC L POP DE LD A,E OR (HL) LD (HL),A INC L LD A,D OR (HL) LD (HL),A INC L POP DE LD A,E OR (HL) LD (HL),A INC L LD A,D OR (HL) LD (HL),A INC L POP DE LD A,E OR (HL) LD (HL),A INC L LD A,D OR (HL) LD (HL),A INC L POP DE LD A,E OR (HL) LD (HL),A INC L LD A,D OR (HL) LD (HL),A INC L POP DE LD A,E OR (HL) LD (HL),A INC L LD A,D OR (HL) LD (HL),A INC L POP DE LD A,E OR (HL) LD (HL),A INC L LD A,D OR (HL) LD (HL),A INC L POP DE LD A,E OR (HL) LD (HL),A INC L LD A,D OR (HL) LD (HL),A INC L POP DE LD A,E OR (HL) LD (HL),A INC L LD A,D OR (HL) LD (HL),A INC L POP DE LD A,E OR (HL) LD (HL),A INC L LD A,D OR (HL) LD (HL),A LD DE,81 ADD HL,DE POP DE LD A,E OR (HL) LD (HL),A INC L LD A,D OR (HL) LD (HL),A INC L POP DE LD A,E OR (HL) LD (HL),A INC L LD A,D OR (HL) LD (HL),A INC L POP DE LD A,E OR (HL) LD (HL),A INC L LD A,D OR (HL) LD (HL),A INC L POP DE LD A,E OR (HL) LD (HL),A INC L LD A,D OR (HL) LD (HL),A INC L POP DE LD A,E OR (HL) LD (HL),A INC L LD A,D OR (HL) LD (HL),A INC L POP DE LD A,E OR (HL) LD (HL),A INC L LD A,D OR (HL) LD (HL),A INC L POP DE LD A,E OR (HL) LD (HL),A INC L LD A,D OR (HL) LD (HL),A INC L POP DE LD A,E OR (HL) LD (HL),A INC L LD A,D OR (HL) LD (HL),A INC L POP DE LD A,E OR (HL) LD (HL),A INC L LD A,D OR (HL) LD (HL),A INC L POP DE LD A,E OR (HL) LD (HL),A INC L LD A,D OR (HL) LD (HL),A INC L POP DE LD A,E OR (HL) LD (HL),A INC L LD A,D OR (HL) LD (HL),A INC L POP DE LD A,E OR (HL) LD (HL),A INC L LD A,D OR (HL) LD (HL),A INC L POP DE LD A,E OR (HL) LD (HL),A INC L LD A,D OR (HL) LD (HL),A INC L POP DE LD A,E OR (HL) LD (HL),A INC L LD A,D OR (HL) LD (HL),A INC L POP DE LD A,E OR (HL) LD (HL),A INC L LD A,D OR (HL) LD (HL),A INC L POP DE LD A,E OR (HL) LD (HL),A INC L LD A,D OR (HL) LD (HL),A INC L POP DE LD A,E OR (HL) LD (HL),A INC L LD A,D OR (HL) LD (HL),A INC L POP DE LD A,E OR (HL) LD (HL),A INC L LD A,D OR (HL) LD (HL),A INC L POP DE LD A,E OR (HL) LD (HL),A INC L LD A,D OR (HL) LD (HL),A INC L POP DE LD A,E OR (HL) LD (HL),A INC L LD A,D OR (HL) LD (HL),A INC L POP DE LD A,E OR (HL) LD (HL),A INC L LD A,D OR (HL) LD (HL),A INC L POP DE LD A,E OR (HL) LD (HL),A INC L LD A,D OR (HL) LD (HL),A INC L POP DE LD A,E OR (HL) LD (HL),A INC L LD A,D OR (HL) LD (HL),A INC L POP DE LD A,E OR (HL) LD (HL),A INC L LD A,D OR (HL) LD (HL),A LD DE,81 ADD HL,DE POP DE LD A,E OR (HL) LD (HL),A INC L LD A,D OR (HL) LD (HL),A INC L POP DE LD A,E OR (HL) LD (HL),A INC L LD A,D OR (HL) LD (HL),A INC L POP DE LD A,E OR (HL) LD (HL),A INC L LD A,D OR (HL) LD (HL),A INC L POP DE LD A,E OR (HL) LD (HL),A INC L LD A,D OR (HL) LD (HL),A INC L POP DE LD A,E OR (HL) LD (HL),A INC L LD A,D OR (HL) LD (HL),A INC L POP DE LD A,E OR (HL) LD (HL),A INC L LD A,D OR (HL) LD (HL),A INC L POP DE LD A,E OR (HL) LD (HL),A INC L LD A,D OR (HL) LD (HL),A INC L POP DE LD A,E OR (HL) LD (HL),A INC L LD A,D OR (HL) LD (HL),A INC L POP DE LD A,E OR (HL) LD (HL),A INC L LD A,D OR (HL) LD (HL),A INC L POP DE LD A,E OR (HL) LD (HL),A INC L LD A,D OR (HL) LD (HL),A INC L POP DE LD A,E OR (HL) LD (HL),A INC L LD A,D OR (HL) LD (HL),A INC L POP DE LD A,E OR (HL) LD (HL),A INC L LD A,D OR (HL) LD (HL),A INC L POP DE LD A,E OR (HL) LD (HL),A INC L LD A,D OR (HL) LD (HL),A INC L POP DE LD A,E OR (HL) LD (HL),A INC L LD A,D OR (HL) LD (HL),A INC L POP DE LD A,E OR (HL) LD (HL),A INC L LD A,D OR (HL) LD (HL),A INC L POP DE LD A,E OR (HL) LD (HL),A INC L LD A,D OR (HL) LD (HL),A INC L POP DE LD A,E OR (HL) LD (HL),A INC L LD A,D OR (HL) LD (HL),A INC L POP DE LD A,E OR (HL) LD (HL),A INC L LD A,D OR (HL) LD (HL),A INC L POP DE LD A,E OR (HL) LD (HL),A INC L LD A,D OR (HL) LD (HL),A INC L POP DE LD A,E OR (HL) LD (HL),A INC L LD A,D OR (HL) LD (HL),A INC L POP DE LD A,E OR (HL) LD (HL),A INC L LD A,D OR (HL) LD (HL),A INC L POP DE LD A,E OR (HL) LD (HL),A INC L LD A,D OR (HL) LD (HL),A INC L POP DE LD A,E OR (HL) LD (HL),A INC L LD A,D OR (HL) LD (HL),A INC L POP DE LD A,E OR (HL) LD (HL),A INC L LD A,D OR (HL) LD (HL),A LD DE,81 ADD HL,DE POP DE LD A,E OR (HL) LD (HL),A INC L LD A,D OR (HL) LD (HL),A INC L POP DE LD A,E OR (HL) LD (HL),A INC L LD A,D OR (HL) LD (HL),A INC L POP DE LD A,E OR (HL) LD (HL),A INC L LD A,D OR (HL) LD (HL),A INC L POP DE LD A,E OR (HL) LD (HL),A INC L LD A,D OR (HL) LD (HL),A INC L POP DE LD A,E OR (HL) LD (HL),A INC L LD A,D OR (HL) LD (HL),A INC L POP DE LD A,E OR (HL) LD (HL),A INC L LD A,D OR (HL) LD (HL),A INC L POP DE LD A,E OR (HL) LD (HL),A INC L LD A,D OR (HL) LD (HL),A INC L POP DE LD A,E OR (HL) LD (HL),A INC L LD A,D OR (HL) LD (HL),A INC L POP DE LD A,E OR (HL) LD (HL),A INC L LD A,D OR (HL) LD (HL),A INC L POP DE LD A,E OR (HL) LD (HL),A INC L LD A,D OR (HL) LD (HL),A INC L POP DE LD A,E OR (HL) LD (HL),A INC L LD A,D OR (HL) LD (HL),A INC L POP DE LD A,E OR (HL) LD (HL),A INC L LD A,D OR (HL) LD (HL),A INC L POP DE LD A,E OR (HL) LD (HL),A INC L LD A,D OR (HL) LD (HL),A INC L POP DE LD A,E OR (HL) LD (HL),A INC L LD A,D OR (HL) LD (HL),A INC L POP DE LD A,E OR (HL) LD (HL),A INC L LD A,D OR (HL) LD (HL),A INC L POP DE LD A,E OR (HL) LD (HL),A INC L LD A,D OR (HL) LD (HL),A INC L POP DE LD A,E OR (HL) LD (HL),A INC L LD A,D OR (HL) LD (HL),A INC L POP DE LD A,E OR (HL) LD (HL),A INC L LD A,D OR (HL) LD (HL),A INC L POP DE LD A,E OR (HL) LD (HL),A INC L LD A,D OR (HL) LD (HL),A INC L POP DE LD A,E OR (HL) LD (HL),A INC L LD A,D OR (HL) LD (HL),A INC L POP DE LD A,E OR (HL) LD (HL),A INC L LD A,D OR (HL) LD (HL),A INC L POP DE LD A,E OR (HL) LD (HL),A INC L LD A,D OR (HL) LD (HL),A INC L POP DE LD A,E OR (HL) LD (HL),A INC L LD A,D OR (HL) LD (HL),A INC L POP DE LD A,E OR (HL) LD (HL),A INC L LD A,D OR (HL) LD (HL),A sp.logo: LD SP,0 RET new.text: LD HL,240 adder.on: LD DE,(text.pos+1) ADD HL,DE LD (text.pos+1),HL text.tbl: LD HL,text.times LD A,(HL) CP &FF JR Z,end.text INC HL LD (wait.show+1),A LD A,(HL) INC HL LD (end.yy+1),A LD (text.tbl+1),HL RET end.text: LD A,&FF LD (put.text+1),A RET clear.textbit: LD A,(y.pos+1) LD H,A LD L,176 SCF RR H RR L LD (sp.ctext+1),SP clearer: LD SP,HL LD DE,0 PUSH DE PUSH DE PUSH DE PUSH DE PUSH DE PUSH DE PUSH DE PUSH DE PUSH DE PUSH DE PUSH DE PUSH DE PUSH DE PUSH DE PUSH DE PUSH DE PUSH DE PUSH DE PUSH DE PUSH DE PUSH DE PUSH DE PUSH DE PUSH DE LD HL,176 ADD HL,SP LD SP,HL PUSH DE PUSH DE PUSH DE PUSH DE PUSH DE PUSH DE PUSH DE PUSH DE PUSH DE PUSH DE PUSH DE PUSH DE PUSH DE PUSH DE PUSH DE PUSH DE PUSH DE PUSH DE PUSH DE PUSH DE PUSH DE PUSH DE PUSH DE PUSH DE LD HL,176 ADD HL,SP LD SP,HL PUSH DE PUSH DE PUSH DE PUSH DE PUSH DE PUSH DE PUSH DE PUSH DE PUSH DE PUSH DE PUSH DE PUSH DE PUSH DE PUSH DE PUSH DE PUSH DE PUSH DE PUSH DE PUSH DE PUSH DE PUSH DE PUSH DE PUSH DE PUSH DE LD HL,176 ADD HL,SP LD SP,HL PUSH DE PUSH DE PUSH DE PUSH DE PUSH DE PUSH DE PUSH DE PUSH DE PUSH DE PUSH DE PUSH DE PUSH DE PUSH DE PUSH DE PUSH DE PUSH DE PUSH DE PUSH DE PUSH DE PUSH DE PUSH DE PUSH DE PUSH DE PUSH DE LD HL,176 ADD HL,SP LD SP,HL PUSH DE PUSH DE PUSH DE PUSH DE PUSH DE PUSH DE PUSH DE PUSH DE PUSH DE PUSH DE PUSH DE PUSH DE PUSH DE PUSH DE PUSH DE PUSH DE PUSH DE PUSH DE PUSH DE PUSH DE PUSH DE PUSH DE PUSH DE PUSH DE sp.ctext: LD SP,0 RET ;Text that slides up and down ;~~~~~~~~~~~~~~~~~~~~~~~~~~~~ text.data: MDAT "ent2text" ;Text y position data ;~~~~~~~~~~~~~~~~~~~~ y.text: DEFB 191,190,189,188,187,186,185,184,183,182,181 DEFB 180,179,178,177,176,175,174,173,172,171,170 DEFB 169,168,167,166,165,164,163,162,161,160,159 DEFB &FE DEFB 159,160,161,162,163,164,165,166,167,168,169 DEFB 170,171,172,173,174,175,176,177,178,179,180 DEFB 181,182,183,184,185,186,187,188,189,190,191 DEFB 192 DEFB &FF ;Merge in Etracker tune ;~~~~~~~~~~~~~~~~~~~~~~ ORG &8000 DUMP 3,0 musicinit: MDAT "ces" musicplay: EQU musicinit+6 side.panel: MDAT "entro2.pnl" reset.screen: MDAT "entro.res" ;Reset screen 1 ;~~~~~~~~~~~~~~ ;Copies it into page zero. ORG &8000 DUMP 5,0 DI IN A,(&FA) LD (low.page+1),A LD A,32 OUT (&FA),A LD HL,reset LD DE,0 LD BC,6912 LDIR low.page: LD A,0 OUT (&FA),A RET reset: MDAT "entdropres" ;Merge in ILL pd 6 ;~~~~~~~~~~~~~~~~~ ORG &8000 DUMP 7,0 MDAT "ilpd6demo"