;MaxiDOS v2.3 Mouse driven menu ;------------------------------ ;(c) 1992 Simon Cooke ORG &8000 DUMP &8000 JP init_sys maxycursor: EQU 176 initmusic: EQU 32771 playmusic: EQU 32777 MDAT "emation" font: MDAT "max4.fnt" init_sys: DI LD (sp.store+1),SP LD SP,0 IN A,(&FA) LD (low.page+1),A XOR A LD (no.meg),A CALL caps.first LD A,2 LD (cursor_stat),A LD A,188 OUT (&F9),A CALL mouse_detect CALL set_stars CALL initmusic IN A,(&FC) AND 31 OR 32 OUT (&FA),A LD HL,scroll.mess LD (scroll.pos+1),HL LD A,1 LD (scroll.count+1),A LD HL,&FE00 LD A,H LD I,A IM 2 LD B,0 set.loop: LD (HL),&FD INC HL DJNZ set.loop LD (HL),&FD LD HL,&FDFD LD DE,interrupt LD (HL),195 INC HL LD (HL),E INC HL LD (HL),D EI JP mainstuff interrupt: PUSH AF PUSH BC PUSH DE PUSH HL IN A,(&F9) RRA JR NC,line_int exit_int: POP HL POP DE POP BC POP AF EI RET ;*** line_int: IN A,(&FA) PUSH AF IN A,(&FC) AND 31 OR 32 OUT (&FA),A CALL restore_b CALL para_stars CALL change_colour CALL putcursor LD HL,&5B01 LD DE,&5B00 scrollyloop: 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 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 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 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 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 scroll.count: LD A,1 DEC A LD (scroll.count+1),A OR A JR NZ,font.pos new.char: scroll.pos: LD HL,scroll.mess loop.grab.char: LD A,(HL) INC HL LD (scroll.pos+1),HL CP 255 JR NZ,not.wrap.scr LD HL,scroll.mess JR loop.grab.char not.wrap.scr: 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,font-768 ADD HL,DE LD DE,4 ADD HL,DE LD (font.pos+1),HL LD A,4 LD (scroll.count+1),A font.pos: LD DE,font LD HL,&5B7F LD A,(DE) AND &11 LD (HL),A EX DE,HL PUSH DE LD DE,4 ADD HL,DE POP DE EX DE,HL PUSH DE LD DE,128 ADD HL,DE POP DE LD A,(DE) AND &11 LD (HL),A EX DE,HL PUSH DE LD DE,4 ADD HL,DE POP DE EX DE,HL PUSH DE LD DE,128 ADD HL,DE POP DE LD A,(DE) AND &11 LD (HL),A EX DE,HL PUSH DE LD DE,4 ADD HL,DE POP DE EX DE,HL PUSH DE LD DE,128 ADD HL,DE POP DE LD A,(DE) AND &11 LD (HL),A EX DE,HL PUSH DE LD DE,4 ADD HL,DE POP DE EX DE,HL PUSH DE LD DE,128 ADD HL,DE POP DE LD A,(DE) AND &11 LD (HL),A LD HL,(font.pos+1) INC HL LD (font.pos+1),HL ; CALL playmusic POP AF OUT (&FA),A JP exit_int scroll.mess: DEFM "WELCOME TO MAXIDOS+ FROM ENTROPY" DEFM " TECHNOLOGY. THIS PROGRAM HAS BEEN " DEFM "PRODUCED FOR YOU BY COOKIE (CODING & GFX)," DEFM " AND NICAM (MUSIC). ALL MUSIC PRODUCED" DEFM " ON E-TRACKER, AN ABSOLUTELY BUZZING PIECE" DEFM " OF MUSIC SOFTWARE BY ESI... (ALTHOUGH " DEFM "MAYBE YOUR EDITOR WOULD HAVE LOOKED " DEFM "BETTER IF IT LOOKED SOMETHING LIKE THIS?) " DEFM " THIS PROGRAM IS <<>> " DEFM " --- READ THE END OF THE SCROLLY FOR " DEFM "A SHAREWARE NOTICE --- " DEFM " AS YOU CAN SEE, THIS SYSTEM IS BASED O" DEFM "N NOISETRACKER (FROM THE AMIGA), AND I THI" DEFM "NK IT LOOKS PRETTY DAMN GOOD! INSTRUC" DEFM "TIONS: USE EITHER THE MOUSE OR CURSOR KEYS" DEFM " TO MOVE THE POINTER. F0 OR ANY MOUSE BUTT" DEFM "ON SELECTS OR TOGGLES AN OPTION. NB: " DEFM "DURING DISC OPERATIONS, THE SYSTEM WILL FR" DEFM "EEZE, THE MUSIC WILL SWITCH ITSELF OFF " DEFM "(TEMPORARILY), AND THE CURSOR WILL DISAPP" DEFM "EAR - THIS IS FOR TIMING PURPOSES... " DEFM " ENOUGH BORING STUFF - ON TO THE GREETZ" DEFM " (IN ALPHABETICAL ORDER) : " DEFM "HI TO MIKE AJ, JUSTIN ASH, THE DVB, SAM " DEFM "BUCHANAN, ESI, TG, ROGER" DEFM " HARTLEY, LORD INSANITY, BRIAN MCCONNELL, " DEFM "COLIN MACDONALD, GRAHAM 'TURBO' MASON, " DEFM "ANDY MONK, HOWARD PRICE, PAT SPENCER, " DEFM "NEIL HOLMES, MASTER ILLUSION, WIZARD, " DEFM "CHRIS WHITE, " DEFM "IAN SLAVIN (MY ALPHABET SWITCHES " DEFM "AROUND A BIT), DAN DOORE ( - SEE WHAT I ME" DEFM "AN! ), PREDATOR (AN AMIGA-CODER TYPE GUY)," DEFM " AND EVERYONE ELSE WHO WE KNOW (AND A " DEFM "FEW WE DON'T) WHO WE'VE FORGOTTEN TO PUT I" DEFM "N! " DEFM "A SMALL NOTICE: THIS PROGRAM IS -SHAREWARE" DEFM "- WHICH BASICALLY MEANS THAT IF YOU FIND " DEFM "THIS PROGRAM HELPFUL, WE WOULD APPRECIATE " DEFM "A CHEQUE FOR `5.00 " DEFM "(ENGLISH POUNDS), MADE PAYABLE TO: " DEFM "SIMON COOKE; BEING SENT TO: ENTROPY SHAREW" DEFM "ARE," DEFM " 18 BRAEMAR DRIVE, SALE, " DEFM "CHESHIRE, M33 4NJ, ENGLAND. ANY UPDATE" DEFM "S SINCE THE RELEASE OF THIS THAT HAVE BEEN" DEFM " MADE WILL BE SENT TO YOU, WITH SOME OTHER" DEFM " BITS AND BOBS AS WELL... OF COURSE, IF " DEFM "NO UPDATES HAVE BEEN MADE, YOU'LL JUST GET" DEFM " THE OTHER STUFF - BUT IT ISN'T BAD: A NEW" DEFM "SLETTER EVERY 2 MONTHS (YOUR DOSH GETS YOU" DEFM " ONE YEAR'S WORTH), AS WELL AS PREVIEWS OF" DEFM " FORTHCOMING DEMO'S, GAMES, UTILITIES ETC." DEFM " YOU ALSO GET A 50% DISCOUNT ON " DEFM "TICKETS FOR ANY AMIG" DEFM "A OR SAM PARTIES THAT WE ARRANGE... SO W" DEFM "HAT ARE YOU WAITING FOR? SEND OFF THAT " DEFM "CHEQUE!!! AND REMEMBER: OUR ADDRESS IS" DEFM ": ENTROPY, 18 BRAEMAR DRIVE, SALE, CHESH" DEFM "IRE, M33 4NJ, ENGLAND... THANKS FOR " DEFM "LISTENING..." DEFM " " DEFM "MAXIDOS+ IS 1992 ENTROPY TECHNOLOGY" DEFM " IT'S ALSO SHAREWARE, SO SEND IN THAT C" DEFM "HEQUE FOR `5 (ENGLISH POUNDS)" DEFM " " DEFB 255 para_stars: LD HL,star_data XOR A LD E,(HL) INC HL LD D,(HL) SRL D RR E LD (DE),A DEC HL LD E,(HL) DEC E LD (HL),E INC HL INC HL LD E,(HL) INC HL LD D,(HL) SRL D RR E LD (DE),A DEC HL LD E,(HL) DEC E LD (HL),E INC HL INC HL LD E,(HL) INC HL LD D,(HL) SRL D RR E LD (DE),A DEC HL LD E,(HL) DEC E LD (HL),E INC HL INC HL LD E,(HL) INC HL LD D,(HL) SRL D RR E LD (DE),A DEC HL LD E,(HL) DEC E LD (HL),E INC HL INC HL LD E,(HL) INC HL LD D,(HL) SRL D RR E LD (DE),A DEC HL LD E,(HL) DEC E LD (HL),E INC HL INC HL LD E,(HL) INC HL LD D,(HL) SRL D RR E LD (DE),A DEC HL LD E,(HL) DEC E DEC E LD (HL),E INC HL INC HL LD E,(HL) INC HL LD D,(HL) SRL D RR E LD (DE),A DEC HL LD E,(HL) DEC E DEC E LD (HL),E INC HL INC HL LD E,(HL) INC HL LD D,(HL) SRL D RR E LD (DE),A DEC HL LD E,(HL) DEC E DEC E LD (HL),E INC HL INC HL LD E,(HL) INC HL LD D,(HL) SRL D RR E LD (DE),A DEC HL LD E,(HL) DEC E DEC E LD (HL),E INC HL INC HL LD E,(HL) INC HL LD D,(HL) SRL D RR E LD (DE),A DEC HL LD E,(HL) DEC E DEC E LD (HL),E INC HL INC HL LD E,(HL) INC HL LD D,(HL) SRL D RR E LD (DE),A DEC HL LD E,(HL) DEC E DEC E DEC E LD (HL),E INC HL INC HL LD E,(HL) INC HL LD D,(HL) SRL D RR E LD (DE),A DEC HL LD E,(HL) DEC E DEC E DEC E LD (HL),E INC HL INC HL LD E,(HL) INC HL LD D,(HL) SRL D RR E LD (DE),A DEC HL LD E,(HL) DEC E DEC E DEC E LD (HL),E INC HL INC HL LD E,(HL) INC HL LD D,(HL) SRL D RR E LD (DE),A DEC HL LD E,(HL) DEC E DEC E DEC E LD (HL),E INC HL INC HL LD E,(HL) INC HL LD D,(HL) SRL D RR E LD (DE),A DEC HL LD E,(HL) DEC E DEC E DEC E LD (HL),E INC HL INC HL LD E,(HL) INC HL LD D,(HL) SRL D RR E LD (DE),A DEC HL LD E,(HL) DEC E DEC E DEC E DEC E LD (HL),E INC HL INC HL LD E,(HL) INC HL LD D,(HL) SRL D RR E LD (DE),A DEC HL LD E,(HL) DEC E DEC E DEC E DEC E LD (HL),E INC HL INC HL LD E,(HL) INC HL LD D,(HL) SRL D RR E LD (DE),A DEC HL LD E,(HL) DEC E DEC E DEC E DEC E LD (HL),E INC HL INC HL LD E,(HL) INC HL LD D,(HL) SRL D RR E LD (DE),A DEC HL LD E,(HL) DEC E DEC E DEC E DEC E LD (HL),E INC HL INC HL LD E,(HL) INC HL LD D,(HL) SRL D RR E LD (DE),A DEC HL LD E,(HL) DEC E DEC E DEC E DEC E LD (HL),E INC HL INC HL LD E,(HL) INC HL LD D,(HL) SRL D RR E LD (DE),A DEC HL LD E,(HL) DEC E DEC E DEC E DEC E DEC E LD (HL),E INC HL INC HL LD E,(HL) INC HL LD D,(HL) SRL D RR E LD (DE),A DEC HL LD E,(HL) DEC E DEC E DEC E DEC E DEC E LD (HL),E INC HL INC HL LD E,(HL) INC HL LD D,(HL) SRL D RR E LD (DE),A DEC HL LD E,(HL) DEC E DEC E DEC E DEC E DEC E LD (HL),E INC HL INC HL LD E,(HL) INC HL LD D,(HL) SRL D RR E LD (DE),A DEC HL LD E,(HL) DEC E DEC E DEC E DEC E DEC E LD (HL),E INC HL INC HL LD E,(HL) INC HL LD D,(HL) SRL D RR E LD (DE),A DEC HL LD E,(HL) DEC E DEC E DEC E DEC E DEC E LD (HL),E INC HL INC HL LD E,(HL) INC HL LD D,(HL) SRL D RR E LD (DE),A DEC HL LD E,(HL) DEC E DEC E DEC E DEC E DEC E DEC E LD (HL),E INC HL INC HL LD E,(HL) INC HL LD D,(HL) SRL D RR E LD (DE),A DEC HL LD E,(HL) DEC E DEC E DEC E DEC E DEC E DEC E LD (HL),E INC HL INC HL LD E,(HL) INC HL LD D,(HL) SRL D RR E LD (DE),A DEC HL LD E,(HL) DEC E DEC E DEC E DEC E DEC E DEC E LD (HL),E INC HL INC HL LD E,(HL) INC HL LD D,(HL) SRL D RR E LD (DE),A DEC HL LD E,(HL) DEC E DEC E DEC E DEC E DEC E DEC E LD (HL),E INC HL INC HL LD E,(HL) INC HL LD D,(HL) SRL D RR E LD (DE),A DEC HL LD E,(HL) DEC E DEC E DEC E DEC E DEC E DEC E LD (HL),E INC HL INC HL LD E,(HL) INC HL LD D,(HL) SRL D RR E LD (DE),A DEC HL LD E,(HL) DEC E DEC E DEC E DEC E DEC E DEC E DEC E LD (HL),E INC HL INC HL LD E,(HL) INC HL LD D,(HL) SRL D RR E LD (DE),A DEC HL LD E,(HL) DEC E DEC E DEC E DEC E DEC E DEC E DEC E LD (HL),E INC HL INC HL LD E,(HL) INC HL LD D,(HL) SRL D RR E LD (DE),A DEC HL LD E,(HL) DEC E DEC E DEC E DEC E DEC E DEC E DEC E LD (HL),E INC HL INC HL LD E,(HL) INC HL LD D,(HL) SRL D RR E LD (DE),A DEC HL LD E,(HL) DEC E DEC E DEC E DEC E DEC E DEC E DEC E LD (HL),E INC HL INC HL LD E,(HL) INC HL LD D,(HL) SRL D RR E LD (DE),A DEC HL LD E,(HL) DEC E DEC E DEC E DEC E DEC E DEC E DEC E LD (HL),E INC HL INC HL LD E,(HL) INC HL LD D,(HL) SRL D RR E LD (DE),A DEC HL LD E,(HL) DEC E DEC E DEC E DEC E DEC E DEC E DEC E DEC E LD (HL),E INC HL INC HL LD E,(HL) INC HL LD D,(HL) SRL D RR E LD (DE),A DEC HL LD E,(HL) DEC E DEC E DEC E DEC E DEC E DEC E DEC E DEC E LD (HL),E INC HL INC HL LD E,(HL) INC HL LD D,(HL) SRL D RR E LD (DE),A DEC HL LD E,(HL) DEC E DEC E DEC E DEC E DEC E DEC E DEC E DEC E LD (HL),E INC HL INC HL LD E,(HL) INC HL LD D,(HL) SRL D RR E LD (DE),A DEC HL LD E,(HL) DEC E DEC E DEC E DEC E DEC E DEC E DEC E DEC E LD (HL),E INC HL INC HL LD E,(HL) INC HL LD D,(HL) SRL D RR E LD (DE),A DEC HL LD E,(HL) DEC E DEC E DEC E DEC E DEC E DEC E DEC E DEC E LD (HL),E LD B,20 LD HL,star_data para_loop1: LD E,(HL) INC HL LD D,(HL) INC HL SRL D RR E JR C,oddpix LD A,(DE) AND &0F OR &60 LD (DE),A DJNZ para_loop1 JR para2 oddpix: LD A,(DE) AND &F0 OR &06 LD (DE),A DJNZ para_loop1 para2: LD B,20 para_loop2: LD E,(HL) INC HL LD D,(HL) INC HL SRL D RR E JR C,oddpix2 LD A,(DE) AND &0F OR &70 LD (DE),A DJNZ para_loop2 RET oddpix2: LD A,(DE) AND &F0 OR &07 LD (DE),A DJNZ para_loop2 RET set_stars: LD HL,star_data LD B,40 set_star.l: LD A,R OR (HL) XOR L AND H LD E,A LD A,R XOR E LD (HL),A INC HL redial: LD A,R OR (HL) XOR L AND H LD E,A LD A,R XOR E imhere: CP 118 JR NC,test2 ADD A,58 JR imhere test2: CP 178 JR C,allokay SUB 58 JR imhere allokay: LD (HL),A INC HL DJNZ set_star.l RET star_data: DEFS 80 ;*************************************************************** INC "mouse .S" even_pointer: MDAT "pointr.gfx" odd_pointer: EQU even_pointer+144 ;*************************************************************** change_colour: LD BC,&F7F9 IN A,(C) CPL AND &80 capslock.f: OR &00 CP &81 RET Z CP &80 JR Z,caps.first XOR A LD (capslock.f+1),A RET caps.first: LD A,2 INC A CP 3 JR C,not.rel.col XOR A not.rel.col: LD (caps.first+1),A LD L,A LD H,0 ADD HL,HL ADD HL,HL LD DE,system.colour ADD HL,DE LD BC,&0CF8 colour.out: LD A,(HL) OUT (C),A INC HL INC B LD A,B CP 16 JR NZ,colour.out DEC HL DEC HL LD A,(no.meg) LD E,A LD D,0 ADD HL,DE LD A,(HL) LD BC,&0BF8 OUT (C),A LD A,1 LD (capslock.f+1),A RET no.meg: DEFB 0 system.colour: DEFB 15,120,119,127 DEFB 22,113,121,127 DEFB 36,44,99,107 mainboxes: DEFB 221,255,60,69 ;Quit box 1 DEFB 245,255,70,79 ;^ box 2 DEFB 245,255,80,107 ;EXIT box 3 DEFB 245,255,108,117;\/ box 4 DEFB 229,255,0,9 ;ESCAPE toggle 5 DEFB 229,255,10,19 ;NMI toggle 6 DEFB 229,255,20,29 ;ERROR toggle 7 DEFB 0,171,0,9 ;FORMAT box 8 DEFB 0,171,10,19 ;INSTALL box 9 DEFB 0,171,20,29 ;CATALOGUE box A DEFB 0,171,40,49 ;1MB INSTALL box B DEFB 0,171,50,59 ;DUPLICATE 1MB box C DEFB 145,171,30,39 ;MUSIC toggle D DEFB 255,255,255,255 ;Data End String mainstuff: LD A,&7F IN A,(&FE) RRA RRA JP NC,ret.to.basic LD HL,mainboxes ;call to find which box CALL whichbox ;is called - returns box ;number - or zero if not in OR A ;an active box. JP NZ,checkmain LD BC,&08F8 LD A,104 OUT (C),A INC B LD A,102 OUT (C),A INC B LD A,110 OUT (C),A JR mainstuff checkmain: LD E,A LD BC,&08F8 LD A,104 OUT (C),A INC B LD A,102 OUT (C),A INC B LD A,110 OUT (C),A LD A,(button) OR A JR Z,mainstuff LD A,E CP 1 JP Z,ret.to.basic JP mainstuff ret.to.basic: DI sp.store: LD SP,0 low.page: LD A,0 OUT (&FA),A IM 0 LD A,63 LD I,A EI RET ;Enter with HL holding list of active buttons onscreen. Returns ;with number (1-255) for gadget if cursor is in it. If cursor ;isn't in it, returns 0. whichbox: LD E,1 ;counter... boxloop: PUSH HL LD A,(HL) CP 255 JR NZ,continue.box INC HL LD A,(HL) CP 255 JR NZ,continue.box INC HL LD A,(HL) CP 255 JR NZ,continue.box INC HL LD A,(HL) CP 255 JR NZ,continue.box POP HL XOR A RET continue.box: POP HL PUSH HL LD D,(HL) INC HL LD A,(x_cursor) CP D JR C,next.box LD D,(HL) INC HL CP D JR C,y.box JR NZ,next.box y.box: LD D,(HL) INC HL LD A,(y_cursor) CP D JR C,next.box LD D,(HL) CP D JR C,this.box JR NZ,next.box this.box: POP HL LD A,E RET next.box: POP HL INC E INC HL INC HL INC HL INC HL JR boxloop ORG &FC00 DUMP &FC00 andtable: DEFB &FF,&F0,&F0,&F0,&F0,&F0,&F0 DEFB &F0,&F0,&F0,&F0,&F0,&F0,&F0 DEFB &F0,&F0,&0F DEFB 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,&0F DEFB 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,&0F DEFB 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,&0F DEFB 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,&0F DEFB 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,&0F DEFB 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,&0F DEFB 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,&0F DEFB 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,&0F DEFB 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,&0F DEFB 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,&0F DEFB 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,&0F DEFB 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,&0F DEFB 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,&0F DEFB 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,&0F DEFB 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0