PCS_AppleII/source_disc1/EDIT.S

2642 lines
30 KiB
ArmAsm

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
LDX #>HAND
JSR INITC
*
MAIN JSR JSCTRL
JSR UPDATEC
JSR GETB
BPL MAIN
*
LDA #<TABLEB
LDX #>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
LDX #>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
LDX #>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
LDX #>HAND
LDY #0
SETEDMODE STY EDITMODE
JMP INITC
*
INITPOINTER JSR POINTSON
LDA #<POINTER
LDX #>POINTER
LDY #$80
BNE SETEDMODE
*
INITSCISSOR JSR POINTSON
LDA #<SCISSOR
LDX #>SCISSOR
LDY #$81
BNE SETEDMODE
*
INITHAMMER JSR POINTSON
LDA #<HAMMER
LDX #>HAMMER
LDY #$82
BNE SETEDMODE
*
INITBRUSH JSR POINTSOFF
LDA #<BRUSH
LDX #>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
LDX #>LOGO
JMP DRAWB
*
SAVELOGO LDY #1
JSR SETMODE
LDA #<LOGO
LDX #>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
LDX #>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 #<LIBOBJ
BCC DRAGO8
*
LDY #2
LDA (LB),Y
CLC
ADC DELY
STA (LB),Y
INY
LDA (LB),Y
STA TEMP
ASL
ASL
ASL
SEC
SBC TEMP
INY
CLC
ADC (LB),Y
CLC
ADC DELX
TAX
LDA M7,X
STA (LB),Y
DEY
LDA D7,X
STA (LB),Y
*
DRAGO8 JSR GETB
BPL DRAGO9
*
JSR DRAWOBJ
JSR UPDATEC
JMP DRAGO6
*
DRAGO9 LDA #<TABLEB
LDX #>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
LDA #0
ADC #>OBJDX
STA TEMP+1
LDA #1
LDY #<TEMP
LDX #<OBJ2
JSR ADDIYX
LDA #<OBJ
LDX #<OBJ2
LDY #<TEMP
JSR MOVEDOWN
*
LDA YTEMP
LDY #<OBJ
LDX #<OBJ2
JSR ADDIYX
LDA #1
LDY #<OBJ
LDX #<OBJ
JSR SUBIYX
LDA #<MIDBTM
LDX #<OBJ2
LDY #<OBJ
JSR MOVEDOWN
*
DEC OBJCOUNT
DEC PBDATA
LDX YTEMP
INX
TXA
STA TEMP
LDY #<MEMBTM
LDX #<MEMBTM
JSR SUBIYX
LDA TEMP
LDY #<MIDBTM
LDX #<MIDBTM
JSR SUBIYX
*
LDY #1
JSR MAKEHOLE
*
LDA MIDTOP
STA B1
LDA MIDTOP+1
STA B1+1
LDY #1
DELOBJ2 LDA (B1),Y
CMP NEXTOBJ
BCC DELOBJ3
SBC #1
STA (B1),Y
DELOBJ3 LDX B1+1
LDA B1
CLC
ADC #4
STA B1
BCC *+3
INX
STX B1+1
CMP #<PBDX
BNE DELOBJ2
CPX #>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 #<MIDBTM
LDX #<TEMP
JSR ADDIYX
INC TEMP
BNE *+4
INC TEMP+1
LDA #<MIDBTM
LDX #<MEMBTM
LDY #<TEMP
JSR MOVEUP
LDA TEMP
STA MIDBTM
LDA TEMP+1
STA MIDBTM+1
*
LDY #0
JSR GETOBJ
LDA #1
LDY #<MEMBTM
LDX #<TEMP
JSR ADDIYX
LDA #<MEMBTM
LDX #<OBJ
LDY #<TEMP
JSR MOVEUP
*
INC MEMBTM
BNE *+4
INC MEMBTM+1
LDY #0
ADDOBJ2 LDA (OBJ2),Y
STA (MEMBTM),Y
INY
CPY YTEMP
BNE ADDOBJ2
*
INC OBJCOUNT
INC PBDATA
LDY OBJCOUNT
LDA YTEMP
STA PBDATA,Y
LDX #<MEMBTM
LDY #<MEMBTM
JSR ADDIYX
LDA #$80
STA SCANMODE
LDY OBJCOUNT
DEY
JSR GETOBJ
JSR DRAWOBJ
BCC ADDOBJ3
JSR REMOVEPOLY
JSR DRAWOBJ
JMP DELETEOBJ
*
ADDOBJ3 JMP DRAGOBJ2
*
DRAGPOINT JSR SELECTPOINT
BCC *+3
RTS
*
JSR REMOVEPOLY
*
LDA #$80 ;NO MERGE
ORA SCANMODE
STA SCANMODE
LDA FILLCOLOR
BEQ *+5
JSR POLYPOINTS
DRAGP2 JSR DRAWOBJ
LDY MINPT
LDA (PLYPTRX),Y
STA DRAGX
LDA (PLYPTRY),Y
STA DRAGY
JSR GETCX
BNE *+4
LDA #1
CMP #152 ;22*7-2
BCC *+4
LDA #152
STA (PLYPTRX),Y
*
LDA CY
BNE *+4
LDA #1
CMP #190 ;192-2
BCC *+4
LDA #190
STA (PLYPTRY),Y
*
DRAGP3 JSR ALIGNPOLY
PHP
LDA MINPT
SEC
SBC YTEMP ;ALIGN DISP
BCS *+4
ADC VRTXCOUNT
STA MINPT
PLP
BCC DRAGP4
TAY
LDA DRAGX
STA (PLYPTRX),Y
LDA DRAGY
STA (PLYPTRY),Y
JSR ALIGNPOLY
*
DRAGP4 JSR GETB
BPL ENDPTEDIT
JSR DRAWOBJ
BCS CUTPOINT3
JSR UPDATEC
JMP DRAGP2
*
ENDPTEDIT LDA SCANMODE
AND #$7F ;MERGE
STA SCANMODE
LDA FILLCOLOR
BEQ *+5
JSR POLYPOINTS
JSR DRAWOBJ
BCC RTS2
*
JSR REMOVEPOLY
LDA FILLCOLOR
BEQ *+5
JSR POLYPOINTS
JSR DRAWOBJ
JSR REMOVEPOLY
JMP CUTPOINT4
*
CUTPOINT JSR SELECTPOINT
BCC *+3
RTS2 RTS
*
CUTPOINT2 JSR REMOVEPOLY
*
LDA SCANMODE
ORA #$80
STA SCANMODE
LDA FILLCOLOR
BEQ *+5
JSR POLYPOINTS
*
CUTPOINT3 JSR DRAWOBJ
*
CUTPOINT4 LDX VRTXCOUNT
CPX #4
BCS *+9
LDA NEXTOBJ
BEQ ENDPTEDIT
JMP DELETEOBJ
DEX
TXA
LDY #2
STA (OBJ),Y
*
LDA MINPT ;CHANGE POLY
LDY #<PLYPTRX
LDX #<PLYPTRX
JSR ADDIYX
LDA #1
LDY #<PLYPTRX
LDX #<TEMP
JSR ADDIYX
LDA MINPT
LDY #<PLYPTRY
LDX #<PLYPTRY
JSR ADDIYX
LDA #<PLYPTRY
LDX #<TEMP
LDY #<PLYPTRX
JSR MOVEDOWN
*
LDA #1
LDY #<PLYPTRY
LDX #<PLYPTRY
JSR SUBIYX
LDA #2
LDY #<PLYPTRY
LDX #<TEMP
JSR ADDIYX
LDA #<MIDBTM
LDX #<TEMP
LDY #<PLYPTRY
JSR MOVEDOWN
*
LDA #2
LDX #<MEMBTM
LDY #<MEMBTM
JSR SUBIYX
LDA #2
LDX #<MIDBTM
LDY #<MIDBTM
JSR SUBIYX
*
LDY NEXTOBJ
LDA PBDATA+1,Y
SEC
SBC #2
STA PBDATA+1,Y
LDY NEXTOBJ
JSR GETOBJ
JSR ALIGNPOLY
BCC CUTP2
JMP DELETEOBJ
*
CUTP2 JSR GETB
BMI CUTP2
JMP ENDPTEDIT
*
PASTEPOINT JSR SELECTPOINT
BCC *+3
RTS
*
LDX VRTXCOUNT
CPX #63
BCS ABORTPP
LDA MIDTOP
SEC
SBC MIDBTM
TAX
LDA MIDTOP+1
SBC MIDBTM+1
BNE PASTEP2
TXA
CMP #$20
BCS PASTEP2
ABORTPP RTS
*
PASTEP2 JSR REMOVEPOLY
*
LDA #$80 ;ODDS, NO MERGE
ORA SCANMODE
STA SCANMODE
LDA FILLCOLOR
BEQ *+5
JSR POLYPOINTS
*
JSR DRAWOBJ
LDX VRTXCOUNT
INX
TXA
LDY #2
STA (OBJ),Y
*
LDA MINPT
LDY #<PLYPTRY
LDX #<PLYPTRY
JSR ADDIYX
LDA #2
LDY #<MIDBTM
LDX #<TEMP
JSR ADDIYX
LDA #<MIDBTM
LDX #<PLYPTRY
LDY #<TEMP
JSR MOVEUP
*
LDA MINPT
LDY #<PLYPTRX
LDX #<PLYPTRX
JSR ADDIYX
LDA #1
LDY #<PLYPTRY
LDX #<TEMP
JSR ADDIYX
LDA #<PLYPTRY
LDX #<PLYPTRX
LDY #<TEMP
JSR MOVEUP
*
LDY NEXTOBJ
JSR GETOBJ
LDY MINPT
LDA MINX
STA (PLYPTRX),Y
LDA MINY
STA (PLYPTRY),Y
*
LDA #2
LDX #<MEMBTM
LDY #<MEMBTM
JSR ADDIYX
LDA #2
LDX #<MIDBTM
LDY #<MIDBTM
JSR ADDIYX
LDY NEXTOBJ
LDA PBDATA+1,Y
CLC
ADC #2
STA PBDATA+1,Y
JMP DRAGP3
*
DRAWPOINTS LDY #0
JSR GETOBJ
DRAWPTS2 LDA OBJID
CMP #<POLYGON
BNE DRAWPTS4
DRAWPTS3 LDA FILLCOLOR
BEQ *+5
JSR POLYPOINTS
JMP DRAWPTS5
DRAWPTS4 CMP #<BPOLYGON
BEQ DRAWPTS3
DRAWPTS5 INC NEXTOBJ
LDY NEXTOBJ
JSR GETNEXTOBJ
LDY NEXTOBJ
CPY OBJCOUNT
BNE DRAWPTS2
RTS
*
SELECTPOINT JSR GETCX
STA CX
LDA #$FF
STA MINDIST
LDY #0
JSR GETOBJ
SELPNT2 LDA OBJID
CMP #<POLYGON
BEQ SELPNT3
CMP #<BPOLYGON
BEQ SELPNT3
JMP SELPNT7
*
SELPNT3 LDY #0
SELPNT4 LDA (PLYPTRX),Y
STA XTEMP
LDA (PLYPTRY),Y
STA YTEMP
LDA EDITMODE
CMP #$82 ;PASTE POINT MODE?
BNE SELPNT5
*
STY TEMP
DEY
BPL *+5
LDY VRTXCOUNT
DEY
LDA (PLYPTRX),Y
CLC
ADC XTEMP
ROR
STA XTEMP
LDA (PLYPTRY),Y
CLC
ADC YTEMP
ROR
STA YTEMP
LDY TEMP
*
SELPNT5 LDA XTEMP
SEC
SBC CX
BPL *+7
EOR #$FF
CLC
ADC #1
CMP #8
BCS SELPNT6
STA TEMP
*
LDA YTEMP
SEC
SBC CY
BPL *+7
EOR #$FF
CLC
ADC #1
CMP #8
BCS SELPNT6
*
ADC TEMP
CMP MINDIST
BCS SELPNT6
STA MINDIST
STY MINPT
LDA XTEMP
STA MINX
LDA YTEMP
STA MINY
LDA NEXTOBJ
STA MINPOLY
*
SELPNT6 INY
CPY VRTXCOUNT
BNE SELPNT4
*
SELPNT7 INC NEXTOBJ
LDY NEXTOBJ
JSR GETNEXTOBJ
LDY NEXTOBJ
CPY OBJCOUNT
BEQ *+5
JMP SELPNT2
*
LDA MINDIST
CMP #$FF
BCC *+3
RTS
LDY MINPOLY
STY NEXTOBJ
JSR GETOBJ
CLC
RTS
*
PAINTOBJ JSR XDRAWC
JSR SELECTPOLY
BCS PAINTO2
LDA #0
PAINTO2 TAY
JSR GETOBJ
*
LDA OBJID
CMP #<LIBOBJ
BEQ PAINTO4
*
LDA SCANMODE
ORA #$80
STA SCANMODE
LDA FILLCOLOR
BEQ *+6
EOR COLOR
BNE *+5
JSR POLYPOINTS
LDA COLOR
CMP FILLCOLOR
BNE *+4
LDA #0 ;BLACK
LDY #1
STA (OBJ),Y
EOR FILLCOLOR
BEQ PAINTO3
STA FILLCOLOR
JSR DRAWOBJ
*
PAINTO3 JSR GETB
BMI PAINTO3
PAINTO4 JMP XDRAWC
*
CMDMENU DA HANDB
DA INITHAND
DA POINTERB
DA INITPOINTER
DA SCISSORB
DA INITSCISSOR
DA HAMMERB
DA INITHAMMER
DA BRUSHB
DA INITBRUSH
DA WHITEB
DA WHITE
DA GREENB
DA GREEN
DA VIOLETB
DA VIOLET
DA REDB
DA RED
DA BLUEB
DA BLUE
DA PLAYB
DA PLAY
DA MAGNB
DA MAGPAINT
DA WORLDB
DA SETWORLD
DA WIREB
DA WIREKIT
DA DISKB
DA DISKIO
HEX 00
*
BOXLO DA <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
*
BOXHI DA >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
*
OBJADDRHI 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
LDX #>ICON1
JSR XOFFDRAW
JSR DRAWQUIT
LDA #<ICON2
LDX #>ICON2
JSR XOFFDRAW
*
JSR INITMAG
LDA #<BRUSH
LDX #>BRUSH
JSR INITC
*
MMAIN JSR JSCTRL
JSR UPDATEC
JSR GETB
BPL MMAIN
*
LDA #<VR
LDX #>VR
JSR CINR
BCC MMAIN3
MMAIN2 JSR DRAG
JMP MMAIN
*
MMAIN3 LDA #<MAGB
LDX #>MAGB
JSR CINR
BCC MMAIN4
LDA #<MAG
LDX #>MAG
JSR CINR
BCC *+8
JSR PLOT
JMP MMAIN
JSR SLIDEMAG
JMP MMAIN
*
MMAIN4 LDA #<MCMDB
LDX #>MCMDB
JSR CINR
BCC MMAIN2
LDA #0
STA LASTITEM+1
JMP MDOCMD
*
MDOCMD LDA #<MCMDMENU
LDX #>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
LDX #>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
LDX #>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
LDX #>MBAR1
JSR DRAWR
LDA #<MBAR2
LDX #>MBAR2
JSR DRAWR
LDA #<MBAR3
LDX #>MBAR3
JSR DRAWR
LDA #<MBAR4
LDX #>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
LDX #>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
LDX #>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
LDX #>MBAR1
JSR CINR
BCC SLIDEM2
LDY #$FE
STY YDIR
BNE SLIDEM3
*
SLIDEM2 LDA #<MBAR4
LDX #>MBAR4
JSR CINR
BCC SLIDEM3
LDY #2
STY YDIR
*
SLIDEM3 LDA #<MBAR2
LDX #>MBAR2
JSR CINR
BCC SLIDEM4
LDX #$FE
STX XDIR
BNE SLIDEM5
*
SLIDEM4 LDA #<MBAR3
LDX #>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
LDX #>HEAD1
JSR PRINT
LDA #2
LDX #33
LDY #6
JSR CHARTO
LDA #<HEAD2
LDX #>HEAD2
JSR PRINT
LDA #2
LDX #25
LDY #70
JSR CHARTO
LDA #<HEAD3
LDX #>HEAD3
JSR PRINT
LDA #0
LDX #31
LDY #70
JSR CHARTO
LDA #<HEAD4
LDX #>HEAD4
JSR PRINT
*
LDA #<HAND
LDX #>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
LDX #>MCMDB
JSR CINR
BCC WMAIN
LDA #0
STA LASTITEM+1
JMP WDOCMD
*
WDOCMD LDA #<WCMDMENU
LDX #>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
LDX #>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
SLBHI 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
SLIDESHI 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