;Menu for FRED 28 ;---------------- ;(c) 1992 Simon Cooke ;Boredom productions limited. ;COLIN - CHANGE OPTION.TEXT FOR THE MENU OPTIONS, AND ;FIND THE FREDMESS BIT TO PUT IN YOUR SCROLL TEXT.... ;THEN SAVE OUT THE CODE AS: ;SAVE "MENUCODE"CODE 32768,73728 ;AND THEN LOAD THE "COMP.PRG" PROGRAM ;THIS WILL MAKE A FILE CALLED "MENU.CMP" - USE THIS, AND ;"AUTOMENU" AND "DECOMP.CDE" FOR THE MENU STUFF ITSELF........ ORG &8000 DUMP &8000 initmusic: MDAT "jinglebell" playmusic: EQU initmusic+6 DEFM "HI TO HOWARD PRICE AND THE WOMBLES - " DEFM "REMEMBER, NO MATTER WHERE YOU GO... THERE " DEFM "YOU ARE........ COOKIE 1992" start: DI ;store basic IN A,(&FA) LD (low.page+1),A LD (sp.store+1),SP IN A,(&FC) LD (scr.page+1),A LD SP,0 LD A,4+32 OUT (&FA),A CALL initmusic ;initialise (yeuck) jingle bells tune LD HL,entromess ;initialise the scrolling messages LD (small.pos+1),HL LD A,1 LD (small.c+1),A LD HL,fredmess LD (scroll.pos+1),HL LD A,1 LD (scroll.c+1),A LD BC,&10F8 ;set palette to black blank.pal: DEFB &ED,&71 DJNZ blank.pal CALL print.options ;put the options text on the screen LD A,4+96 OUT (&FC),A main.loop: CALL playmusic ;play a frame's worth of music main1.loop: LD A,1 ;wait until screen reaches scan line IN A,(&F8) ;166 CP 166 JR NZ,main1.loop LD HL,scroll.pal+15 ;output the palette for the scroller LD BC,&10F8 OTDR main2.loop: LD A,1 ;wait for screen to reach scan 180 IN A,(&F8) CP 180 JR NZ,main2.loop LD HL,main.pal+15 ;output the palette for the rest of LD BC,&10F8 ;the screen OTDR CALL big.scroll ;scroll large scroller CALL small.scroll ;scroll small text scroller LD D,255 ;check for the options keys being akey: LD BC,65022 ;pressed... IN A,(C) BIT 0,A JP NZ,bkey LD D,0 bkey: LD BC,32766 IN A,(C) BIT 4,A JP NZ,ckey LD D,1 ckey: LD BC,65278 IN A,(C) BIT 3,A JP NZ,dkey LD D,2 dkey: LD BC,65022 IN A,(C) BIT 2,A JP NZ,ekey LD D,3 ekey: LD BC,64510 IN A,(C) BIT 2,A JP NZ,fkey LD D,4 fkey: JP nokey LD BC,65022 IN A,(C) BIT 3,A JP NZ,gkey LD D,5 gkey: LD BC,65022 IN A,(C) BIT 4,A JP NZ,hkey LD D,6 hkey: LD BC,49150 IN A,(C) BIT 4,A JP NZ,ikey LD D,7 ikey: LD BC,57342 IN A,(C) BIT 2,A JP NZ,jkey LD D,8 jkey: LD BC,49150 IN A,(C) BIT 3,A JP NZ,kkey LD D,9 kkey: LD BC,49150 IN A,(C) BIT 2,A JP NZ,lkey LD D,10 lkey: LD BC,49150 IN A,(C) BIT 1,A JP NZ,mkey LD D,11 mkey: LD BC,32766 IN A,(C) BIT 2,A JP NZ,nkey LD D,12 nkey: LD BC,32766 IN A,(C) BIT 3,A JP NZ,nokey LD D,13 nokey: LD A,D LD (selected+1),A CP 255 JP NZ,ret.to.basic ;if a key has been pressed, return to ;basic JP main.loop ;loop again if no key pressed. ret.to.basic: CALL 32768 ;re-initialise music, turn soundchip off low.page: LD A,&00 OUT (&FA),A sp.store: LD SP,&0000 scr.page: LD A,&00 OUT (&FC),A selected: LD BC,&0000 ;pass option back to BASIC EI ;restore BASIC RET small.scroll: LD HL,&5D0E ;scroll small text area LD DE,&5D0D LD B,6 small.sc.loop: PUSH BC ;unlooped LDI's for speed PUSH HL PUSH DE LDI LDI LDI LDI LDI LDI LDI LDI LDI LDI LDI LDI LDI LDI LDI LDI LDI LDI LDI LDI LDI LDI LDI LDI LDI LDI LDI LDI LDI LDI LDI LDI LDI LDI LDI LDI LDI LDI LDI LDI LDI LDI LDI LDI LDI LDI LDI LDI LDI LDI LDI LDI LDI LDI LDI LDI LDI LDI LDI LDI LDI LDI LDI LDI LDI LDI LDI LDI LDI LDI LDI LDI LDI LDI LDI LDI LDI LDI LDI LDI LDI LDI LDI LDI LDI LDI LDI LDI LDI LDI LDI LDI LDI LDI LDI LDI LDI LDI LDI LDI LDI LDI POP DE POP HL LD BC,128 ADD HL,BC EX DE,HL ADD HL,BC EX DE,HL POP BC DEC B JP NZ,small.sc.loop small.c: LD A,0 ;put next character on screen if DEC A ;counter finished. LD (small.c+1),A JR NZ,sm.font LD A,4 LD (small.c+1),A small.pos: LD HL,&0000 wrap: LD A,(HL) CP 255 JR NZ,nextsm.pos LD HL,entromess JR wrap nextsm.pos: INC HL LD (small.pos+1),HL LD L,A LD H,0 ADD HL,HL ADD HL,HL ADD HL,HL PUSH HL POP DE ADD HL,HL ADD HL,DE LD DE,small.font-768 ADD HL,DE LD (sm.font+1),HL sm.font: LD HL,&0000 ;put a line of the font on the end of EXX ;the scrolling area LD HL,&5D72 LD BC,128 EXX LD BC,4 LD A,(HL) EXX LD (HL),A ADD HL,BC EXX ADD HL,BC LD A,(HL) EXX LD (HL),A ADD HL,BC EXX ADD HL,BC LD A,(HL) EXX LD (HL),A ADD HL,BC EXX ADD HL,BC LD A,(HL) EXX LD (HL),A ADD HL,BC EXX ADD HL,BC LD A,(HL) EXX LD (HL),A ADD HL,BC EXX ADD HL,BC LD A,(HL) EXX LD (HL),A ADD HL,BC EXX ADD HL,BC LD HL,(sm.font+1) INC HL LD (sm.font+1),HL RET big.scroll: LD HL,&5302 ;same theory as small scroller, but larger :) LD DE,&5300 LD B,16 mini.loop: PUSH BC LDI LDI LDI LDI LDI LDI LDI LDI LDI LDI LDI LDI LDI LDI LDI LDI LDI LDI LDI LDI LDI LDI LDI LDI LDI LDI LDI LDI LDI LDI LDI LDI LDI LDI LDI LDI LDI LDI LDI LDI LDI LDI LDI LDI LDI LDI LDI LDI LDI LDI LDI LDI LDI LDI LDI LDI LDI LDI LDI LDI LDI LDI LDI LDI LDI LDI LDI LDI LDI LDI LDI LDI LDI LDI LDI LDI LDI LDI LDI LDI LDI LDI LDI LDI LDI LDI LDI LDI LDI LDI LDI LDI LDI LDI LDI LDI LDI LDI LDI LDI LDI LDI LDI LDI LDI LDI LDI LDI LDI LDI LDI LDI LDI LDI LDI LDI LDI LDI LDI LDI LDI LDI LDI LDI LDI LDI LDI LDI POP BC DEC B JP NZ,mini.loop scroll.c: LD A,0 DEC A LD (scroll.c+1),A JR NZ,sc.font LD A,4 LD (scroll.c+1),A scroll.pos: LD HL,&0000 wrap2: LD A,(HL) CP 255 JR NZ,nextsc.pos LD HL,fredmess JR wrap2 nextsc.pos: INC HL LD (scroll.pos+1),HL LD L,A LD H,0 ADD HL,HL ADD HL,HL ADD HL,HL ADD HL,HL ADD HL,HL ADD HL,HL ADD HL,HL LD DE,scroll.font-4096 ADD HL,DE LD (sc.font+1),HL sc.font: LD HL,&0000 EXX LD HL,&537E LD BC,127 EXX LD BC,7 LD A,(HL) EXX LD (HL),A INC L EXX INC HL LD A,(HL) EXX LD (HL),A ADD HL,BC EXX ADD HL,BC LD A,(HL) EXX LD (HL),A INC L EXX INC HL LD A,(HL) EXX LD (HL),A ADD HL,BC EXX ADD HL,BC LD A,(HL) EXX LD (HL),A INC L EXX INC HL LD A,(HL) EXX LD (HL),A ADD HL,BC EXX ADD HL,BC LD A,(HL) EXX LD (HL),A INC L EXX INC HL LD A,(HL) EXX LD (HL),A ADD HL,BC EXX ADD HL,BC LD A,(HL) EXX LD (HL),A INC L EXX INC HL LD A,(HL) EXX LD (HL),A ADD HL,BC EXX ADD HL,BC LD A,(HL) EXX LD (HL),A INC L EXX INC HL LD A,(HL) EXX LD (HL),A ADD HL,BC EXX ADD HL,BC LD A,(HL) EXX LD (HL),A INC L EXX INC HL LD A,(HL) EXX LD (HL),A ADD HL,BC EXX ADD HL,BC LD A,(HL) EXX LD (HL),A INC L EXX INC HL LD A,(HL) EXX LD (HL),A ADD HL,BC EXX ADD HL,BC LD A,(HL) EXX LD (HL),A INC L EXX INC HL LD A,(HL) EXX LD (HL),A ADD HL,BC EXX ADD HL,BC LD A,(HL) EXX LD (HL),A INC L EXX INC HL LD A,(HL) EXX LD (HL),A ADD HL,BC EXX ADD HL,BC LD A,(HL) EXX LD (HL),A INC L EXX INC HL LD A,(HL) EXX LD (HL),A ADD HL,BC EXX ADD HL,BC LD A,(HL) EXX LD (HL),A INC L EXX INC HL LD A,(HL) EXX LD (HL),A ADD HL,BC EXX ADD HL,BC LD A,(HL) EXX LD (HL),A INC L EXX INC HL LD A,(HL) EXX LD (HL),A ADD HL,BC EXX ADD HL,BC LD A,(HL) EXX LD (HL),A INC L EXX INC HL LD A,(HL) EXX LD (HL),A ADD HL,BC EXX ADD HL,BC LD A,(HL) EXX LD (HL),A INC L EXX INC HL LD A,(HL) EXX LD (HL),A ADD HL,BC EXX ADD HL,BC LD A,(HL) EXX LD (HL),A INC L EXX INC HL LD A,(HL) EXX LD (HL),A EXX LD HL,(sc.font+1) INC HL INC HL LD (sc.font+1),HL RET ;************************SCROLLIES***************************** fredmess: DEFM " " ;YOUR MESSAGE GOES HERE, COLIN....\/ \/ \/ \/ \/ \/ \/ \/ \/ \/ DEFM "` ` ` ` abcdefg PRESENTS A LITTLE XMAS " DEFM "MENU - HIYA LUKE! WHATCHA THINK? THIS " DEFM "FONT, BY THE WAY, WAS DONE BY ME AND " DEFM "CAN BE SEEN IN ENTRO ONE... CRAP MUSIC " DEFM "THOUGH, ISN'T IT! HERE'S A LOGO OR " DEFM "TWO ... hij & klmn ... PRETTY NICE, HUH? " DEFM " ANYWAY, THIS IS hij SAYING B-BYE! " DEFM "(abcdefg - NO MATTER WHERE YOU GO, THERE " DEFM "YOU ARE...) BACK TO WORK, PEEPS! " DEFM " @1992 aNTROPY" ;/\ /\ /\ /\ /\ /\ /\ /\ /\ /\ /\ /\ /\ /\ /\ /\ /\ /\ /\ /\ /\ DEFB 255 entromess: DEFM " WELCOME TO THE ENTROPY 'MERRY HEXM" DEFM "AS' MENU... CREDITS: CODING - COOKIE " DEFM "GRAPHIX - COOKIE MUSIC - ANDY MONK " DEFM " SO, WHAT HAVE WE BEEN DOING WITH OURSEL" DEFM "VES THEN? WELL, WE'VE BEEN WORKING ON " DEFM " - OUR MEGADEMO, WHICH WIL" DEFM "L BE RELEASED SOME TIME (HOPEFULLY) IN " DEFM "DECEMBER! SO HOLD YA HORSES AND WAIT IN" DEFM " ANTICIPATION... PEOPLE WHO HAVE BEEN " DEFM "WAITING FOR MAXIDOS+ TO ARRIVE THROUGH " DEFM "THEIR LETTERBOXES: APOLOGIES! IT HASN'T " DEFM "BEEN FINISHED YET (ALTHOUGH IT WILL BE). " DEFM " IF YOU'VE ORDERED IT, THEN WAIT UNTIL YOU" DEFM " HEAR THAT IT HAS BEEN ACTUALLY OFFICIALLY" DEFM " RELEASED - THEN SEND US YOUR CHEQUE AGAIN" DEFM " (CHEQUES HAVE A HALFLIFE OF 6 MONTHS, SO " DEFM " THEY CAN'T BE CASHED AFTER THIS TIME... " DEFM "WHICH IS WHY YOU NEED TO SEND US YOURS A" DEFM "GAIN). FOR PEOPLE WHO HAVE ALREADY ORDER" DEFM "ED MAXIDOS+, IT WILL NOW COST ONLY 3 POUND" DEFM "S, BY WAY OF AN APOLOGY FOR TAKING SO LON" DEFM "G... ANYWAY, THAT'S ANOTHER STORY, AND " DEFM "TALKING OF STORIES, THIS MONTH'S ISSUE OF " DEFM "YOUR SINCLAIR HAS BOTH MY SPEC TEC COLUMN," DEFM " AND A SPECIAL CHRISTMAS STORY - WHAT HAS" DEFM " HAPPENED TO THE PICO FAMILY AFTER ALL THI" DEFM "S TIME? WHERE HAVE THEY GOT TO? WHAT DOES " DEFM "FATHER CHRISTMAS HAVE TO DO WITH CHINESE " DEFM "RESTAURANTS? AND WHAT ON EARTH HAVE I GOT " DEFM "TO DO WITH ALL THIS????? FIND OUT IN YS " DEFM "ISSUE 85... WHICH ALSO HAS A FREE TAPE, AN" DEFM "D A FREE TAPE HEAD CLEANING KIT ON THE " DEFM "COVER!!! ANYWAY, HERE'S A LIST OF ALL " DEFM "THE CURRENT ENTROPY MEMBERS: COOKIE, NICAM" DEFM " (JOINT HEADS) LORD BLACKADDER (SOFTWARE" DEFM " DIRECTOR) MIKE AJ, DR H, NEIL HOLMES, " DEFM "THE DVB, ANDY INSANITY (MEMBERS) WYRD M" DEFM "AJIK, SAM PSYCHOPATHS INC. (ASSOCIATE TEAM" DEFM "S) RESPECT IS DUE TO UPCOMING TEAM... " DEFM "THE WOMBLES!!! HELLOS TO: PAT SPENC" DEFM "ER, ALL OTHER ENTROPY DOODS, HOWARD PRICE," DEFM " AXIOM, ROOSTER, AGRAJAG, JOHN WORFIN, " DEFM " INFINITY (NASTY PIRACY DOODS), CHRIS WHIT" DEFM "E, COLIN MACD, ANDY MONK, DOOGLE, AND EVER" DEFM "YONE WHO GREETZ US (SORRY, BUT I'M WRITING" DEFM " THIS TOO LATE AT NIGHT TO THINK CLEARLY)" DEFM " ANYWAY, TIMES UP ON OUR SCROLLY, SO" DEFM " THIS IS WHERE WE'LL END IT! BE SEEING YOU" DEFM "! ENTROPY - NO MATTER WHERE YOU GO" DEFM ", THERE YOU ARE... THIS MENU HAS " DEFM "BEEN SPONSORED BY YOYODYNE PROPULSION " DEFM "SYSTEMS... " DEFB 255 ;*************************************************************** ;This bit prints up the 14 different options for the menu print.options: LD HL,&4500 LD (xpos),HL LD DE,option.text print.loop: LD A,(DE) INC DE CP 255 JP Z,end.p.opt CP 13 JP Z,carriage.ret CP 14 JP Z,tab.char PUSH DE LD HL,(xpos) SLA L SLA L SLA L SRL H RR L CALL text POP DE LD A,(xpos) INC A AND &1F LD (xpos),A JP print.loop tab.char: LD A,16 LD (xpos),A JP print.loop carriage.ret: LD A,(ypos) ADD A,6 LD (ypos),A XOR A LD (xpos),A JP print.loop end.p.opt: RET key.check: option.text: ; -------------------------------- DEFM " A-PROTOTYPE GAME !" DEFB 13 DEFM " B-ROGER'S TUNES (A)" DEFB 13 DEFM " C-128K GAMES (A)" DEFB 13 DEFM " D-INTERLACE DEMO" DEFB 13 DEFM " E-MESSAGE BOX SO FAR" DEFB 13,13 DEFM " (A) INDICATES ARCHIVED FILES" DEFB 13 DEFM "(CHOOSING DEARCHIVES THEM......)" DEFB 255 ;text printing routine (screen address has to be supplied) ;screen address- hl, character - a text: SUB 32 PUSH HL LD L,A LD H,0 ADD HL,HL ADD HL,HL ADD HL,HL ADD HL,HL EX DE,HL LD L,A LD H,0 ADD HL,HL ADD HL,HL ADD HL,HL ADD HL,DE LD DE,small.font ADD HL,DE EX DE,HL POP HL LD B,6 text.l: LD C,4 text.l2: LD A,(DE) LD (HL),A INC L INC DE DEC C JR NZ,text.l2 PUSH DE LD DE,124 ADD HL,DE POP DE DJNZ text.l RET xpos: DEFB 0 ypos: DEFB 0 main.pal: DEFB 0,32,34,38,98,106,110,64,2,4,36,44,31,113 DEFB 121,127 scroll.pal: DEFB 0,29,91,32,34,38,98,102,68,8,7,15,112,120 DEFB 119,127 scroll.font: MDAT "scroll.fnt" small.font: MDAT "fred28.fnt" ORG 0 DUMP 4,0 MDAT "fred28"