LST OFF * ORG $9500 OBJ $8500 * * CONSTANTS * POLYGON EQU 1 BPOLYGON EQU 2 LIBOBJ EQU 3 * * TEMPS * PARAM EQU $00 TEMP EQU $07 XTEMP EQU TEMP+1 YTEMP EQU XTEMP+1 TEMP2 EQU YTEMP+1 * * DRAWBITS * B1 EQU $10 B2 EQU B1+2 * * MAIN PROGRAM * C EQU $80 CY EQU C+2 CXD7 EQU CY+1 CXM7 EQU CXD7+1 LASTITEM EQU CXM7+11 * * OBJECTS * OBJ EQU LASTITEM+2 NEXTOBJ EQU OBJ+2 OBJCOUNT EQU NEXTOBJ+1 PLYPTRX EQU OBJCOUNT+1 PLYPTRY EQU PLYPTRX+2 OBJID EQU PLYPTRY+2 FILLCOLOR EQU OBJID+1 VRTXCOUNT EQU FILLCOLOR+1 LB EQU VRTXCOUNT+1 SCANMODE EQU LB+2 MEMBTM EQU SCANMODE+1 MIDBTM EQU MEMBTM+2 MIDTOP EQU MIDBTM+2 MIDY EQU MIDTOP+2 * * EDITOR * COLOR EQU MIDY+1 CX EQU COLOR+1 EDITMODE EQU CX+1 OBJ2 EQU EDITMODE+1 MAXX EQU OBJ2+2 MAXY EQU MAXX+1 MINX EQU MAXY+1 MINY EQU MINX+1 LFTSTOP EQU MINY+1 RTSTOP EQU LFTSTOP+1 TOPSTOP EQU RTSTOP+1 BTMSTOP EQU TOPSTOP+1 DELX EQU BTMSTOP+1 DELY EQU DELX+1 DRAGX EQU DELY+1 DRAGY EQU DRAGX+1 MINPT EQU MINY+1 MINDIST EQU MINPT+1 MINPOLY EQU MINDIST+1 * * MAGNIFIER, WORLD * VERTA EQU B2+2 D7A EQU VERTA+1 M7A EQU D7A+1 VERTB EQU M7A+1 D7B EQU VERTB+1 M7B EQU D7B+1 BYTE2 EQU M7B+1 DRCNT EQU BYTE2+1 ZONE EQU DRCNT+1 NEXTZONE EQU ZONE+1 * COLBW EQU $C0 GRIDON EQU COLBW+1 MCOLOR EQU GRIDON+1 XDIR EQU MCOLOR+1 YDIR EQU XDIR+1 VR EQU YDIR+1 VRY EQU VR VRXD7 EQU VRY+1 VRXM7 EQU VRXD7+1 * NEXT EQU VR+6 * SLB EQU $C0 SLOLD EQU SLB+2 SLNEW EQU SLOLD+1 * COLORBAR EQU $200 * * PBDB * LOGIC EQU $4000 WSET EQU $4018 PBDATA EQU $401C OBJDX EQU PBDATA+1 PBDX EQU $6F40 * * EXTERNALS * D7 EQU $1400 M7 EQU D7+$100 LO EQU M7+$100 HI EQU LO+$C0 SETMODE EQU HI+$10F DRAWB EQU SETMODE+$25 XOFFDRAW EQU DRAWB+$3D MASKS EQU XOFFDRAW+$9A HLINE EQU MASKS+$F VLINE EQU HLINE+$20 FRAMER EQU VLINE+$58 DRAWR EQU FRAMER+$28 INR EQU DRAWR+$10 GETB EQU INR+$2D INITC EQU GETB+$7 XDRAWC EQU INITC+$1B UPDATEC EQU XDRAWC+$7 DOCX EQU UPDATEC+$1E GETCX EQU DOCX+$45 DOCY EQU GETCX+$16 JSCTRL EQU DOCY+$4D CINR EQU JSCTRL+$21 DOMENU EQU CINR+$13 SELECT EQU DOMENU+$54 INIT EQU SELECT+$40 MOVEUP EQU INIT+$35 MOVEDOWN EQU MOVEUP+$3B ADDIYX EQU MOVEDOWN+$39 ADDYX EQU ADDIYX+$E SUBIYX EQU ADDYX+$10 SUBYX EQU SUBIYX+$12 CMPYX EQU SUBYX+$10 CHARTO EQU CMPYX+$F PRCHAR EQU CHARTO+$A PRINT EQU PRCHAR+$38 * * PPAK * DRAWDISPLAY EQU $8E20 GETOBJ EQU DRAWDISPLAY+$3E GETNEXTOBJ EQU GETOBJ+$C GETINFO EQU GETNEXTOBJ+$1B DRAWOBJ EQU GETINFO+$3E SETCOLOR EQU DRAWOBJ+$14 SCANPOLY EQU SETCOLOR+$25 ALIGNPOLY EQU SCANPOLY+$404 GETSCAN EQU ALIGNPOLY+$39 MAKEHOLE EQU GETSCAN+$57 SELECTPOLY EQU MAKEHOLE+$4A POLYPOINTS EQU SELECTPOLY+$33 REMOVEPOLY EQU POLYPOINTS+$37 GETBOUNDS EQU REMOVEPOLY+$6E * * RUNTIME * PLAYSTART EQU $8854 POLY EQU PLAYSTART+$16E LAUNCHER EQU POLY+$B LEFTFLIPPER EQU LAUNCHER+$1B RIGHTFLIPPER EQU LEFTFLIPPER+$1B BALL EQU RIGHTFLIPPER+$1B BMP1 EQU BALL+$1B BMP2 EQU BMP1+$23 BMP3 EQU BMP2+$23 BMP4 EQU BMP3+$1B BMP5 EQU BMP4+$1B BMP6 EQU BMP5+$1B LKICK EQU BMP6+$1B RKICK EQU LKICK+$1D KICK1 EQU RKICK+$1D KICK2 EQU KICK1+$1B ROLL1 EQU KICK2+$1B ROLL2 EQU ROLL1+$1B ROLL3 EQU ROLL2+$1B TARG1 EQU ROLL3+$1B TARG2 EQU TARG1+$1B TARG3 EQU TARG2+$1B TARG4 EQU TARG3+$1B TARG5 EQU TARG4+$1B TARG6 EQU TARG5+$1B LFLIP2 EQU TARG6+$1B RFLIP2 EQU LFLIP2+$1B POLY1 EQU RFLIP2+$1B POLY2 EQU POLY1+$B POLY3 EQU POLY2+$B POLY4 EQU POLY3+$B LANE1 EQU POLY4+$B LANE2 EQU LANE1+$1B LANE3 EQU LANE2+$1B GATE1 EQU LANE3+$1B GATE2 EQU GATE1+$1B GATE3 EQU GATE2+$1B GATE4 EQU GATE3+$1B DROP1 EQU GATE4+$1B DROP2 EQU DROP1+$1C CATCH1 EQU DROP2+$1C CATCH2 EQU CATCH1+$1D SPIN EQU CATCH2+$1B MGNT EQU SPIN+$1B * SWAPWIRE EQU $1E08 SWAPDISK EQU $1E10 * START JSR INIT LDA #0 STA CY STA CXD7 STA CXM7 STA SCANMODE JSR DRAWDISPLAY JSR SAVELOGO * DRAWKIT JSR CLEARKIT LDA #6 STA COLOR LDY #0 STY EDITMODE * SETUP STY YTEMP LDA ICONS,Y LDX ICONS+1,Y JSR XOFFDRAW LDY YTEMP INY INY CPY #108 BNE SETUP * LDA #$80 STA SCANMODE LDY #0 SETUP2 STY NEXTOBJ LDA POLYS,Y STA OBJ LDA POLYS+1,Y STA OBJ+1 JSR GETINFO JSR DRAWOBJ LDY NEXTOBJ INY INY CPY #8 BNE SETUP2 * LDA #HAND JSR INITC * MAIN JSR JSCTRL JSR UPDATEC JSR GETB BPL MAIN * LDA #TABLEB JSR CINR BCC MAIN2 JSR MODE0 JMP MAIN * MODE0 LDA EDITMODE BNE MODE80 JMP DRAGOBJ MODE80 CMP #$80 BNE MODE81 JMP DRAGPOINT MODE81 CMP #$81 BNE MODE82 JMP CUTPOINT MODE82 CMP #$82 BNE MODE4 JMP PASTEPOINT MODE4 JMP PAINTOBJ * MAIN2 LDA #TOOLB JSR CINR BCC MAIN3 LDA #0 STA LASTITEM+1 JMP DOCMD * MAIN3 LDA EDITMODE BNE MAIN6 LDY #0 MAIN4 LDA BOXLO,Y LDX BOXHI,Y STY YTEMP JSR CINR LDY YTEMP BCC MAIN5 LDA OBJADDRHI,Y STA TEMP LDA OBJLEN,Y LDX OBJADDRLO,Y LDY TEMP JSR ADDOBJ JMP MAIN * MAIN5 INY CPY #43 BCC MAIN4 MAIN6 JMP MAIN * DOCMD LDA #CMDMENU JSR DOMENU MAIN8 JMP MAIN * HAND DA *+7 HEX 0225010C02 HEX 030006000C00180C HEX 34067C067E077E07 HEX 7C0B780D70060003 * POINTER DA *+7 HEX 1125030701 HEX 1F0F0F1F397060 * SCISSOR DA *+7 HEX 1B25020B02 HEX 10003100330036002C001800 HEX 30034C04520412030C00 * HAMMER DA *+7 HEX 2925020B02 HEX 7B005B010001180018001800 HEX 18001800180018001800 * BRUSH DA *+7 HEX 3725030801 HEX 3F7C780030303030 * INITHAND JSR POINTSOFF LDA #HAND LDY #0 SETEDMODE STY EDITMODE JMP INITC * INITPOINTER JSR POINTSON LDA #POINTER LDY #$80 BNE SETEDMODE * INITSCISSOR JSR POINTSON LDA #SCISSOR LDY #$81 BNE SETEDMODE * INITHAMMER JSR POINTSON LDA #HAMMER LDY #$82 BNE SETEDMODE * INITBRUSH JSR POINTSOFF LDA #BRUSH LDY #1 BNE SETEDMODE * POINTSON BIT EDITMODE BMI POINTS3 BPL POINTS2 POINTSOFF BIT EDITMODE BPL *+5 POINTS2 JSR DRAWPOINTS POINTS3 JMP XDRAWC * DRAWLOGO LDA #LOGO JMP DRAWB * SAVELOGO LDY #1 JSR SETMODE LDA #LOGO JMP DRAWB * LOGO DA $380 HEX 0016004012 * WHITE LDY #6 SETCLR STY COLOR JMP SETCOLOR * GREEN LDY #2 BNE SETCLR * VIOLET LDY #4 BNE SETCLR * RED LDY #10 BNE SETCLR * BLUE LDY #12 BNE SETCLR * CLEARKIT LDY #3 JSR SETMODE LDA #KITB JSR DRAWR LDY #2 JMP SETMODE * PLAY JSR POINTSOFF JSR CLEARKIT JSR DRAWLOGO JSR PLAYSTART REEDIT JSR SAVELOGO JMP DRAWKIT * MAGPAINT JSR POINTSOFF JSR CLEARKIT JSR DRAWLOGO JSR MAGSTART JMP REEDIT * SETWORLD JSR POINTSOFF JSR CLEARKIT JSR WORLDSTART JMP DRAWKIT * WIREKIT JSR POINTSOFF JSR CLEARKIT JSR SWAPWIRE JMP DRAWKIT * DISKIO JSR POINTSOFF JSR CLEARKIT JSR DRAWLOGO JSR SWAPDISK JMP REEDIT * DRAGOBJ JSR SELECTPOLY BCS DRAGO2 RTS * DRAGO2 LDX #$80 STX SCANMODE ;NO MERGE TAY JSR GETOBJ * DRAGO4 JSR REMOVEPOLY * DRAGOBJ2 JSR XDRAWC JSR GETBOUNDS LDX PARAM+3 LDA D7,X STA CXD7 LDA M7,X STA CXM7 JSR XDRAWC * LDY #0 STY RTSTOP STY BTMSTOP LDA #$FF STA LFTSTOP STA TOPSTOP DRAGO5 LDA (PLYPTRX),Y CMP LFTSTOP BCS *+4 STA LFTSTOP CMP RTSTOP BCC *+4 STA RTSTOP LDA (PLYPTRY),Y CMP TOPSTOP BCS *+4 STA TOPSTOP CMP BTMSTOP BCC *+4 STA BTMSTOP INY CPY VRTXCOUNT BNE DRAGO5 * JSR GETCX STA DRAGX SEC SBC LFTSTOP CLC ADC #1 STA LFTSTOP LDA #255 SEC SBC RTSTOP CLC ADC DRAGX SEC SBC #1 STA RTSTOP * LDA CY STA DRAGY SEC SBC TOPSTOP CLC ADC #1 STA TOPSTOP LDA #191 SEC SBC BTMSTOP CLC ADC CY SEC SBC #1 STA BTMSTOP * DRAGO6 JSR DRAWOBJ * JSR GETCX CMP LFTSTOP BCS *+4 LDA LFTSTOP CMP RTSTOP BCC *+4 LDA RTSTOP TAX SEC SBC DRAGX * CMP #$10 BCC *+6 CMP #$F0 BCC DRAGO8 STA DELX STX DRAGX * LDA CY CMP TOPSTOP BCS *+4 LDA TOPSTOP CMP BTMSTOP BCC *+4 LDA BTMSTOP TAX SEC SBC DRAGY STA DELY STX DRAGY * LDY #0 DRAGO7 LDA (PLYPTRX),Y CLC ADC DELX STA (PLYPTRX),Y LDA (PLYPTRY),Y CLC ADC DELY STA (PLYPTRY),Y INY CPY VRTXCOUNT BNE DRAGO7 * LDA OBJID CMP #TABLEB JSR CINR BCC DELETEOBJ LDA SCANMODE AND #$7F ;MERGE STA SCANMODE JSR DRAWOBJ BCC RTS1 * JSR REMOVEPOLY JSR DRAWOBJ JSR REMOVEPOLY JMP DELETEOBJ RTS1 RTS * DELETEOBJ LDY NEXTOBJ LDA OBJDX,Y STA YTEMP TYA CLC ADC #OBJDX STA TEMP+1 LDA #1 LDY #PBDX BNE DELOBJ2 * LDY #0 DELOBJ4 JSR FIXINDX INY JSR FIXINDX INY JSR FIXINDX INY INY CPY #24 BCC DELOBJ4 RTS * FIXINDX LDA LOGIC,Y CMP NEXTOBJ BCC FIXIN2 BNE *+4 LDA #1 SBC #1 STA LOGIC,Y FIXIN2 RTS * ADDOBJ STX OBJ2 STY OBJ2+1 STA YTEMP ;SIZE + 1 * LDX OBJCOUNT INX BMI ABORTAO LDA MIDTOP SEC SBC MIDBTM TAX LDA MIDTOP+1 SBC MIDBTM+1 BNE ADDOBJ1 TXA CMP #32 BCS ADDOBJ1 ABORTAO RTS * ADDOBJ1 LDA YTEMP LDY #POLYB DA >LAUNCHERB DA >LFLIPB DA >RFLIPB DA >BALLB DA >BMP1B DA >BMP2B DA >BMP3B DA >BMP4B DA >BMP5B DA >BMP6B DA >LKICKB DA >RKICKB DA >KICK1B DA >KICK2B DA >ROLL1B DA >ROLL2B DA >ROLL3B DA >TARG1B DA >TARG2B DA >TARG3B DA >TARG4B DA >TARG5B DA >TARG6B DA >LFLIP2B DA >RFLIP2B DA >POLY1B DA >POLY2B DA >POLY3B DA >POLY4B DA >LANE1B DA >LANE2B DA >LANE3B DA >GATE1B DA >GATE2B DA >GATE3B DA >GATE4B DA >DROP1B DA >DROP2B DA >CATCH1B DA >CATCH2B DA >SPINB DA >MGNTB * OBJLEN HEX 0B1B1B1B222323 HEX 1B1B1B1B1D1D1B1B1B HEX 1B1B1B1B1B1B1B1B1B HEX 1B0B0B0B0B1B1B1B1B HEX 1B1B1B1C1C1E1B1C1B * OBJADDRLO DA POLY DA >LAUNCHER DA >LEFTFLIPPER DA >RIGHTFLIPPER DA >BALL DA >BMP1 DA >BMP2 DA >BMP3 DA >BMP4 DA >BMP5 DA >BMP6 DA >LKICK DA >RKICK DA >KICK1 DA >KICK2 DA >ROLL1 DA >ROLL2 DA >ROLL3 DA >TARG1 DA >TARG2 DA >TARG3 DA >TARG4 DA >TARG5 DA >TARG6 DA >LFLIP2 DA >RFLIP2 DA >POLY1 DA >POLY2 DA >POLY3 DA >POLY4 DA >LANE1 DA >LANE2 DA >LANE3 DA >GATE1 DA >GATE2 DA >GATE3 DA >GATE4 DA >DROP1 DA >DROP2 DA >CATCH1 DA >CATCH2 DA >SPIN DA >MGNT * TABLEB HEX 000000BF1506 * KITB HEX 001600BF1106 * TOOLB HEX 002400BF0306 * HANDB HEX 0024000E0306 * POINTERB HEX 0F2400090306 * SCISSORB HEX 1924000D0306 * HAMMERB HEX 2724000D0306 * BRUSHB HEX 3524000A0306 * WHITEB HEX 402400090306 * GREENB HEX 4A2400090306 * REDB HEX 542400090306 * VIOLETB HEX 5E2400090306 * BLUEB HEX 682400090306 * PLAYB HEX 7324000C0306 * MAGNB HEX 8124000C0306 * WORLDB HEX 8F24000C0306 * WIREB HEX 9D24000C0306 * DISKB HEX AB24000D0306 * POLYB HEX 1B1705100202 * LAUNCHERB HEX 4922020C0006 * LFLIPB HEX 021C06100204 * RFLIPB HEX 021F01100204 * BALLB HEX 052206050005 * BMP1B HEX 301705110203 * BMP2B HEX 311A020A0106 * BMP3B HEX 301C04100004 * BMP4B HEX 351D05050204 * BMP5B HEX 3020030D0105 * BMP6B HEX 3022030D0105 * LKICKB HEX 4417051A0204 * RKICKB HEX 441B011A0204 * KICK1B HEX 4A1E030D0005 * KICK2B HEX 4E1F06060104 * ROLL1B HEX A01801050004 * ROLL2B HEX A01901050004 * ROLL3B HEX A01A01050004 * TARG1B HEX A01B03030006 * TARG2B HEX A01D00030006 * TARG3B HEX A01E04030006 * TARG4B HEX A02003070002 * TARG5B HEX A02103070002 * TARG6B HEX A02203070002 * LFLIP2B HEX 0517050A0105 * RFLIP2B HEX 0519040A0105 * POLY1B HEX 1B1C02120001 * POLY2B HEX 201D010D0001 * POLY3B HEX 251E000A0405 * POLY4B HEX 161E000A0405 * LANE1B HEX 9018010A0004 * LANE2B HEX 901904080004 * LANE3B HEX 901B00050004 * GATE1B HEX 901C05090006 * GATE2B HEX 901E05090006 * GATE3B HEX 902005090006 * GATE4B HEX 902205090006 * DROP1B HEX 641A00040403 * DROP2B HEX 641800200005 * CATCH1B HEX 6C1A04130103 * CATCH2B HEX 701D00090103 * SPINB HEX 642006050006 * MGNTB HEX 742006070102 * ICONS DA HAND DA POINTER DA SCISSOR DA HAMMER DA BRUSH DA WHITEPAINT DA GREENPAINT DA VIOLETPAINT DA REDPAINT DA BLUEPAINT DA PLAYICON DA MAGNIFIER DA WORLD DA ANDG DA DISK DA POLYICON DA LAUNCHER+$B DA LEFTFLIPPER+$B DA RIGHTFLIPPER+$B DA BALL+$B DA BMP1+$13 DA BMP2+$13 DA BMP3+$B DA BMP4+$B DA BMP5+$B DA BMP6+$B DA LKICK+$D DA RKICK+$D DA KICK1+$B DA KICK2+$B DA ROLL1+$B DA ROLL2+$B DA ROLL3+$B DA TARG1+$B DA TARG2+$B DA TARG3+$B DA TARG4+$B DA TARG5+$B DA TARG6+$B DA LFLIP2+$B DA RFLIP2+$B DA LANE1+$B DA LANE2+$B DA LANE3+$B DA GATE1+$B DA GATE2+$B DA GATE3+$B DA GATE4+$B DA DROP1+$B DA DROP2+$B DA CATCH1+$D DA CATCH2+$B DA SPIN+$B DA MGNT+$B * POLYS DA POLY1 DA POLY2 DA POLY3 DA POLY4 * WHITEPAINT DA *+7 HEX 4225010702 HEX 7F077F0700007F077F077F077F07 * GREENPAINT DA *+7 HEX 4C25010702 HEX 7F077F0700002A052A052A052A05 * VIOLETPAINT DA *+7 HEX 6025010702 HEX FE0FFE0F0000540A540A540A540A * REDPAINT DA *+7 HEX 5625010702 HEX FE0FFE0F0000AA85AA85AA85AA85 * BLUEPAINT DA *+7 HEX 6A25010702 HEX FE8FFE8F0000D48AD48AD48AD48A * PLAYICON DA *+7 HEX 7525000A02 HEX 1E383F7C7F7C7F7D7E3B7807600F001F003C0030 * MAGNIFIER DA *+7 HEX 8325000A02 HEX 78010606030C030C030C060678030007000E000C * WORLD DA *+7 HEX 9124060A02 HEX 70075C0A562A572A572A572A572A562A5C0A7007 * ANDG DA *+7 HEX 9F24060A03 HEX 730F00333800306000304001334031334031304001306000333800730F00 * DISK DA *+7 HEX AD24060B02 HEX 7F3F0120612171237123712361210120412041207F3F * POLYICON DA *+7 HEX 1917051003 HEX 07001C777F1D07001C000000 HEX 020008020008020008020008 HEX 020008020008020008020008 HEX 00000007001C777F1D07001C * MAGSTART LDA #ICON1 JSR XOFFDRAW JSR DRAWQUIT LDA #ICON2 JSR XOFFDRAW * JSR INITMAG LDA #BRUSH JSR INITC * MMAIN JSR JSCTRL JSR UPDATEC JSR GETB BPL MMAIN * LDA #VR JSR CINR BCC MMAIN3 MMAIN2 JSR DRAG JMP MMAIN * MMAIN3 LDA #MAGB JSR CINR BCC MMAIN4 LDA #MAG JSR CINR BCC *+8 JSR PLOT JMP MMAIN JSR SLIDEMAG JMP MMAIN * MMAIN4 LDA #MCMDB JSR CINR BCC MMAIN2 LDA #0 STA LASTITEM+1 JMP MDOCMD * MDOCMD LDA #MCMDMENU JSR DOMENU JMP MMAIN * MCMDMENU DA COLBWB DA SWITCHCOLBW DA GRIDB DA GRIDTOGL DA MQUITB DA MQUIT DA MWHTB DA MWHITE DA MGRNB DA MGREEN DA MVLTB DA MVIOLET DA MREDB DA MRED DA MBLUB DA MBLUE HEX 00 * MQUIT JSR DRAWVIEWR WQUIT PLA PLA RTS * DRAWQUIT LDA #3 LDX #26 LDY #178 JSR CHARTO LDA #QUITMSG JMP PRINT QUITMSG HEX 1A1E129D * MWHITE LDY #6 MSETCLR BIT COLBW BMI MSETCLR2 STY MCOLOR JMP SETCOLOR MSETCLR2 RTS * MGREEN LDY #2 BNE MSETCLR * MVIOLET LDY #4 BNE MSETCLR * MRED LDY #10 BNE MSETCLR * MBLUE LDY #12 BNE MSETCLR * PLOT JSR DRAWVIEWR LDA MCOLOR JSR INSQR STX XTEMP STY YTEMP STA TEMP JSR INMAG BCS PLOT6 JSR HPLOT BCC PLOT2 LDA MCOLOR BCS PLOT3 PLOT2 LDA MCOLOR AND #$08 PLOT3 TAY JSR SETCOLOR LDX XTEMP LDY YTEMP LDA TEMP JSR HPLOT JMP PLOT5 * PLOT4 JSR INSQR BCC PLOT6 STX XTEMP STY YTEMP STA TEMP JSR INMAG BCS PLOT6 JSR HPLOT BCC PLOT6 PLOT5 JSR DISPLAYPLOT PLOT6 JSR UPDATEC JSR GETB BMI PLOT4 LDY MCOLOR JSR SETCOLOR JMP DRAWVIEWR * DISPLAYPLOT JSR XDRAWC LDY CY LDX D7-71,Y ;64+7 TXA CLC ADC VRY STA VERTA LDA MUL7,X CLC ADC #71 STA VERTB * LDA VRXD7 STA D7A LDA VRXM7 STA M7A JSR DOROW JMP XDRAWC * INMAG STX PARAM+3 STA PARAM+4 STY PARAM+5 LDA #MCMDB JSR INR LDA TEMP LDX XTEMP LDY YTEMP RTS * HPLOT LDA LO,Y STA B1 LDA HI,Y STA B1+1 * BIT COLBW BPL HPLOT2 * LDY TEMP LDA MASK,Y STA TEMP2 TXA TAY LDA $C062 AND #$80 ORA COLORBAR,Y EOR (B1),Y AND TEMP2 EOR (B1),Y CMP #$80 BNE *+4 LDA #0 CMP (B1),Y SEC BNE *+3 CLC STA (B1),Y RTS * HPLOT2 TXA LSR PHP ASL TAY LDA TEMP PLP BCC *+4 ADC #6 ;ADD 7 AND #$FE TAX LDA CLRMASK,X STA TEMP2 LDA CLRMASK+1,X STA TEMP2+1 LDA COLORBAR,Y EOR (B1),Y AND TEMP2 EOR (B1),Y CMP #$80 BNE *+4 LDA #0 CMP (B1),Y SEC BNE *+3 CLC STA (B1),Y INY LDA COLORBAR,Y EOR (B1),Y AND TEMP2+1 EOR (B1),Y PHP CMP #$80 BNE *+4 LDA #0 PLP BCS HPLOT3 CMP (B1),Y SEC BNE *+3 CLC HPLOT3 STA (B1),Y RTS * MASK HEX 8182848890A0C0 * CLRMASK HEX 83008C00B000C0810086009800E0 * MUL7 HEX 00070E151C232A HEX 31383F464D545B HEX 626970777E858C HEX 939AA1A8AFB6BD HEX C4CBD2D9E0E7EE HEX F5FC * MCMDB HEX 4016007F1106 * COLBWB HEX B016000B0106 * GRIDB HEX B018000B0106 * MQUITB HEX B01A000B0401 * MWHTB HEX B01E020B0105 * MGRNB HEX B020010B0105 * MVLTB HEX B022000B0105 * MREDB HEX B023060B0105 * MBLUB HEX B025050B0105 * ICON1 DA *+7 HEX B116000A04 HEX 7E3F3E1F7E303E1F7E303E1F7E303E1F HEX 7E3000007E303E1F7E303E1F7E303E1F HEX 7E303E1F7E3F0000 * ICON2 DA *+7 HEX B11E000A0A HEX 703F781F7C0FFE87FF83 HEX 703F781F7C0FFE87FF83 HEX 00000000000000000000 HEX 703F2815540AAA85D582 HEX 703F2815540AAA85D582 HEX 703F2815540AAA85D582 HEX 703F2815540AAA85D582 HEX 703F2815540AAA85D582 HEX 703F2815540AAA85D582 HEX 703F2815540AAA85D582 * INITMAG LDY #4 JSR SETMODE * LDA #MBAR1 JSR DRAWR LDA #MBAR2 JSR DRAWR LDA #MBAR3 JSR DRAWR LDA #MBAR4 JSR DRAWR * LDA #$00 STA COLBW STA GRIDON LDY #6 STY MCOLOR JSR SETCOLOR * LDA #0 STA VRY STA VRXD7 STA VRXM7 LDA #13 STA VR+3 LDA #2 STA VR+4 LDA #1 STA VR+5 JSR BLOWUP * LDY #2 JSR SETMODE * DRAWVIEWR LDA #VR JMP FRAMER * SWITCHCOLBW LDA COLBW EOR #$80 STA COLBW LDY #6 STY MCOLOR JSR SETCOLOR DOCMDOUT JMP MAGNIFY * GRIDTOGL LDA GRIDON EOR #$80 STA GRIDON BMI GRIDTGL2 * LDA #$7F STA GMOD1 STA GMOD2 STA GMOD3 STA GMOD4 LDA #$2A STA GMOD5 LDA #$AA STA GMOD6 LDA #$55 STA GM7 LDA #$D5 STA GMOD8 BNE DOCMDOUT * GRIDTGL2 LDA #$3F STA GMOD1 STA GMOD3 STA GMOD4 LDA #$77 STA GMOD2 LDA #$0A STA GMOD5 LDA #$8A STA GMOD6 LDA #$15 STA GM7 LDA #$95 STA GMOD8 BNE DOCMDOUT * INSQR LDA #MAG JSR CINR PHP LDY CY LDA D7-71,Y CLC ADC VRY TAY LDA CXD7 SEC SBC #23 CLC ADC VRXM7 LDX VRXD7 INSQR2 CMP #7 BCC INSQR3 SBC #7 INX BCS INSQR2 INSQR3 PLP RTS * SLIDEMAG LDA #0 STA XDIR STA YDIR * LDA #MBAR1 JSR CINR BCC SLIDEM2 LDY #$FE STY YDIR BNE SLIDEM3 * SLIDEM2 LDA #MBAR4 JSR CINR BCC SLIDEM3 LDY #2 STY YDIR * SLIDEM3 LDA #MBAR2 JSR CINR BCC SLIDEM4 LDX #$FE STX XDIR BNE SLIDEM5 * SLIDEM4 LDA #MBAR3 JSR CINR BCC SLIDEM5 LDX #2 STX XDIR * SLIDEM5 JSR XDRAWC JSR SLIDEVIEWR JSR XDRAWC RTS * SLIDEVIEWR JSR DRAWVIEWR * CLC LDX VRXD7 LDA XDIR BMI SLIDEVWR2 ADC VRXM7 CMP #7 BCC *+5 SBC #7 INX CPX #37 BCC SLIDEVWR3 BNE SLIDEVWR4 CMP #6 BCC SLIDEVWR3 BCS SLIDEVWR4 * SLIDEVWR2 ADC VRXM7 BPL *+5 ADC #7 DEX BMI SLIDEVWR4 * SLIDEVWR3 STX VRXD7 STA VRXM7 * SLIDEVWR4 CLC LDA YDIR BMI SLIDEVWR5 ADC VRY CMP #179 BCS SLIDEVWR7 BCC SLIDEVWR6 SLIDEVWR5 ADC VRY BCC SLIDEVWR7 SLIDEVWR6 STA VRY * SLIDEVWR7 JSR BLOWUP JSR DRAWVIEWR * LDA #50 JSR $FCA8 JSR GETB BPL *+5 JMP SLIDEVIEWR RTS * DRAG JSR XDRAWC DRAG2 JSR DRAWVIEWR * JSR DOCX STX CXD7 STA CXM7 JSR DOCY STA CY * CMP #178 BCC *+4 LDA #178 STA VRY * LDX CXD7 TXA LSR LDA CXM7 BCS DRAG3 AND #$FE BCC DRAG4 DRAG3 ORA #$01 CMP #7 BCC *+5 LDA #0 INX * DRAG4 CPX #37 BCC DRAG6 BNE DRAG5 CMP #5 BCC DRAG6 DRAG5 LDX #37 LDA #5 * DRAG6 STX VRXD7 STA VRXM7 * JSR BLOWUP JSR DRAWVIEWR * LDA #80 JSR $FCA8 JSR GETB BMI DRAG2 JSR XDRAWC RTS * MAGNIFY JSR DRAWVIEWR JSR BLOWUP JMP DRAWVIEWR * BLOWUP LDA #71 STA VERTB LDA VRY STA VERTA LDA VRXD7 STA D7A LDA VRXM7 STA M7A * BLOWUP2 JSR DOROW INC VERTA LDA VERTB CLC ADC #7 STA VERTB CMP #169 BCC BLOWUP2 RTS * DOROW LDY VERTA LDA LO,Y STA B1 LDA HI,Y STA B1+1 * LDY VERTB LDX #0 BIT COLBW BPL DOROWCLR * DOROWBW LDA LO,Y STA UNWND1,X LDA HI,Y STA UNWND1+1,X INY INX INX INX CPX #18 BCC DOROWBW * JSR INITROW LDX #16 STX DRCNT LDX #23 * DODOTBW PHP LSR BNE DODOTBW2 INY LDA (B1),Y STA ZONE ORA #$80 LSR * DODOTBW2 BCC DODOTBW5 BIT ZONE BMI DODOTBW3 * PLP PHA SEC GMOD1 EQU *+1 LDA #$7F BNE ZAPBW * DODOTBW3 PLP PHA BCC DODOTBW4 * GMOD2 EQU *+1 LDA #$7F BNE ZAPBW * DODOTBW4 SEC LDA #$70 BNE ZAPBW * DODOTBW5 BIT ZONE BMI DODOTBW6 * PLP PHA CLC LDA #$00 BCC ZAPBW * DODOTBW6 PLP PHA BCC DODOTBW7 * CLC LDA #$0F BNE ZAPBW * DODOTBW7 LDA #$00 * UNWND1 EQU *+1 ZAPBW STA $FFFF,X STA $FFFF,X STA $FFFF,X STA $FFFF,X STA $FFFF,X STA $FFFF,X INX PLA * DEC DRCNT BNE DODOTBW RTS * DOROWCLR LDA LO,Y STA UNWND2A,X STA UNWND2B,X LDA HI,Y STA UNWND2A+1,X STA UNWND2B+1,X INY INX INX INX CPX #18 BCC DOROWCLR * JSR INITROW LDX #8 STX DRCNT LDX #23 * DODOTCLR PHP LSR BNE DODOTCLR2 INY LDA (B1),Y STA ZONE STA NEXTZONE ORA #$80 LSR * DODOTCLR2 PHP LSR BNE DODOTCLR3 INY LDA (B1),Y STA NEXTZONE ORA #$80 LSR * DODOTCLR3 BCC DODOTCLR6 PLP BCC DODOTCLR4 * PLP PHA SEC GMOD3 EQU *+1 LDA #$7F STA BYTE2 LDA #$7F BNE ZAPCLR * DODOTCLR4 PLP PHA LSR BNE *+7 INY LDA (B1),Y LSR DEY BCC DODOTCLR5 * SEC GMOD4 EQU *+1 LDA #$7F STA BYTE2 LDA #$00 BCS ZAPCLR * DODOTCLR5 SEC BIT NEXTZONE BMI *+10 GMOD5 EQU *+1 LDA #$2A STA BYTE2 LDA #$55 BNE ZAPCLR GMOD6 EQU *+1 LDA #$AA STA BYTE2 LDA #$D5 BNE ZAPCLR * DODOTCLR6 PLP BCC DODOTCLR8 PLP PHA BCC DODOTCLR7 * CLC LDA #$00 STA BYTE2 LDA #$7F BNE ZAPCLR * DODOTCLR7 CLC BIT ZONE BMI *+10 GM7 EQU *+1 LDA #$55 STA BYTE2 LDA #$2A BNE ZAPCLR GMOD8 EQU *+1 LDA #$D5 STA BYTE2 LDA #$AA BNE ZAPCLR * DODOTCLR8 PLP PHA CLC LDA #$00 STA BYTE2 * UNWND2A EQU *+1 ZAPCLR STA $FFFF,X STA $FFFF,X STA $FFFF,X STA $FFFF,X STA $FFFF,X STA $FFFF,X INX LDA BYTE2 UNWND2B EQU *+1 STA $FFFF,X STA $FFFF,X STA $FFFF,X STA $FFFF,X STA $FFFF,X STA $FFFF,X * LDA NEXTZONE STA ZONE * PLA INX DEC DRCNT BEQ *+5 JMP DODOTCLR RTS * INITROW LDY D7A LDX M7A BNE INITROW2 CLC DEY BMI INITROW2 LDA (B1),Y ROL ROL INY LDA (B1),Y STA ZONE STA NEXTZONE ORA #$80 BNE INITROW4 * INITROW2 LDA (B1),Y STA ZONE STA NEXTZONE ORA #$80 INITROW3 LSR DEX BNE INITROW3 INITROW4 RTS * MAGB HEX 4016006F1106 * MAG HEX 471700610F06 * MBAR1 HEX 401600061106 * MBAR2 HEX 4016006F0006 * MBAR3 HEX 4027006F0006 * MBAR4 HEX A91600061106 * WORLDSTART JSR DRAWQUIT * LDY #0 WSTRT2 STY YTEMP LDA SLIDESLO,Y LDX SLIDESHI,Y JSR XOFFDRAW LDY YTEMP JSR INITSLIDE INY CPY #4 BNE WSTRT2 * LDA #0 LDX #24 LDY #6 JSR CHARTO LDA #HEAD1 JSR PRINT LDA #2 LDX #33 LDY #6 JSR CHARTO LDA #HEAD2 JSR PRINT LDA #2 LDX #25 LDY #70 JSR CHARTO LDA #HEAD3 JSR PRINT LDA #0 LDX #31 LDY #70 JSR CHARTO LDA #HEAD4 JSR PRINT * LDA #HAND JSR INITC * WMAIN JSR JSCTRL JSR UPDATEC JSR GETB BPL WMAIN * WMAIN2 LDY #0 WMAIN3 LDA SLBLO,Y LDX SLBHI,Y STY YTEMP JSR CINR LDY YTEMP BCC WMAIN4 JSR DOSLIDE JMP WMAIN WMAIN4 INY CPY #4 BNE WMAIN3 * LDA #MCMDB JSR CINR BCC WMAIN LDA #0 STA LASTITEM+1 JMP WDOCMD * WDOCMD LDA #WCMDMENU JSR DOMENU JMP WMAIN * WCMDMENU DA MQUITB DA WQUIT HEX 00 * DOSLIDE LDA SLIDESLO,Y STA SLB LDA SLIDESHI,Y STA SLB+1 DOSL2 LDA WSET,Y STA SLOLD LDA CY SEC LDY #2 SBC (SLB),Y BCS DOSL3 LDY #0 BEQ DOSL5 * DOSL3 LDY #7 DOSL4 CMP SLDXDY,Y BCS DOSL5 DEY BNE DOSL4 DOSL5 STY SLNEW TYA LDY YTEMP STA WSET,Y JSR MOVESLIDE JSR UPDATEC LDY YTEMP JSR GETB BMI DOSL2 RTS * INITSLIDE LDA SLIDESLO,Y STA SLB LDA SLIDESHI,Y STA SLB+1 LDA #0 STA SLOLD LDA WSET,Y STA SLNEW * MOVESLIDE LDY #2 LDA (SLB),Y STA TEMP INY LDA (SLB),Y STA SLDX+3 * MOVESL2 LDY SLOLD CPY SLNEW BEQ MOVESL5 BCS MOVESL3 * INC SLOLD LDA SLDXDY,Y BNE MOVESL4 * MOVESL3 DEC SLOLD LDA SLDXDY-1,Y MOVESL4 CLC ADC TEMP STA SLDX+2 LDA #SLDX JSR XOFFDRAW JMP MOVESL2 MOVESL5 LDY YTEMP RTS * SLDXDY HEX 0205080B0E111417 SLDX DA *+7 HEX 0000000602 HEX 300330033003300330033003 SLBLO DA SL1B DA >SL2B DA >SL3B DA >SL4B SL1B HEX 101A001C0106 SL2B HEX 1022001C0106 SL3B HEX 501A001C0106 SL4B HEX 5022001C0106 * SLIDESLO DA SLIDE1 DA >SLIDE2 DA >SLIDE3 DA >SLIDE4 SLIDE1 DA SLIDEBITS HEX 101A001C02 SLIDE2 DA SLIDEBITS HEX 1022001C02 SLIDE3 DA SLIDEBITS HEX 501A001C02 SLIDE4 DA SLIDEBITS HEX 5022001C02 SLIDEBITS HEX 7F3F03307333773B733343304738 HEX 4330433047384330433047384330 HEX 4330473843304330473843304330 HEX 4738433043304738433003307F3F * HEAD1 HEX 101B0A1F121DA2 HEAD2 HEX 1C190E0E8D HEAD3 HEX 14120C94 HEAD4 HEX 0E150A1C1D120C121DA2