;Integrated Logic demo rewrite ;~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ ;Original demo jerked and flickered and ran at about 17 frames per second. ;Just to annoy the original writer I took all the graphics from it and ;rewrote it to run in ONE frame to show him how awful his code was. ;I'm not vindictive, but bad coding in DEMO's that claim to be excellent ;really riles me. ;File two of two -- other file is "ENTRO2A.Z80" ;"Stick to utilities" demo... ;CALL 131072 to start ;Fuxoft music ORG &8000 DUMP 9,0 MDAT "mOnty_run" ;Main stuff ORG &8000 DUMP 7,0 DI ;store entry values of variables & IN A,(&FA) ;registers etc... LD (low.page+1),A IN A,(&FC) LD (scr.page+1),A LD (sp.store+1),SP LD SP,&0000 LD A,32 OUT (&FA),A LD HL,reset.screen ;put the "Terminally I.L.L." RESET screen LD DE,0 ;up... LD BC,6912 LDIR LD BC,&10F8 ;set palette to black setblack: DEC B DEFB &ED,&71 INC B DJNZ setblack LD A,13+32 ;page in mode 2 screen OUT (&FA),A LD HL,0 ;clear screen area LD DE,1 LD (HL),L LD BC,&4000 LDIR LD HL,&2000 ;initialise attributes area. LD DE,&2001 LD BC,6143 LD (HL),%01000111 LDIR LD A,41 ;page in FUXOFT music OUT (&FA),A LD A,1 ;Initialise fuxoft music LD (1),A LD A,&2E ;page in MODE 4 screen area OUT (&FA),A LD A,&6E ;display it too OUT (&FC),A LD HL,message ;initialise scroll text LD (scroll.pos+1),HL LD A,1 LD (scroll.count+1),A LD HL,&0000 ;clear MODE 4 screen LD DE,1 LD (HL),L LD BC,&5FFF LDIR LD DE,&1E1B ;put logo on screen LD HL,pd.demo.logo LD B,96 copy.loop: PUSH DE PUSH BC LD BC,73 LDIR POP BC POP DE PUSH HL LD HL,128 ADD HL,DE EX DE,HL POP HL DJNZ copy.loop LD HL,callmusic ;move music calling routines to screen area LD DE,&6000 LD BC,call.len LDIR CALL set.palette ;set up palette main.loop: LD A,1 ;check for yscan to reach line 163 IN A,(&F8) CP 163 JR NZ,main.loop XOR A ;clear CLUT8 to black LD BC,&08F8 OUT (C),A LD A,13+32 ;MODE 2 screen at page 13 OUT (&FC),A ;(for scrolly on bottom of ;screen) CALL put.logo ;put the moving logo at top of screen LD A,14+96 ;restore screen to mode 4 OUT (&FC),A LD A,27 ;restore color for logo above LD BC,&08F8 OUT (C),A CALL parastars ;parallax stars LD A,13+32 OUT (&FA),A CALL scrolly ;move the scrolly LD A,14+32 OUT (&FA),A CALL &6000 ;call music (at end of scr) LD A,&7F ;check for SPACE IN A,(&FE) RRA JP C,main.loop LD A,41 OUT (&FA),A XOR A LD (1),A LD A,&2E OUT (&FA),A CALL &6000 ;shutdown music and return to calling routine low.page: LD A,0 OUT (&FA),A scr.page: LD A,0 OUT (&FC),A sp.store: LD SP,&0000 LD BC,&10F8 setblack2: DEC B DEFB &ED,&71 INC B DJNZ setblack2 EI RET pd.demo.logo: MDAT "logo73x96" callmusic: LD (sp.call+1),SP LD SP,&8000 IN A,(&FB) PUSH AF LD A,9 OUT (&FB),A CALL 32768 POP AF OUT (&FB),A sp.here: LD SP,&0000 RET sp.call: EQU sp.here-callmusic+&6000 call.len: EQU $-callmusic DEFM " " DEFM "HELLO TO ALL HACKERS WHO'VE DECIDED TO " DEFM "JOIN ME HERE IN THIS CODE... THIS IS COOKI" DEFM "E, AND I'M JUST SAYING " DEFB 34 DEFM "HELLO TO CHRIS - SEEING AS IT'S MOST" DEFM " PROBABLY YOU HAVING A PEEK IN HERE!!!" DEFM " -<=Oo END OF MESSAGE oO=>- " ilpalette: DEFB 0,36,32,34,38,104,103,19,27,31,63,112,7,15 DEFB 120,127 set.palette: LD HL,ilpalette LD BC,&00F8 palset: LD A,(HL) OUT (C),A INC B INC HL LD A,B CP &10 JR NZ,palset RET scroll.font: MDAT "pd6font" ;Do the text scrolling... scrolly: scroll.count: LD A,0 ;has current character been displayed? DEC A LD (scroll.count+1),A JR NZ,scroll.next LD A,8 ;if so, restore counter and get next char LD (scroll.count+1),A scroll.pos: LD HL,message mess.wrap: LD A,(HL) INC HL CP 255 JR NZ,not.wrap LD HL,message JR mess.wrap not.wrap: LD (scroll.pos+1),HL LD L,A LD H,0 ADD HL,HL ADD HL,HL ADD HL,HL ADD HL,HL LD DE,scroll.font-512 ;calculate font address for it... ADD HL,DE LD DE,catchbasin ;copy font into a "catchbasin" or buffer LDI LDI LDI LDI LDI LDI LDI LDI LDI LDI LDI LDI LDI LDI LDI LDI scroll.next: LD DE,catchbasin ;scroll data in catchbasin onto screen LD HL,&161F CALL scroll.line LD HL,&163F CALL scroll.line LD HL,&165F CALL scroll.line LD HL,&167F CALL scroll.line LD HL,&169F CALL scroll.line LD HL,&16BF CALL scroll.line LD HL,&16DF CALL scroll.line LD HL,&16FF CALL scroll.line LD HL,&171F CALL scroll.line LD HL,&173F CALL scroll.line LD HL,&175F CALL scroll.line LD HL,&177F CALL scroll.line LD HL,&179F CALL scroll.line LD HL,&17BF CALL scroll.line LD HL,&17DF CALL scroll.line LD HL,&17FF CALL scroll.line RET scroll.line: ;scroll the data pointed to by DE EX DE,HL ;onto the screen. RL (HL) INC HL EX DE,HL RL (HL) DEC HL RL (HL) DEC HL RL (HL) DEC HL RL (HL) DEC HL RL (HL) DEC HL RL (HL) DEC HL RL (HL) DEC HL RL (HL) DEC HL RL (HL) DEC HL RL (HL) DEC HL RL (HL) DEC HL RL (HL) DEC HL RL (HL) DEC HL RL (HL) DEC HL RL (HL) DEC HL RL (HL) DEC HL RL (HL) DEC HL RL (HL) DEC HL RL (HL) DEC HL RL (HL) DEC HL RL (HL) DEC HL RL (HL) DEC HL RL (HL) DEC HL RL (HL) DEC HL RL (HL) DEC HL RL (HL) DEC HL RL (HL) DEC HL RL (HL) DEC HL RL (HL) DEC HL RL (HL) DEC HL RL (HL) DEC HL RL (HL) RET catchbasin: DEFS 16 message: DEFM " WELCOME TO THE SECOND" DEFM " PART OF THIS ENTRO... " DEFM "FIRST OF ALL, THE IMPORTANT PART... THESE " DEFM "ENTRO'S ARE LITTLE PREVIEWS FOR ---STATUES" DEFM " OF ICE--- THE FIRST EVER SAM MEGADEMO... " DEFM " IT'S AVAILABLE FREE WITH ISSUE 6 OF " DEFM "SCPDU (1.50 ENGLISH POUNDS FROM SCPDU, " DEFM "GARAGE FLAT, " DEFM "RUDGE LANE, OARE, NR.MARLBOROUGH, SN8 4JQ " DEFM " CHEQUES MADE PAYABLE TO SCPDU) " DEFM "OR YOU CAN GET IT FROM US DIRECT BY SENDIN" DEFM "G US AN SAE AND A DISC... ADDRESS AT THE " DEFM "END OF THE SCROLLY (SO READ THE LOT, BUD!)" DEFM " ANYWAY, BACK TO THE POINT " DEFM "OF THIS SECTION OF THE ENTRO... " DEFM " >>> " DEFM "THIS IS A PUBLIC" DEFM " SERVICE ANNOUNCEMENT TO STEPHEN WILSON, " DEFM "FROM ENTROPY, SAYING: STICK TO UTILITIES! " DEFM "YOU'RE BETTER AT THEM THAN YOU ARE AT DEMO" DEFM "S... " DEFM "AS YOU CAN SEE, THIS IS PD DEMO 6 VASTLY " DEFM "SPEEDED UP (MY VERSION RUNS IN 1 FRAME, " DEFM "STEPHEN'S " DEFB 34 DEFM "RAN" DEFB 34 DEFM " IN 3 FRAMES). THE REASON FOR THIS IS BE" DEFM "CAUSE TO CODE DEMOS, YOU NEED TO BE ABLE " DEFM "TO SEE THE QUICK WAY AROUND ANY PROBLEM." DEFM " YOU, STEPHEN, DON'T SEEM TO BE ABLE TO YE" DEFM "T (I SAY YET, BECAUSE YOU DO HAVE TALENT -" DEFM " JUST KEEP WORKING ON IT MAN). " DEFM " NOW YOU'VE HEARD MY COMPLAINTS ABO" DEFM "UT STEPHEN, HERE'S SOME INFO ABOUT THIS " DEFM "DEMO... " DEFM "ALL GRAPHICS (EXCEPT SOME ADDITIONS TO " DEFM "THE FONT, AND SPECIAL 'SPEED-UP' CONVERS" DEFM "IONS OF DATA LAYOUTS) @STEPHEN WILSON " DEFM " ALL CODE @ 1992 COOKIE OF " DEFM "ENTROPY... " DEFM "WHEN I SAY -ALL- CODE, I MEAN EVERY LAST " DEFM "BYTE - I HAVEN'T COPIED A SINGLE ONE OF " DEFM "STEPHEN'S ROUTINES FOR THIS DEMO... " DEFM "(THEN AGAIN, IF I HAD, IT'D RUN IN 3 FRAME" DEFM "S INSTEAD OF 1!) " DEFM "BUT IT'S NOT ALL BAD NEWS... QUESTION TIME" DEFM " FOR STEPHEN NOW: HOW DO YOU GET 960K PER " DEFM "DISC????? NICE ONE STE! SEE - YOU HAVE " DEFM "GOT IT, BUT NOT WHERE YOU NEED IT FOR " DEFM "DEMOS... " DEFM " " DEFM "GREETINGS TO: ALL MEMBERS OF I.L., " DEFM "STEPHEN WILSON - OF COURSE, " DEFM "BRIAN MCCONNELL (PLEASE WRITE TO ME!!!) " DEFM "... GRAHAM BURTENSHAW ... HOW'S IT HANGIN?" DEFM " (OH - DON'T MAKE YOUR POLITICAL AFFILIATI" DEFM "ONS PART OF YOUR MAGAZINE - THAT GOES TO Y" DEFM "OU AS WELL, BRIAN!), " DEFM "ALL OF ENTROPY (NICAM, MIKEY BOY, JUSTIN " DEFM "ASH, DOCTOR H, RAINMAN, MIKE AJ), CHRIS" DEFM " WHITE (NOSING AROUND IN MY CODE AGAIN?)" DEFM ", COLIN MACDONALD (I KNOW YOU SAID YOU HAD" DEFM " TO GO HOME BECAUSE SOMETHING URGENT CAME " DEFM "UP, BUT YOU COULD HAVE TOLD ME IT WAS SAMC" DEFM "O BITING THE DUST!!!!!), " DEFM "ALAN MILES (DON'T WORRY - THE COUPE IS SAF" DEFM "E!), BRUCE GORDON (SHOULD SEE MY DESIGNS F" DEFM "OR THE 'ENGRAM' NOW...), THORSTEN GUDMUN" DEFM "DSEN (HOW'S DA TOUR OF DUTY GOING MATE?), " DEFM "THE DVB (YO! DENNIS! TAKE CARE OF Y'SELF " DEFM "DUDE), LORD INSANITY (HELLO DAVID! WRITE T" DEFM "O YOU SOON...), E.S.I. (OR RATHER, MACIEJ" DEFM " - HELLO! WRITE TO -YOU- SOON AS WELL... " DEFM "LITTLE QUESTION... WHAT HAPPENS TO E-TRACK" DEFM "ER NOW THAT SAMCO HAVE DIED?), PAT SPENCER" DEFM ", HOWARD PRICE, MATT COLLINGE, RICKIE 'M'," DEFM " SAM BUCHANAN, CLARE CAMPBELL, FLOP, " DEFM "GAZZA, RIC, GAZ JAYNE, STEVE ANDERSON (KRO" DEFM "NUS, SURELY?), AND TO THOSE WHO HAVE " DEFM "NOT GOT A MENTION, LET ME KNOW, AND I'LL " DEFM "PUT YOU IN NEXT TIME. BUT DON'T WORRY - NO" DEFM "T ALL THINGS COME IN WHITE CASES AND LOOK " DEFM "AS DEADLY AS A SAWN-OFF BRIEZE BLOCK... " DEFM " SPECIAL THANX TO MY SISTER (" DEFM "CLAIRE), CLARE CAMPBELL AND TO ANDY MOORE" DEFM " ALSO THANKS TO THE MAS" DEFM "TERS OF MAGIC FOR -NOT- SENDING ME ANYTHIN" DEFM "G THROUGH THE POST YET... " DEFM " " DEFM "ADDRESS TIME: ENTROPY CAN BE REACHED AT: " DEFM "COOKIE, 18 BRAEMAR DRIVE, SALE, CHESHIRE, " DEFM "M33 4NJ... NICAM, 28 MANOR AVE, SAL" DEFM "E, CHESHIRE, M33 5JG YOU CAN REACH " DEFM "NICAM ON THE PHONE BY RINGING (061) 969 28" DEFM "29 (IN THE UK) OR +44 61 969 2829 FROM " DEFM "OUTSIDE THE UK... 24 HOURS, BECAUSE THIS M" DEFM "AN DOES NOT SLEEP... OR IF HE DOES, YOU CA" DEFM "N CATCH HIS ANSWERPHONE! " DEFM " ALL CORRESPONDANCE FOR ENT" DEFM "ROPY IN GENERAL SHOULD BE SENT TO" DEFM " ENTROPY, 18 BRAEMAR DRIVE, SALE, CHESHIRE" DEFM ", M33 4NJ, ENGLAND IF THAT " DEFM "WAS TOO FAST FOR YOU, HERE IT IS AGAIN... " DEFM " " DEFM " ENTROPY, 18 BRAEMAR DRIVE, SALE, CHESHIRE" DEFM ", M33 4NJ, ENGLAND " DEFM " " DEFM "THIS HAS BEEN AN ENTROPY PUBLIC SERV" DEFM "ICE ANNOUNCEMENT @1992 " DEFM "C YA L8R DUDES! ---COOKIE 1992---" DEFM " FINISHED ON " DEFM "20/08/92 " DEFM "ENTROPY - PURE CHAOS! " DEFM " -< READ YS FROM ISH 83 FOR WORDS O" DEFM "F WISDOM FROM COOKIE UNDER THE NAME OF " DEFB 34 DEFM "SPEC-TEC" DEFB 34 DEFM " (NO JOKE!) >- " DEFB 255 il.logo: MDAT "logo57x19" sine.table: MDAT "ilsine.dat" reset.screen: MDAT "ilPD.RES" ;Put sine waving logo onscreen. ;Original scanned across the logo horizontally... if logo is scanned ;vertically, then it takes a LOT less processor time put.logo: LD HL,0 LD DE,il.logo LD B,57 put.logo.loop: PUSH BC PUSH HL PUSH DE LD BC,128 LD A,L LD DE,sine.table ;work out Y coord of top of this slice ADD HL,DE ;using a table of sine values LD H,(HL) LD L,0 SRL H RR L OR L LD L,A ;HL holds screen address POP DE PUSH DE LD A,(DE) ;copy a pixel to screen LD (HL),A INC DE ;increment data pointer ADD HL,BC ;move to next screen line down LD A,(DE) LD (HL),A INC DE ADD HL,BC LD A,(DE) LD (HL),A INC DE ADD HL,BC LD A,(DE) LD (HL),A INC DE ADD HL,BC LD A,(DE) LD (HL),A INC DE ADD HL,BC LD A,(DE) LD (HL),A INC DE ADD HL,BC LD A,(DE) LD (HL),A INC DE ADD HL,BC LD A,(DE) LD (HL),A INC DE ADD HL,BC LD A,(DE) LD (HL),A INC DE ADD HL,BC LD A,(DE) LD (HL),A INC DE ADD HL,BC LD A,(DE) LD (HL),A INC DE ADD HL,BC LD A,(DE) LD (HL),A INC DE ADD HL,BC LD A,(DE) LD (HL),A INC DE ADD HL,BC LD A,(DE) LD (HL),A INC DE ADD HL,BC LD A,(DE) LD (HL),A INC DE ADD HL,BC LD A,(DE) LD (HL),A INC DE ADD HL,BC LD A,(DE) LD (HL),A INC DE ADD HL,BC LD A,(DE) LD (HL),A INC DE ADD HL,BC LD A,(DE) LD (HL),A POP DE POP HL POP BC PUSH HL LD HL,19 ADD HL,DE EX DE,HL POP HL LD A,L INC A AND 127 LD L,A DEC B ;finished displaying logo? JP NZ,put.logo.loop LD A,(put.logo+1) INC A AND 127 LD (put.logo+1),A RET parastars: LD HL,star.data ;put parallax stars. Simple routine. LD B,24 ;Could write it in my sleep now. LD C,1 LD A,&0D LD (odd.colour+1),A LD A,&D0 LD (even.plot+1),A blank.stars: LD A,B CP 16 JR Z,next2 CP 8 JR Z,next1 JR next next2: LD C,2 LD A,&E0 LD (even.plot+1),A LD A,&0E LD (odd.colour+1),A JR next next1: LD C,3 LD A,&F0 LD (even.plot+1),A LD A,&0F LD (odd.colour+1),A next: LD A,(HL) INC HL OR A JR NZ,no.blank LD E,(HL) LD A,E ADD A,C LD (HL),A INC HL LD D,(HL) SRL D RR E XOR A LD (DE),A JR plotter no.blank: LD A,(HL) ADD A,C LD (HL),A INC HL plotter: LD D,(HL) DEC HL LD E,(HL) DEC HL SRL D RR E JR C,odd.plot LD A,(DE) OR A LD (HL),A JR NZ,not.blanker even.plot: LD A,&E0 LD (DE),A JR not.blanker odd.plot: LD A,(DE) OR A LD (HL),A JR NZ,not.blanker odd.colour: LD A,&0E LD (DE),A not.blanker: INC HL INC HL INC HL DJNZ blank.stars RET star.data: MDAT "star.dat"