mirror of
https://github.com/Tolik-Trek/2D-Studio.git
synced 2026-06-15 01:21:33 +03:00
2095 lines
28 KiB
NASM
2095 lines
28 KiB
NASM
;ORG_ ORG #8100
|
|
INTA: EQU #80
|
|
MSH: EQU 19
|
|
IPOINT: EQU 8
|
|
|
|
;DOSPAGE EQU #00
|
|
WINPAGE: EQU #08 ;#20
|
|
DIRPAGE: EQU #09 ;#21
|
|
|
|
;[BEGIN]
|
|
;
|
|
; 2DSTUDIO.EXE
|
|
;
|
|
ORG #8100-512
|
|
; INCLUDE "dos_equ.asm"
|
|
INCLUDE "SYS_EQU.ASM"
|
|
DB "EXE" ;EXE ID
|
|
DB #00 ;EXE VERSION
|
|
DW #0200 ;CODE OFFSET LOW
|
|
DW #0000 ;CODE OFFSET HIGH
|
|
DW #0000 ;END-BEG ;PRIMARY LOADER
|
|
DW #0000 ;
|
|
DW #0000 ;RESERVED
|
|
DW #0000 ;
|
|
DW BEGIN ;LOAD ADDRESS
|
|
DW BEGIN ;START ADDRESS
|
|
DW #8000 ;STACK ADDRESS
|
|
DS 490
|
|
|
|
|
|
BEGIN: DI
|
|
JP START_2DS
|
|
JP IKEYBOARD
|
|
|
|
START_2DS: LD (_SP+1),SP
|
|
LD SP,#80F0
|
|
PUSH IX
|
|
POP HL
|
|
INC HL
|
|
INC HL
|
|
XOR A
|
|
LD (CLEARRAM),A
|
|
LD (LOADING),A
|
|
LD DE,PRMBUFF
|
|
LD BC,#0745
|
|
RST #10
|
|
LD A,(PRMBUFF)
|
|
OR A
|
|
JR Z,CONT_2DS
|
|
CP "-"
|
|
JR NZ,GETFNAME
|
|
LD A,(PRMBUFF+1)
|
|
SUB #20
|
|
CP "X"
|
|
JR NZ,CONT_2DS
|
|
LD A,#FF
|
|
LD (CLEARRAM),A
|
|
GETFNAME:
|
|
LD A,#FF
|
|
LD (LOADING),A
|
|
LD HL,PRMBUFF
|
|
LD DE,DIRITEM
|
|
LD BC,#0144
|
|
RST #10
|
|
JR NC,CONT_2DS
|
|
XOR A
|
|
LD (LOADING),A
|
|
CONT_2DS:
|
|
LD C,#51
|
|
RST #10
|
|
LD (CURRMODE),A
|
|
LD A,#81
|
|
LD BC,#0050
|
|
RST #10
|
|
LD C,1
|
|
RST #30
|
|
|
|
LD C,3
|
|
RST #30
|
|
PUSH HL
|
|
PUSH DE
|
|
|
|
LD C,PAGE0
|
|
IN B,(C)
|
|
PUSH BC
|
|
LD A,B
|
|
LD (DOSPAGE),A
|
|
LD A,WINPAGE
|
|
OUT (C),A
|
|
LD HL,WN_FACE
|
|
LD DE,#100
|
|
LD BC,WN_FACE.Size
|
|
LDIR
|
|
POP BC
|
|
OUT (PAGE0),A
|
|
|
|
CALL GO
|
|
; LD A,DOSPAGE
|
|
; OUT (PAGE0),A
|
|
|
|
; LD A,2
|
|
; LD C,0
|
|
; RST #18
|
|
|
|
LD A,WINPAGE
|
|
OUT (PAGE0),A
|
|
LD C,#93
|
|
LD A,#0E
|
|
CALL IPOINT ;CLEAR
|
|
LD BC,#0592
|
|
LD A,#0E
|
|
CALL IPOINT ;GET MEMORY
|
|
LD BC,#0094
|
|
LD HL,PIXPAGE
|
|
SLEPAGE: LD A,#0E
|
|
PUSH HL
|
|
PUSH BC
|
|
CALL IPOINT ;GET PAGES
|
|
POP BC
|
|
POP HL
|
|
LD (HL),A
|
|
INC HL
|
|
INC B
|
|
LD A,5
|
|
CP B
|
|
JP NZ,SLEPAGE
|
|
; CALL INIT
|
|
; LD HL,#4000
|
|
; LD BC,#0880
|
|
; LD E,1
|
|
; CALL IPOINT
|
|
LD HL,PALCOL ;SET DESKTOP PALETTE
|
|
LD DE,#12EE ;& CURSOR COLORS
|
|
LD BC,#FFA4 ;#EE,#EF
|
|
XOR A
|
|
CALL IPOINT
|
|
LD HL,PALCOL ;SET DESKTOP PALETTE
|
|
LD DE,#12EE ;& CURSOR COLORS
|
|
LD BC,#FFA4 ;#EE,#EF
|
|
LD A,1
|
|
CALL IPOINT
|
|
|
|
POP DE
|
|
POP HL
|
|
LD C,4
|
|
CALL INTMOUS
|
|
|
|
CALL INTON
|
|
LD C,0
|
|
CALL INTMOUS
|
|
XOR A
|
|
LD C,6
|
|
CALL INTMOUS
|
|
LD C,1
|
|
CALL INTMOUS
|
|
LD BC,256
|
|
EXX
|
|
LD HL,0
|
|
LD DE,0
|
|
LD BC,320
|
|
CALL OPTIMIZ
|
|
LD HL,#0000
|
|
CALL CONST
|
|
CALL OPEN2DS
|
|
LD C,2
|
|
CALL INTMOUS
|
|
CALL INTOFF
|
|
DI
|
|
; LD BC,#1FFD
|
|
; LD A,0
|
|
; OUT (C),A
|
|
; LD A,5
|
|
; OUT (PAGE1),A
|
|
; LD A,0
|
|
; OUT (PAGE3),A
|
|
LD A,0
|
|
OUT (Y_PORT),A
|
|
EXIT: ;LD BC,#0080
|
|
; LD E,0
|
|
; CALL #3D13
|
|
DI
|
|
; LD IY,#5C3A
|
|
LD A,(DOSPAGE)
|
|
OUT (PAGE0),A
|
|
;_SP LD SP,#0000
|
|
EI
|
|
|
|
LD A,(CLEARRAM)
|
|
OR A
|
|
JR NZ,NOCLEAR0
|
|
|
|
;GET ID 1-ST RAMDISK
|
|
LD A,#0D ;RAM DISK NUMBER
|
|
LD C,#CE ;GET RAM DISK'S ID
|
|
RST #08
|
|
OR A
|
|
JR Z,SKK1
|
|
|
|
LD C,#C3 ;FREE MEM
|
|
RST #08
|
|
|
|
LD C,#CA ;FREE DRIVE
|
|
LD A,#0D
|
|
RST #08
|
|
|
|
SKK1:
|
|
;GET ID 2-ND RAMDISK
|
|
LD A,#0E ;RAM DISK NUMBER
|
|
LD C,#CE ;GET RAM DISK'S ID
|
|
RST #08
|
|
OR A
|
|
JR Z,SKK2
|
|
|
|
LD C,#C3 ;FREE MEM
|
|
RST #08
|
|
|
|
LD C,#CA ;FREE DRIVE
|
|
LD A,#0E
|
|
RST #08
|
|
|
|
|
|
SKK2:
|
|
|
|
NOCLEAR0:
|
|
LD C,2
|
|
RST #30
|
|
LD A,(CURRMODE)
|
|
LD C,#50
|
|
LD B,0
|
|
RST #10
|
|
|
|
LD HL,MSGHEL
|
|
LD C,#5C
|
|
RST #10
|
|
|
|
DI
|
|
_SP: LD SP,#0000
|
|
EI
|
|
LD B,0
|
|
LD C,#41
|
|
RST #10
|
|
RET
|
|
|
|
PALCOL: ; B G R
|
|
DB #00,#00,#00,#00 ;CURSOR
|
|
DB #FF,#FF,#FF,#00 ;CURSOR
|
|
|
|
DB #00,#00,#00,#00 ;BLACK
|
|
DB #00,#00,#80,#00 ;RED
|
|
DB #00,#80,#00,#00 ;GREEN
|
|
DB #00,#80,#80,#00 ;YELLOW
|
|
DB #80,#00,#00,#00 ;BLUE
|
|
DB #80,#00,#80,#00 ;MAGENTA
|
|
DB #80,#80,#00,#00 ;CYAN
|
|
DB #80,#80,#80,#00 ;BLACK/GRAY
|
|
DB #C0,#C0,#C0,#00 ;WHITE/GRAY
|
|
DB #00,#00,#FF,#00 ;RED
|
|
DB #00,#FF,#00,#00 ;GREEN
|
|
DB #00,#FF,#FF,#00 ;YELLOW
|
|
DB #FF,#00,#00,#00 ;BLUE
|
|
DB #FF,#00,#FF,#00 ;MAGENTA
|
|
DB #FF,#FF,#00,#00 ;CYAN
|
|
DB #FF,#FF,#FF,#00 ;WHITE
|
|
|
|
INCLUDE "GRAFOPEN.ASM"
|
|
|
|
IKEYBOARD:
|
|
RET
|
|
|
|
DO_LOADING:
|
|
XOR A
|
|
LD (LOADING),A
|
|
CALL RD_FILE
|
|
CALL CONVERT
|
|
RET
|
|
|
|
DOSPAGE: DB 0
|
|
|
|
CURRMODE: DB 0
|
|
|
|
CLEARRAM: DB 0
|
|
|
|
LOADING: DB 0
|
|
|
|
MSGHEL: DB 13,10,"2D Studio (c) 2001 PETERS PLUS LTD",13,10,0
|
|
|
|
XBANK: DB #00
|
|
|
|
PIXPAGE: DS #80
|
|
|
|
PIXOPEN: XOR A
|
|
PIXBANK: PUSH BC
|
|
PUSH HL
|
|
LD (XBANK),A
|
|
LD C,A
|
|
LD B,0
|
|
IN A,(PAGE3)
|
|
LD (RETBANK+1),A
|
|
LD HL,PIXPAGE
|
|
ADD HL,BC
|
|
LD A,(HL)
|
|
OUT (PAGE3),A
|
|
POP HL
|
|
POP BC
|
|
RET
|
|
|
|
PIXFIX: PUSH BC
|
|
PUSH HL
|
|
LD (XBANK),A
|
|
LD C,A
|
|
LD B,0
|
|
LD HL,PIXPAGE
|
|
ADD HL,BC
|
|
LD A,(HL)
|
|
OUT (PAGE3),A
|
|
POP HL
|
|
POP BC
|
|
RET
|
|
|
|
PIXNEXT: PUSH BC
|
|
PUSH HL
|
|
LD A,(XBANK)
|
|
INC A
|
|
LD (XBANK),A
|
|
LD C,A
|
|
LD B,0
|
|
LD HL,PIXPAGE
|
|
ADD HL,BC
|
|
LD A,(HL)
|
|
OUT (PAGE3),A
|
|
POP HL
|
|
POP BC
|
|
LD A,XH
|
|
OR #C0
|
|
LD XH,A
|
|
RET
|
|
|
|
PIXNXT: PUSH BC
|
|
PUSH HL
|
|
LD A,(XBANK)
|
|
INC A
|
|
LD (XBANK),A
|
|
LD C,A
|
|
LD B,0
|
|
LD HL,PIXPAGE
|
|
ADD HL,BC
|
|
LD A,(HL)
|
|
OUT (PAGE3),A
|
|
POP HL
|
|
POP BC
|
|
SET 7,H
|
|
SET 6,H
|
|
LD A,XH
|
|
OR #C0
|
|
LD XH,A
|
|
RET
|
|
|
|
|
|
PIXPRV: PUSH BC
|
|
PUSH HL
|
|
LD A,(XBANK)
|
|
DEC A
|
|
LD (XBANK),A
|
|
LD C,A
|
|
LD B,0
|
|
LD HL,PIXPAGE
|
|
ADD HL,BC
|
|
LD A,(HL)
|
|
OUT (PAGE3),A
|
|
POP HL
|
|
POP BC
|
|
LD A,XH
|
|
OR #C0
|
|
LD XH,A
|
|
RET
|
|
|
|
RETBANK: LD A,#00
|
|
OUT (PAGE3),A
|
|
RET
|
|
|
|
OPEN2DS: LD HL,SPRITE_
|
|
CALL INITSPR
|
|
LD IX,RDIALOG
|
|
LD HL,USERini
|
|
CALL DLGinit
|
|
LD BC,183
|
|
EXX
|
|
LD HL,5+MSH
|
|
LD DE,56
|
|
LD BC,287-MSH-5
|
|
CALL OPTIMIZ
|
|
LD HL,#0401
|
|
CALL LCONST
|
|
CALL PALET
|
|
LD A,(COLOR)
|
|
CALL M_COLOR
|
|
CALL M_COLOU
|
|
LD A,BLACK
|
|
CALL SBODY
|
|
LD IX,F_BAR
|
|
LD HL,8
|
|
LD DE,20
|
|
CALL CHARS
|
|
LD HL,2
|
|
LD DE,30
|
|
LD BC,320-4-100
|
|
CALL HZ2LINE
|
|
LD HL,PALCOL ;SET DESKTOP PALETTE
|
|
LD DE,#12EE ;& CURSOR COLORS
|
|
LD BC,#FFA4 ;#EE,#EF
|
|
LD A,1
|
|
CALL IPOINT
|
|
LD HL,PALCOL ;SET DESKTOP PALETTE
|
|
LD DE,#EE*4+NEWPAL
|
|
LD BC,#12*4
|
|
LDIR
|
|
CALL CLS
|
|
|
|
LD A,(LOADING)
|
|
OR A
|
|
CALL NZ,DO_LOADING
|
|
|
|
CALL IBARS
|
|
CALL REFRWIN
|
|
LD A,(CRTOOL)
|
|
CALL TOOL
|
|
AGA: CALL WAITMSG
|
|
CALL USERwrk
|
|
JP AGA
|
|
LD IX,MAINM
|
|
LD HL,5
|
|
LD DE,18
|
|
; CALL HBAR
|
|
RET
|
|
|
|
NOZOM1: PUSH DE
|
|
PUSH HL
|
|
CALL PUTPIX
|
|
POP HL
|
|
POP DE
|
|
CALL PUTPNT2
|
|
XOR A
|
|
RET
|
|
|
|
INCLUDE "TOOLS.ASM"
|
|
|
|
WORKA: LD C,3
|
|
CALL INTMOUS
|
|
CP 1
|
|
RET NZ
|
|
PUSH HL
|
|
PUSH DE
|
|
CALL LOBJECT
|
|
LD DE,#0401
|
|
AND A
|
|
SBC HL,DE
|
|
POP DE
|
|
POP HL
|
|
LD A,0
|
|
RET NZ
|
|
LD BC,(X_)
|
|
AND A
|
|
SBC HL,BC
|
|
EX DE,HL
|
|
LD BC,(Y_)
|
|
AND A
|
|
SBC HL,BC
|
|
EX DE,HL
|
|
LD A,(ZOOMMOD)
|
|
OR A
|
|
JP Z,NOZOM12
|
|
SRL H
|
|
RR L
|
|
SRL H
|
|
RR L
|
|
SRL H
|
|
RR L
|
|
SRL D
|
|
RR E
|
|
SRL D
|
|
RR E
|
|
SRL D
|
|
RR E
|
|
PUSH HL
|
|
LD BC,(PREVX)
|
|
AND A
|
|
SBC HL,BC
|
|
JP NZ,PPIX
|
|
LD HL,(PREVY)
|
|
AND A
|
|
SBC HL,DE
|
|
JP NZ,PPIX
|
|
POP HL
|
|
JP WORKA
|
|
PPIX: POP HL
|
|
PUSH DE
|
|
PUSH HL
|
|
CALL PUTPIX
|
|
POP HL
|
|
POP DE
|
|
LD (PREVX),HL
|
|
LD (PREVY),DE
|
|
CALL PUTPNT
|
|
LD HL,(SHIFTX)
|
|
LD DE,(SHIFTY)
|
|
LD BC,33
|
|
CALL DATAPIX
|
|
JP WORKA
|
|
|
|
NOZOM12: PUSH HL
|
|
LD BC,(PREVX)
|
|
AND A
|
|
SBC HL,BC
|
|
JP NZ,PPIX2
|
|
LD HL,(PREVY)
|
|
AND A
|
|
SBC HL,DE
|
|
JP NZ,PPIX2
|
|
POP HL
|
|
JP WORKA
|
|
PPIX2: POP HL
|
|
PUSH DE
|
|
PUSH HL
|
|
CALL PUTPIX
|
|
POP HL
|
|
POP DE
|
|
LD (PREVX),HL
|
|
LD (PREVY),DE
|
|
CALL PUTPNT2
|
|
JP WORKA
|
|
|
|
PUTPNT2: LD A,(COLOR)
|
|
PUTPNT3: LD BC,(X_)
|
|
ADD HL,BC
|
|
EX DE,HL
|
|
LD BC,(Y_)
|
|
ADD HL,BC
|
|
EX DE,HL
|
|
CALL POINT
|
|
RET
|
|
|
|
PUTPIX: PUSH HL
|
|
PUSH DE
|
|
LD BC,(SHIFTX)
|
|
ADD HL,BC
|
|
LD BC,(SHIFTY)
|
|
EX DE,HL
|
|
ADD HL,BC
|
|
EX DE,HL
|
|
CALL PIXOPEN
|
|
LD IX,AREAPIX
|
|
LD BC,(X_SIZE)
|
|
PUTPIX1: LD A,D
|
|
OR E
|
|
JR Z,PUTPIX2
|
|
DEC DE
|
|
ADD IX,BC
|
|
CALL C,PIXNEXT
|
|
JR PUTPIX1
|
|
PUTPIX2: EX DE,HL
|
|
ADD IX,DE
|
|
CALL C,PIXNEXT
|
|
; LD DE,(SHIFTX)
|
|
; ADD IX,DE
|
|
; CALL C,PIXNEXT
|
|
LD A,(COLOR)
|
|
LD (IX),A
|
|
CALL RETBANK
|
|
POP DE
|
|
POP HL
|
|
RET
|
|
|
|
GETPIX: PUSH HL
|
|
PUSH DE
|
|
LD BC,(SHIFTX)
|
|
ADD HL,BC
|
|
LD BC,(SHIFTY)
|
|
EX DE,HL
|
|
ADD HL,BC
|
|
EX DE,HL
|
|
CALL PIXOPEN
|
|
LD IX,AREAPIX
|
|
LD BC,(X_SIZE)
|
|
GETPIX1: LD A,D
|
|
OR E
|
|
JR Z,GETPIX2
|
|
DEC DE
|
|
ADD IX,BC
|
|
CALL C,PIXNEXT
|
|
JR GETPIX1
|
|
GETPIX2: EX DE,HL
|
|
ADD IX,DE
|
|
CALL C,PIXNEXT
|
|
; LD DE,(SHIFTX)
|
|
; ADD IX,DE
|
|
; CALL C,PIXNEXT
|
|
LD A,(IX)
|
|
PUSH AF
|
|
CALL RETBANK
|
|
POP AF
|
|
POP DE
|
|
POP HL
|
|
RET
|
|
|
|
|
|
PUTPNT: SLA L
|
|
RL H
|
|
SLA L
|
|
RL H
|
|
SLA L
|
|
RL H
|
|
SLA E
|
|
RL D
|
|
SLA E
|
|
RL D
|
|
SLA E
|
|
RL D
|
|
LD BC,(X_)
|
|
ADD HL,BC
|
|
EX DE,HL
|
|
LD BC,(Y_)
|
|
ADD HL,BC
|
|
EX DE,HL
|
|
LD BC,8
|
|
EXX
|
|
LD BC,8
|
|
EXX
|
|
LD A,(COLOR)
|
|
CALL SBODY
|
|
CALL RECTAN
|
|
RET
|
|
|
|
REFRWIN: LD A,(ZOOMMOD)
|
|
OR A
|
|
JP Z,FULLSCR
|
|
CALL ZOOMPIX
|
|
; CALL GRID
|
|
LD HL,(SHIFTX)
|
|
LD DE,(SHIFTY)
|
|
LD BC,33
|
|
JP DATAPIX
|
|
|
|
FULLSCR: LD HL,(SHIFTX)
|
|
LD DE,(SHIFTY)
|
|
LD BC,33*8
|
|
JP FULLPIX
|
|
|
|
ZOOMPIX: LD BC,33
|
|
PUSH BC
|
|
CALL PIXOPEN
|
|
LD DE,(SHIFTY)
|
|
LD IX,AREAPIX
|
|
LD BC,(X_SIZE)
|
|
ZOMPIX1: LD A,D
|
|
OR E
|
|
JR Z,ZOMPIX2
|
|
DEC DE
|
|
ADD IX,BC
|
|
CALL C,PIXNEXT
|
|
JR ZOMPIX1
|
|
ZOMPIX2: LD HL,(X_)
|
|
LD DE,(Y_)
|
|
POP BC
|
|
LD A,23
|
|
ZOMPIX3: PUSH AF
|
|
PUSH BC
|
|
PUSH HL
|
|
PUSH DE
|
|
PUSH IX
|
|
LD A,(XBANK)
|
|
PUSH AF
|
|
EXX
|
|
LD BC,(SHIFTX)
|
|
ADD IX,BC
|
|
CALL C,PIXNEXT
|
|
EXX
|
|
CALL COPY_ZL
|
|
POP AF
|
|
CALL PIXFIX
|
|
POP IX
|
|
LD BC,(X_SIZE)
|
|
ADD IX,BC
|
|
CALL C,PIXNEXT
|
|
POP HL
|
|
LD BC,8
|
|
ADD HL,BC
|
|
EX DE,HL
|
|
POP HL
|
|
POP BC
|
|
POP AF
|
|
DEC A
|
|
JP NZ,ZOMPIX3
|
|
CALL RETBANK
|
|
RET
|
|
|
|
COPY_ZL: PUSH BC
|
|
LD BC,8
|
|
ZOOM_Z1: EXX
|
|
LD BC,8
|
|
EXX
|
|
PUSH HL
|
|
PUSH DE
|
|
LD A,(IX)
|
|
CALL SBODY
|
|
CALL RECTAN
|
|
INC IX
|
|
LD A,XH
|
|
RLCA
|
|
CALL NC,PIXNEXT
|
|
POP DE
|
|
POP HL
|
|
POP BC
|
|
DEC BC
|
|
LD A,B
|
|
OR C
|
|
RET Z
|
|
PUSH BC
|
|
LD BC,8
|
|
ADD HL,BC
|
|
JP ZOOM_Z1
|
|
|
|
CLS: CALL PIXOPEN
|
|
CALL CBNK
|
|
CALL PIXNEXT
|
|
CALL CBNK
|
|
CALL PIXNEXT
|
|
CALL CBNK
|
|
CALL PIXNEXT
|
|
CALL CBNK
|
|
CALL PIXNEXT
|
|
CALL CBNK
|
|
CALL RETBANK
|
|
LD HL,0
|
|
LD (SHIFTX),HL
|
|
LD (SHIFTY),HL
|
|
LD HL,320
|
|
LD (X_SIZE),HL
|
|
LD HL,256
|
|
LD (Y_SIZE),HL
|
|
LD HL,#4436
|
|
LD (FLSIZE),HL
|
|
LD HL,#0001
|
|
LD (FHSIZE),HL
|
|
RET
|
|
|
|
CBNK: LD HL,AREAPIX
|
|
LD DE,AREAPIX+1
|
|
LD BC,16383
|
|
LD A,WHITE
|
|
LD (HL),A
|
|
LDIR
|
|
RET
|
|
|
|
IBARS: LD HL,(SHIFTY)
|
|
CALL SBVAL ;CURRENT VALUE
|
|
LD HL,(Y_SIZE)
|
|
CALL SBMAX ;MAX VALUE
|
|
LD HL,(HEIGHT_)
|
|
CALL SBWIN ;BIG ADDER
|
|
LD IX,VSBA01
|
|
LD A,0
|
|
CALL SBV_WRK
|
|
CALL RSBLEN ;BAR LENGHT
|
|
LD (Y_LENB),HL
|
|
CALL RSBHGT
|
|
LD (Y_HGTB),HL
|
|
|
|
LD HL,(SHIFTX)
|
|
CALL SBVAL ;CURRENT VALUE
|
|
LD HL,(X_SIZE)
|
|
CALL SBMAX ;MAX VALUE
|
|
LD HL,(WIDTH_)
|
|
CALL SBWIN ;BIG ADDER
|
|
LD IX,HSBA01
|
|
LD A,0
|
|
CALL SBH_WRK
|
|
CALL RSBLEN ;BAR LENGHT
|
|
LD (X_LENB),HL
|
|
CALL RSBHGT
|
|
LD (X_HGTB),HL
|
|
RET
|
|
|
|
USERwrk: ;P 1
|
|
; JP Z,ACT_
|
|
CP 3
|
|
JP Z,PUSH_
|
|
CP 4
|
|
JP Z,UNPUSH_
|
|
CP 5
|
|
JP Z,DRAGS_
|
|
CP 6
|
|
JP Z,DROPS_
|
|
LD A,1
|
|
RET
|
|
|
|
ACT_: LD A,H
|
|
CP 4
|
|
; JP Z,WORKAS
|
|
LD A,2
|
|
RET
|
|
|
|
DRAGS_: LD A,H
|
|
CP 1
|
|
JR Z,DRAG_
|
|
CP 6
|
|
JR Z,DRAG8_
|
|
CP 7
|
|
JR Z,DRAG8_
|
|
LD A,2
|
|
RET
|
|
|
|
DROPS_: LD A,H
|
|
CP 1
|
|
JR Z,DROP_
|
|
CP 6
|
|
JR Z,DROP8_
|
|
CP 7
|
|
JR Z,DROP8_
|
|
LD A,2
|
|
RET
|
|
|
|
DROP8_: LD A,L
|
|
AND #02
|
|
JP NZ,YPDROP
|
|
LD A,0
|
|
RET
|
|
|
|
DROP_: LD A,L
|
|
CP #0A
|
|
JP NC,NODROP
|
|
YPDROP: CALL PUSHBUT
|
|
LD A,0
|
|
RET
|
|
|
|
NODROP: CP #12
|
|
JR NC,YPDROP
|
|
LD A,0
|
|
RET
|
|
|
|
DRAG8_: LD A,L
|
|
AND #02
|
|
JP NZ,YPDRAG
|
|
LD A,0
|
|
RET
|
|
|
|
DRAG_: LD A,L
|
|
CP #0A
|
|
JP NC,NODRAG
|
|
YPDRAG: CALL POPBUT
|
|
LD A,0
|
|
RET
|
|
|
|
NODRAG: CP #12
|
|
JR NC,YPDRAG
|
|
LD A,0
|
|
RET
|
|
|
|
PUSH_: LD A,H
|
|
CP 1
|
|
JR Z,BCUT1
|
|
CP 4
|
|
JP Z,WORK_
|
|
CP 6
|
|
JP Z,PSBAR
|
|
CP 7
|
|
JP Z,PSBAR2
|
|
CP #CC
|
|
JP Z,PALE
|
|
LD A,2
|
|
RET
|
|
|
|
UNPUSH_: LD A,H
|
|
CP 1
|
|
JP Z,BCUT0
|
|
CP 6
|
|
JP Z,USBAR
|
|
CP 7
|
|
JP Z,USBAR2
|
|
LD A,2
|
|
RET
|
|
|
|
PSBAR: LD A,L
|
|
CP 2
|
|
JP Z,PB6
|
|
CP 3
|
|
JP Z,PB7
|
|
LD A,3
|
|
RET
|
|
|
|
USBAR: LD A,L
|
|
CP 2
|
|
JP Z,UB6
|
|
CP 3
|
|
JP Z,UB7
|
|
LD A,3
|
|
RET
|
|
|
|
PSBAR2: LD A,L
|
|
CP 2
|
|
JP Z,PB4
|
|
CP 3
|
|
JP Z,PB5
|
|
LD A,3
|
|
RET
|
|
|
|
USBAR2: LD A,L
|
|
CP 2
|
|
JP Z,UB4
|
|
CP 3
|
|
JP Z,UB5
|
|
LD A,3
|
|
RET
|
|
|
|
BCUT1: LD A,L
|
|
CP 0
|
|
JP Z,PB0
|
|
CP 1
|
|
JP Z,PB1
|
|
CP 2
|
|
JP Z,PB2
|
|
CP 3
|
|
JP Z,PB3
|
|
CP 4
|
|
JP Z,PB4A
|
|
CP 5
|
|
JP Z,PB5A
|
|
CP 6
|
|
JP Z,PB6A
|
|
CP 7
|
|
JP Z,PB7
|
|
CP 8
|
|
JP Z,PB8
|
|
CP 9
|
|
JP Z,PB9
|
|
; CP #0A
|
|
; JP NC,TOOL
|
|
CP #12
|
|
JP C,TOOL
|
|
CP #20
|
|
JP Z,PBPALU
|
|
CP #21
|
|
JP Z,PBPALD
|
|
LD A,3
|
|
RET
|
|
|
|
BCUT0: LD A,L
|
|
CP 0
|
|
JP Z,UB0
|
|
CP 1
|
|
JP Z,UB1
|
|
CP 2
|
|
JP Z,UB2
|
|
CP 3
|
|
JP Z,UB3
|
|
CP 4
|
|
JP Z,UB4A
|
|
CP 5
|
|
JP Z,UB5A
|
|
CP 6
|
|
JP Z,UB6A
|
|
CP 7
|
|
JP Z,UB7
|
|
CP 8
|
|
JP Z,UB8
|
|
CP 9
|
|
JP Z,UB9
|
|
CP #20
|
|
JP Z,UBPALU
|
|
CP #21
|
|
JP Z,UBPALD
|
|
LD A,3
|
|
RET
|
|
|
|
|
|
TESTSX: LD HL,(X_SIZE)
|
|
LD BC,(WIDTH_)
|
|
AND A
|
|
SBC HL,BC
|
|
RET C
|
|
SBC HL,DE
|
|
RET
|
|
|
|
TESTSY: LD HL,(Y_SIZE)
|
|
LD BC,(HEIGHT_)
|
|
AND A
|
|
SBC HL,BC
|
|
RET C
|
|
SBC HL,DE
|
|
RET
|
|
|
|
|
|
TOOL: PUSH AF
|
|
LD A,(CRTOOL)
|
|
LD H,#01
|
|
LD L,A
|
|
CALL POPBUT
|
|
POP AF
|
|
LD (CRTOOL),A
|
|
LD H,#01
|
|
LD L,A
|
|
CALL PUSHBUT
|
|
LD A,(CRTOOL)
|
|
SUB #0A
|
|
LD C,6
|
|
CALL INTMOUS
|
|
LD A,0
|
|
RET
|
|
|
|
MOVE_DOWN:
|
|
LD HL,(SHIFTY)
|
|
INC HL
|
|
EX DE,HL
|
|
CALL TESTSY
|
|
LD A,0
|
|
RET C
|
|
EX DE,HL
|
|
LD (SHIFTY),HL
|
|
RET
|
|
|
|
;DOWN
|
|
PB7: CALL PUSHBUT
|
|
PBL7: CALL MOVE_DOWN
|
|
CALL MOVE_DOWN
|
|
CALL MOVE_DOWN
|
|
CALL MOVE_DOWN
|
|
CALL SBVAL ;CURRENT VALUE
|
|
LD HL,(Y_SIZE)
|
|
CALL SBMAX ;MAX VALUE
|
|
LD HL,(HEIGHT_)
|
|
CALL SBWIN ;BIG ADDER
|
|
LD HL,(Y_LENB)
|
|
CALL SBLEN ;BAR LENGHT
|
|
LD HL,(Y_HGTB)
|
|
CALL SBHGT
|
|
|
|
LD IX,VSBA01
|
|
LD A,2
|
|
CALL SBV_WRK
|
|
|
|
CALL REFRWIN
|
|
LD C,3
|
|
CALL INTMOUS
|
|
CP 1
|
|
JP Z,PBL7
|
|
LD A,0
|
|
RET
|
|
|
|
MOVE_UP:
|
|
LD HL,(SHIFTY)
|
|
LD A,H
|
|
OR L
|
|
RET Z
|
|
DEC HL
|
|
LD (SHIFTY),HL
|
|
RET
|
|
|
|
;UP
|
|
PB6: CALL PUSHBUT
|
|
PBL6: CALL MOVE_UP
|
|
CALL MOVE_UP
|
|
CALL MOVE_UP
|
|
CALL MOVE_UP
|
|
CALL SBVAL ;CURRENT VALUE
|
|
LD HL,(Y_SIZE)
|
|
CALL SBMAX ;MAX VALUE
|
|
LD HL,(HEIGHT_)
|
|
CALL SBWIN ;BIG ADDER
|
|
LD HL,(Y_LENB)
|
|
CALL SBLEN ;BAR LENGHT
|
|
LD HL,(Y_HGTB)
|
|
CALL SBHGT
|
|
|
|
LD IX,VSBA01
|
|
LD A,1
|
|
CALL SBV_WRK
|
|
|
|
CALL REFRWIN
|
|
LD C,3
|
|
CALL INTMOUS
|
|
CP 1
|
|
JP Z,PBL6
|
|
LD A,0
|
|
RET
|
|
|
|
MOVE_RIGHT:
|
|
LD HL,(SHIFTX)
|
|
INC HL
|
|
EX DE,HL
|
|
CALL TESTSX
|
|
LD A,0
|
|
RET C
|
|
EX DE,HL
|
|
LD (SHIFTX),HL
|
|
RET
|
|
|
|
;RIGHT
|
|
PB5: CALL PUSHBUT
|
|
PBL5: CALL MOVE_RIGHT
|
|
CALL MOVE_RIGHT
|
|
CALL MOVE_RIGHT
|
|
CALL MOVE_RIGHT
|
|
CALL SBVAL ;CURRENT VALUE
|
|
LD HL,(X_SIZE)
|
|
CALL SBMAX ;MAX VALUE
|
|
LD HL,(WIDTH_)
|
|
CALL SBWIN ;BIG ADDER
|
|
LD HL,(X_LENB)
|
|
CALL SBLEN ;BAR LENGHT
|
|
LD HL,(X_HGTB)
|
|
CALL SBHGT
|
|
|
|
LD IX,HSBA01
|
|
LD A,2
|
|
CALL SBH_WRK
|
|
|
|
CALL REFRWIN
|
|
LD C,3
|
|
CALL INTMOUS
|
|
CP 1
|
|
JP Z,PBL5
|
|
LD A,0
|
|
RET
|
|
|
|
MOVE_LEFT:
|
|
LD HL,(SHIFTX)
|
|
LD A,H
|
|
OR L
|
|
RET Z
|
|
DEC HL
|
|
LD (SHIFTX),HL
|
|
RET
|
|
|
|
;LEFT
|
|
PB4: CALL PUSHBUT
|
|
PBL4: CALL MOVE_LEFT
|
|
CALL MOVE_LEFT
|
|
CALL MOVE_LEFT
|
|
CALL MOVE_LEFT
|
|
CALL SBVAL ;CURRENT VALUE
|
|
LD HL,(X_SIZE)
|
|
CALL SBMAX ;MAX VALUE
|
|
LD HL,(WIDTH_)
|
|
CALL SBWIN ;BIG ADDER
|
|
LD HL,(X_LENB)
|
|
CALL SBLEN ;BAR LENGHT
|
|
LD HL,(X_HGTB)
|
|
CALL SBHGT
|
|
|
|
LD IX,HSBA01
|
|
LD A,1
|
|
CALL SBH_WRK
|
|
|
|
CALL REFRWIN
|
|
LD C,3
|
|
CALL INTMOUS
|
|
CP 1
|
|
JP Z,PBL4
|
|
LD A,0
|
|
RET
|
|
|
|
;new document
|
|
PB1: CALL PUSHBUT
|
|
CALL CLS
|
|
LD HL,PALCOL ;SET DESKTOP PALETTE
|
|
LD DE,#12EE ;& CURSOR COLORS
|
|
LD BC,#FFA4 ;#EE,#EF
|
|
LD A,1
|
|
CALL IPOINT
|
|
LD HL,PALCOL ;SET DESKTOP PALETTE
|
|
LD DE,#EE*4+NEWPAL
|
|
LD BC,#12*4
|
|
LDIR
|
|
CALL IBARS
|
|
CALL REFRWIN
|
|
LD A,0
|
|
RET
|
|
|
|
|
|
PBPALD: CALL PUSHBUT
|
|
PBPAL2: LD A,(UPCOLOR)
|
|
INC A
|
|
CP 215
|
|
JR Z,PBPALN
|
|
LD (UPCOLOR),A
|
|
CALL PALET
|
|
LD C,3
|
|
CALL INTMOUS
|
|
CP 1
|
|
JP Z,PBPAL2
|
|
PBPALN: LD A,0
|
|
RET
|
|
|
|
PBPALU: CALL PUSHBUT
|
|
PBPAL3: LD A,(UPCOLOR)
|
|
OR A
|
|
RET Z
|
|
DEC A
|
|
LD (UPCOLOR),A
|
|
CALL PALET
|
|
LD C,3
|
|
CALL INTMOUS
|
|
CP 1
|
|
JP Z,PBPAL3
|
|
LD A,0
|
|
RET
|
|
|
|
PB6A:
|
|
PB5A:
|
|
PB4A:
|
|
PB9:
|
|
PB8:
|
|
PB3:
|
|
PB2:
|
|
PB0: CALL PUSHBUT
|
|
LD A,0
|
|
RET
|
|
|
|
LQ1: EQU 33*8/2
|
|
LQ8: EQU 33/2
|
|
HQ1: EQU 23*8/2
|
|
HQ8: EQU 23/2
|
|
|
|
UB8: CALL POPBUT
|
|
UNZOOM: LD HL,(SHIFTX)
|
|
LD BC,LQ8
|
|
ADD HL,BC
|
|
LD DE,LQ1
|
|
SBC HL,DE
|
|
JR NC,EZO3
|
|
LD HL,0
|
|
EZO3: LD (SHIFTX),HL
|
|
|
|
LD HL,(SHIFTY)
|
|
LD BC,HQ8
|
|
ADD HL,BC
|
|
LD DE,HQ1
|
|
SBC HL,DE
|
|
JR NC,EZO4
|
|
LD HL,0
|
|
EZO4: LD (SHIFTY),HL
|
|
LD BC,23*8
|
|
EXX
|
|
LD BC,33*8
|
|
CALL TSTZOOM
|
|
|
|
UNZOO: LD HL,(SHIFTX)
|
|
LD DE,(SHIFTY)
|
|
LD BC,33*8
|
|
CALL FULLPIX
|
|
LD HL,33*8
|
|
LD (WIDTH_),HL
|
|
LD HL,23*8
|
|
LD (HEIGHT_),HL
|
|
LD A,0
|
|
LD (ZOOMMOD),A
|
|
CALL IBARS
|
|
LD A,0
|
|
RET
|
|
|
|
UB9: CALL POPBUT
|
|
LD HL,(SHIFTX)
|
|
LD BC,LQ1-LQ8
|
|
ADD HL,BC
|
|
LD (SHIFTX),HL
|
|
|
|
LD HL,(SHIFTY)
|
|
LD BC,HQ1-HQ8
|
|
ADD HL,BC
|
|
LD (SHIFTY),HL
|
|
LD BC,23
|
|
EXX
|
|
LD BC,33
|
|
CALL TSTZOOM
|
|
|
|
ZOOM: CALL ZOOMPIX
|
|
LD HL,33
|
|
LD (WIDTH_),HL
|
|
LD HL,23
|
|
LD (HEIGHT_),HL
|
|
LD A,1
|
|
LD (ZOOMMOD),A
|
|
CALL IBARS
|
|
LD A,0
|
|
RET
|
|
|
|
TSTZOOM: LD HL,(SHIFTX)
|
|
; LD BC,33*8
|
|
ADD HL,BC
|
|
EX DE,HL
|
|
LD HL,(X_SIZE)
|
|
SBC HL,DE
|
|
JR NC,TZOMX5
|
|
LD HL,(X_SIZE)
|
|
; LD BC,33*8
|
|
AND A
|
|
SBC HL,BC
|
|
JR NC,TZOMX6
|
|
LD HL,0
|
|
TZOMX6: LD (SHIFTX),HL
|
|
TZOMX5: EXX
|
|
LD HL,(SHIFTY)
|
|
; LD BC,23*8
|
|
ADD HL,BC
|
|
EX DE,HL
|
|
LD HL,(Y_SIZE)
|
|
SBC HL,DE
|
|
JR NC,TZOMX7
|
|
LD HL,(Y_SIZE)
|
|
; LD BC,23*8
|
|
AND A
|
|
SBC HL,BC
|
|
JR NC,TZOMX8
|
|
LD HL,0
|
|
TZOMX8: LD (SHIFTY),HL
|
|
TZOMX7: EXX
|
|
RET
|
|
|
|
|
|
UB0: CALL POPBUT
|
|
POP HL
|
|
LD A,0
|
|
RET
|
|
|
|
UBPALU:
|
|
UBPALD:
|
|
UB6A:
|
|
UB5A:
|
|
UB4A:
|
|
UB7:
|
|
UB6:
|
|
UB5:
|
|
UB4:
|
|
UB1: CALL POPBUT
|
|
LD A,0
|
|
RET
|
|
|
|
;LOAD FILE
|
|
UB3: CALL POPBUT
|
|
|
|
CALL LDFILE
|
|
LD IX,OPNFDLG
|
|
CALL DLGclos
|
|
LD IX,RDIALOG
|
|
CALL DLGopen
|
|
LD HL,0
|
|
LD (SHIFTX),HL
|
|
LD (SHIFTY),HL
|
|
XOR A
|
|
LD (UPCOLOR),A
|
|
CALL SETAWIN
|
|
CALL IBARS
|
|
CALL PALET
|
|
CALL REFRWIN
|
|
XOR A
|
|
RET
|
|
|
|
|
|
UB2: CALL POPBUT
|
|
CALL SVFILE
|
|
LD IX,SAVFDLG
|
|
CALL DLGclos
|
|
LD IX,RDIALOG
|
|
CALL DLGopen
|
|
CALL SETAWIN
|
|
CALL REFRWIN
|
|
XOR A
|
|
RET
|
|
|
|
F_BAR: DB "File Edit View Image Tools Options",0
|
|
|
|
PALOBJ: DW #CC00
|
|
|
|
COLOR: DB #F0
|
|
|
|
CRTOOL: DB #0A
|
|
|
|
ZOOMMOD: DB #00
|
|
|
|
PALE: LD A,L
|
|
CP #00
|
|
JP Z,SCO
|
|
LD A,3
|
|
RET
|
|
|
|
SCO: LD C,3
|
|
CALL INTMOUS
|
|
EX DE,HL
|
|
LD DE,64
|
|
AND A
|
|
SBC HL,DE
|
|
SRL H
|
|
RR L
|
|
SRL H
|
|
RR L
|
|
LD A,(UPCOLOR)
|
|
ADD A,L
|
|
CALL M_COLOR
|
|
RET
|
|
|
|
M_COLOR: LD (COLOR),A
|
|
CALL SBODY
|
|
LD HL,37*8-1
|
|
LD DE,4*8-1
|
|
LD BC,18
|
|
EXX
|
|
LD BC,18
|
|
EXX
|
|
CALL PLACE
|
|
RET
|
|
|
|
M_COLOU: LD HL,28*8-1
|
|
LD DE,4*8-1
|
|
LD BC,8*8+2
|
|
EXX
|
|
LD BC,18
|
|
EXX
|
|
CALL PLACE
|
|
LD HL,28*8
|
|
LD DE,4*8
|
|
LD A,BLACK
|
|
PPAL1: PUSH DE
|
|
PUSH HL
|
|
PUSH AF
|
|
LD BC,8
|
|
EXX
|
|
LD BC,8
|
|
EXX
|
|
CALL RECTAN
|
|
POP AF
|
|
POP HL
|
|
POP DE
|
|
LD BC,8
|
|
ADD HL,BC
|
|
INC A
|
|
CP BLACK+8
|
|
JP NZ,PPAL1
|
|
LD HL,28*8
|
|
LD DE,5*8
|
|
PPAL2: PUSH DE
|
|
PUSH HL
|
|
PUSH AF
|
|
LD BC,8
|
|
EXX
|
|
LD BC,8
|
|
EXX
|
|
CALL RECTAN
|
|
POP AF
|
|
POP HL
|
|
POP DE
|
|
LD BC,8
|
|
ADD HL,BC
|
|
INC A
|
|
CP 0 ;BLACK+16
|
|
JP NZ,PPAL2
|
|
RET
|
|
|
|
UPCOLOR: DB 0
|
|
|
|
PALET: LD HL,304
|
|
LD DE,64
|
|
LD A,(UPCOLOR)
|
|
LD B,42 ;168 pixels
|
|
LD C,A
|
|
PPAL12: PUSH BC
|
|
PUSH DE
|
|
PUSH HL
|
|
LD A,C
|
|
LD BC,8
|
|
EXX
|
|
LD BC,4
|
|
EXX
|
|
CALL RECTAN
|
|
POP HL
|
|
POP DE
|
|
INC DE
|
|
INC DE
|
|
INC DE
|
|
INC DE
|
|
POP BC
|
|
INC C
|
|
DJNZ PPAL12
|
|
RET
|
|
|
|
;;;;
|
|
GRID: LD HL,(X_)
|
|
INC HL
|
|
LD DE,(Y_)
|
|
LD BC,8
|
|
EX DE,HL
|
|
ADD HL,BC
|
|
EX DE,HL
|
|
LD B,22
|
|
GRID1: PUSH BC
|
|
PUSH HL
|
|
PUSH DE
|
|
LD A,BLACK
|
|
LD BC,304-SMSH-10
|
|
CALL HRUBBER
|
|
POP HL
|
|
LD BC,8
|
|
ADD HL,BC
|
|
EX DE,HL
|
|
POP HL
|
|
POP BC
|
|
DJNZ GRID1
|
|
GRID2: LD HL,(X_)
|
|
LD DE,7
|
|
ADD HL,DE
|
|
LD DE,(Y_)
|
|
LD B,32
|
|
GRID3: PUSH BC
|
|
PUSH DE
|
|
PUSH HL
|
|
LD A,BLACK
|
|
LD BC,184
|
|
CALL VRUBBER
|
|
POP HL
|
|
LD BC,8
|
|
ADD HL,BC
|
|
POP DE
|
|
POP BC
|
|
DJNZ GRID3
|
|
RET
|
|
|
|
PUSHBUT: LD IX,RDIALOG
|
|
CALL GETPARM
|
|
JP BPUSH
|
|
|
|
POPBUT: LD IX,RDIALOG
|
|
CALL GETPARM
|
|
JP BPOP
|
|
|
|
|
|
USERini: LD A,2
|
|
SCF
|
|
RET
|
|
|
|
;HL - X OFFSET
|
|
;DE - Y OFFSET
|
|
;BC - WIDTH
|
|
|
|
AREAPIX: EQU #C000
|
|
|
|
PREV2X: DW 0
|
|
PREV2Y: DW 0
|
|
PREVX: DW 0
|
|
PREVY: DW 0
|
|
STARX: DW 0
|
|
STARY: DW 0
|
|
|
|
X_: DW 5+MSH
|
|
Y_: DW 56
|
|
|
|
WIDTH_: DW 33*8
|
|
HEIGHT_: DW 23*8
|
|
|
|
SHIFTX: DW 0
|
|
SHIFTY: DW 0
|
|
|
|
ZOOM_X: DW 5+MSH
|
|
ZOOM_Y: DW 56
|
|
|
|
X_SIZE: DW 320
|
|
Y_SIZE: DW 256
|
|
|
|
Y_LENB: DW 0
|
|
X_LENB: DW 0
|
|
Y_HGTB: DW 0
|
|
X_HGTB: DW 0
|
|
|
|
DATAPIX: PUSH BC
|
|
LD (SHIFTX),HL
|
|
LD (SHIFTY),DE
|
|
CALL PIXOPEN
|
|
LD IX,AREAPIX
|
|
LD BC,(X_SIZE)
|
|
DATPIX1: LD A,D
|
|
OR E
|
|
JR Z,DATPIX2
|
|
DEC DE
|
|
ADD IX,BC
|
|
CALL C,PIXNEXT
|
|
JR DATPIX1
|
|
DATPIX2: LD HL,(ZOOM_X)
|
|
LD DE,(ZOOM_Y)
|
|
POP BC
|
|
LD A,23
|
|
DATPIX3: PUSH AF
|
|
PUSH BC
|
|
PUSH HL
|
|
PUSH DE
|
|
PUSH IX
|
|
LD A,(XBANK)
|
|
PUSH AF
|
|
EXX
|
|
LD BC,(SHIFTX)
|
|
ADD IX,BC
|
|
CALL C,PIXNEXT
|
|
EXX
|
|
CALL COPY_L
|
|
POP AF
|
|
CALL PIXFIX
|
|
POP IX
|
|
LD BC,(X_SIZE)
|
|
ADD IX,BC
|
|
CALL C,PIXNEXT
|
|
POP DE
|
|
POP HL
|
|
POP BC
|
|
INC DE
|
|
POP AF
|
|
DEC A
|
|
JP NZ,DATPIX3
|
|
CALL RETBANK
|
|
RET
|
|
|
|
SADDR: DW 0
|
|
|
|
COPY_L: PUSH HL
|
|
EX AF,AF'
|
|
IN A,(PAGE1)
|
|
LD H,A
|
|
IN A,(Y_PORT)
|
|
LD L,A
|
|
EX (SP),HL
|
|
LD A,#50
|
|
OUT (PAGE1),A
|
|
LD A,E
|
|
OUT (Y_PORT),A
|
|
LD DE,#4040
|
|
ADD HL,DE
|
|
LD (SADDR),HL
|
|
EX AF,AF'
|
|
LD D,XH
|
|
LD E,XL
|
|
EX DE,HL
|
|
PUSH BC
|
|
LD D,H
|
|
LD E,L
|
|
ADD HL,BC
|
|
JP C,CONER1
|
|
LD H,D
|
|
LD L,E
|
|
LD DE,(SADDR)
|
|
LDIR
|
|
POP BC
|
|
EX DE,HL
|
|
LD XH,D
|
|
LD XL,E
|
|
POP BC
|
|
LD A,B
|
|
OUT (PAGE1),A
|
|
LD A,C
|
|
OUT (Y_PORT),A
|
|
XOR A
|
|
RET
|
|
|
|
CONER1: PUSH HL
|
|
LD A,L
|
|
LD L,C
|
|
LD C,A
|
|
LD A,H
|
|
LD H,B
|
|
LD B,A
|
|
AND A
|
|
SBC HL,BC
|
|
LD B,H
|
|
LD C,L
|
|
LD H,D
|
|
LD L,E
|
|
LD DE,(SADDR)
|
|
LDIR
|
|
CALL PIXNXT
|
|
POP BC
|
|
LD A,B
|
|
OR C
|
|
JR Z,CONER11
|
|
LDIR
|
|
CALL PIXPRV
|
|
CONER11: POP BC
|
|
EX DE,HL
|
|
LD XH,D
|
|
LD XL,E
|
|
POP BC
|
|
LD A,B
|
|
OUT (PAGE1),A
|
|
LD A,C
|
|
OUT (Y_PORT),A
|
|
XOR A
|
|
RET
|
|
|
|
FULLPIX: PUSH BC
|
|
CALL PIXOPEN
|
|
LD IX,AREAPIX
|
|
LD BC,(X_SIZE)
|
|
FULPIX1: LD A,D
|
|
OR E
|
|
JR Z,FULPIX2
|
|
DEC DE
|
|
ADD IX,BC
|
|
CALL C,PIXNEXT
|
|
JR FULPIX1
|
|
FULPIX2: LD HL,(ZOOM_X)
|
|
LD DE,(ZOOM_Y)
|
|
POP BC
|
|
LD A,23*8
|
|
FULPIX3: PUSH AF
|
|
PUSH BC
|
|
PUSH HL
|
|
PUSH DE
|
|
PUSH IX
|
|
LD A,(XBANK)
|
|
PUSH AF
|
|
EXX
|
|
LD BC,(SHIFTX)
|
|
ADD IX,BC
|
|
CALL C,PIXNEXT
|
|
EXX
|
|
CALL COPY_L
|
|
POP AF
|
|
CALL PIXFIX
|
|
POP IX
|
|
LD BC,(X_SIZE)
|
|
ADD IX,BC
|
|
CALL C,PIXNEXT
|
|
POP DE
|
|
POP HL
|
|
POP BC
|
|
INC DE
|
|
POP AF
|
|
DEC A
|
|
JP NZ,FULPIX3
|
|
CALL RETBANK
|
|
RET
|
|
|
|
SMSH: EQU MSH*2
|
|
|
|
RDIALOG: DW #0000 ;STYLE
|
|
DB 27 ;NUMBER ITEMS
|
|
DW 0 ;X
|
|
DW 0 ;Y
|
|
DW 320 ;CX
|
|
DW 256 ;CY
|
|
DW #0000 ;RESOURCE MENU BAR OR "0" ZERO
|
|
DB "2D Studio",0 ;CAPTION
|
|
|
|
;CONTROL ITEM
|
|
DW 4+MSH ;X
|
|
DW 55 ;Y
|
|
DW 293-MSH ;CX
|
|
DW 186+8 ;CY
|
|
DW #2401 ;ID
|
|
DB LISTX ;TYPE ITEM #80-BUTTON
|
|
DB #00 ;ARRAY
|
|
|
|
DW 303 ;X
|
|
DW 55 ;Y
|
|
DW 10 ;CX
|
|
DW 186 ;CY
|
|
DW #CC00 ;ID
|
|
DB LISTX ;TYPE ITEM #80-BUTTON
|
|
DB #00 ;ARRAY
|
|
|
|
DW 304 ;X
|
|
DW 56 ;Y
|
|
DW 8 ;CX
|
|
DW 8 ;CY
|
|
DW #0120 ;ID
|
|
DB BUTTON ;TYPE ITEM #80-BUTTON
|
|
DB 0 ;TEXT FOR ITEM
|
|
|
|
DW 304 ;X
|
|
DW 56+184-8 ;Y
|
|
DW 8 ;CX
|
|
DW 8 ;CY
|
|
DW #0121 ;ID
|
|
DB BUTTON ;TYPE ITEM #80-BUTTON
|
|
DB 0 ;TEXT FOR ITEM
|
|
|
|
VSBA01: DW 293-MSH+4+10 ;X
|
|
DW 56 ;Y
|
|
DW 8 ;CX
|
|
DW 184 ;CY
|
|
DW #0601 ;ID
|
|
DB VSBAR ;TYPE ITEM #80-BUTTON
|
|
DB #00 ;ARRAY
|
|
|
|
DW 293-MSH+4+10 ;X
|
|
DW 56 ;Y
|
|
DW 8 ;CX
|
|
DW 8 ;CY
|
|
DW #0602 ;ID
|
|
DB BUTTON ;TYPE ITEM #80-BUTTON
|
|
DB 0 ;TEXT FOR ITEM
|
|
|
|
DW 293-MSH+4+10 ;X
|
|
DW 56+184-8 ;Y
|
|
DW 8 ;CX
|
|
DW 8 ;CY
|
|
DW #0603 ;ID
|
|
DB BUTTON ;TYPE ITEM #80-BUTTON
|
|
DB 0 ;TEXT FOR ITEM
|
|
|
|
HSBA01: DW 5+MSH ;X
|
|
DW 55+186-1 ;Y
|
|
DW 293-MSH-2-8 ;CX
|
|
DW 8 ;CY
|
|
DW #0701 ;ID
|
|
DB HSBAR ;TYPE ITEM #80-BUTTON
|
|
DB #00 ;ARRAY
|
|
|
|
DW 5+MSH ;X
|
|
DW 55+186-1 ;Y
|
|
DW 8 ;CX
|
|
DW 8 ;CY
|
|
DW #0702 ;ID
|
|
DB BUTTON ;TYPE ITEM #80-BUTTON
|
|
DB 0 ;TEXT FOR ITEM
|
|
|
|
DW 5+MSH+293-MSH-10-8 ;X
|
|
DW 55+186-1 ;Y
|
|
DW 8 ;CX
|
|
DW 8 ;CY
|
|
DW #0703 ;ID
|
|
DB BUTTON ;TYPE ITEM #80-BUTTON
|
|
DB 0 ;TEXT FOR ITEM
|
|
|
|
DW 320-14 ;X
|
|
DW 4 ;Y
|
|
DW 10 ;CX
|
|
DW 10 ;CY
|
|
DW #0100 ;ID
|
|
DB BUTTON ;TYPE ITEM #80-BUTTON
|
|
DB #FF,#0D,0 ;TEXT FOR ITEM
|
|
|
|
DW 4 ;X
|
|
DW 34 ;Y
|
|
DW 18 ;CX
|
|
DW 18 ;CY
|
|
DW #0101 ;ID
|
|
DB BUTTON ;TYPE ITEM #80-BUTTON
|
|
DB #FF,1,0 ;TEXT FOR ITEM
|
|
|
|
DW 22 ;X
|
|
DW 34 ;Y
|
|
DW 18 ;CX
|
|
DW 18 ;CY
|
|
DW #0102 ;ID
|
|
DB BUTTON ;TYPE ITEM #80-BUTTON
|
|
DB #FF,2,0 ;TEXT FOR ITEM
|
|
|
|
DW 40 ;X
|
|
DW 34 ;Y
|
|
DW 18 ;CX
|
|
DW 18 ;CY
|
|
DW #0103 ;ID
|
|
DB BUTTON ;TYPE ITEM #80-BUTTON
|
|
DB #FF,3,0 ;TEXT FOR ITEM
|
|
|
|
DW 61 ;X
|
|
DW 34 ;Y
|
|
DW 18 ;CX
|
|
DW 18 ;CY
|
|
DW #0104 ;ID
|
|
DB BUTTON ;TYPE ITEM #80-BUTTON
|
|
DB #FF,4,0 ;TEXT FOR ITEM
|
|
|
|
DW 79 ;X
|
|
DW 34 ;Y
|
|
DW 18 ;CX
|
|
DW 18 ;CY
|
|
DW #0105 ;ID
|
|
DB BUTTON ;TYPE ITEM #80-BUTTON
|
|
DB #FF,5,0 ;TEXT FOR ITEM
|
|
|
|
DW 97 ;X
|
|
DW 34 ;Y
|
|
DW 18 ;CX
|
|
DW 18 ;CY
|
|
DW #0106 ;ID
|
|
DB BUTTON ;TYPE ITEM #80-BUTTON
|
|
DB #FF,6,0 ;TEXT FOR ITEM
|
|
|
|
; DW 140 ;X
|
|
; DW 34 ;Y
|
|
; DW 16 ;CX
|
|
; DW 16 ;CY
|
|
; DW #0107 ;ID
|
|
; DB BUTTON ;TYPE ITEM #80-BUTTON
|
|
; DB "D",0 ;TEXT FOR ITEM
|
|
|
|
DW 3 ;X
|
|
DW 56 ;Y
|
|
DW 18 ;CX
|
|
DW 18 ;CY
|
|
DW #010A ;ID
|
|
DB BUTTON ;TYPE ITEM #80-BUTTON
|
|
DB #FF,9,0 ;TEXT FOR ITEM
|
|
|
|
DW 3 ;X
|
|
DW 74 ;Y
|
|
DW 18 ;CX
|
|
DW 18 ;CY
|
|
DW #010B ;ID
|
|
DB BUTTON ;TYPE ITEM #80-BUTTON
|
|
DB #FF,12,0 ;TEXT FOR ITEM
|
|
|
|
DW 3 ;X
|
|
DW 92 ;Y
|
|
DW 18 ;CX
|
|
DW 18 ;CY
|
|
DW #010C ;ID
|
|
DB BUTTON ;TYPE ITEM #80-BUTTON
|
|
DB #FF,10,0 ;TEXT FOR ITEM
|
|
|
|
DW 3 ;X
|
|
DW 110 ;Y
|
|
DW 18 ;CX
|
|
DW 18 ;CY
|
|
DW #010D ;ID
|
|
DB BUTTON ;TYPE ITEM #80-BUTTON
|
|
DB #FF,11,0 ;TEXT FOR ITEM
|
|
|
|
DW 3 ;X
|
|
DW 128 ;Y
|
|
DW 18 ;CX
|
|
DW 18 ;CY
|
|
DW #010E ;ID
|
|
DB BUTTON ;TYPE ITEM #80-BUTTON
|
|
DB #FF,8,0 ;TEXT FOR ITEM
|
|
|
|
DW 3 ;X
|
|
DW 146 ;Y
|
|
DW 18 ;CX
|
|
DW 18 ;CY
|
|
DW #010F ;ID
|
|
DB BUTTON ;TYPE ITEM #80-BUTTON
|
|
DB #FF,7,0 ;TEXT FOR ITEM
|
|
|
|
DW 3 ;X
|
|
DW 164 ;Y
|
|
DW 18 ;CX
|
|
DW 18 ;CY
|
|
DW #0110 ;ID
|
|
DB BUTTON ;TYPE ITEM #80-BUTTON
|
|
DB "G",0 ;TEXT FOR ITEM
|
|
|
|
DW 3 ;X
|
|
DW 182 ;Y
|
|
DW 18 ;CX
|
|
DW 18 ;CY
|
|
DW #0111 ;ID
|
|
DB BUTTON ;TYPE ITEM #80-BUTTON
|
|
DB "H",0 ;TEXT FOR ITEM
|
|
|
|
DW 3 ;X
|
|
DW 200 ;Y
|
|
DW 18 ;CX
|
|
DW 18 ;CY
|
|
DW #0108 ;ID
|
|
DB BUTTON ;TYPE ITEM #80-BUTTON
|
|
DB "-",0 ;TEXT FOR ITEM
|
|
|
|
DW 3 ;X
|
|
DW 218 ;Y
|
|
DW 18 ;CX
|
|
DW 18 ;CY
|
|
DW #0109 ;ID
|
|
DB BUTTON ;TYPE ITEM #80-BUTTON
|
|
DB "+",0 ;TEXT FOR ITEM
|
|
|
|
INCLUDE "2DS_DISK.ASM"
|
|
INCLUDE "SPRITE_.ASM"
|
|
|
|
MAINM:
|
|
DB M_ITEM," File",0
|
|
DW WFILE
|
|
DB M_ITEM," Edit",0
|
|
DW WEDIT
|
|
DB M_ITEM," View",0
|
|
DW WVIEW
|
|
DB M_ITEM," Image",0
|
|
DW WIMAGE
|
|
DB M_ITEM," Tools",0
|
|
DW WTOOLS
|
|
DB M_ITEM," Options",0
|
|
DW WOPTION
|
|
DB #00
|
|
|
|
WFILE: DW 0,31 ; X Y
|
|
DW 70 ; SIZE
|
|
DB M_ITEM,"New",0
|
|
DW #0101
|
|
DB M_ITEM,"Open...",0
|
|
DW #0102
|
|
DB M_ITEM,"Save",0
|
|
DW #0103
|
|
DB M_ITEM,"Save as...",0
|
|
DW #0104
|
|
DB M_BAR
|
|
DB M_ITEM,"Print",0
|
|
DW #0105
|
|
DB M_BAR
|
|
|
|
|
|
DB M_ITEM,"Exit",0
|
|
DW #0106
|
|
DB M_END
|
|
|
|
WEDIT: DW 26,31 ; X Y
|
|
DW 60 ; SIZE
|
|
DB M_ITEM,"Undo",0
|
|
DW #0201
|
|
DB M_ITEM,"Cut",0
|
|
DW #0202
|
|
DB M_ITEM,"Copy",0
|
|
DW #0203
|
|
DB M_ITEM,"Paste",0
|
|
DW #0204
|
|
DB M_ITEM,"Crop",0
|
|
DW #0205
|
|
DB M_ITEM,"Delete",0
|
|
DW #0206
|
|
DB M_ITEM,"Buffer...",0
|
|
DW #0207
|
|
DB M_BAR
|
|
DB M_ITEM,"Fill...",0
|
|
DW #0208
|
|
DB M_ITEM,"Flip...",0
|
|
DW #0209
|
|
DB M_ITEM,"Rotate...",0
|
|
DW #020A
|
|
DB M_ITEM,"Resize...",0
|
|
DW #020B
|
|
DB M_ITEM,"Slant...",0
|
|
DW #020C
|
|
DB M_ITEM,"Outline",0
|
|
DW #020D
|
|
DB M_END
|
|
|
|
WVIEW: DW 52,31 ; X Y
|
|
DW 108 ; SIZE
|
|
DB M_ITEM,"Zoom in",0
|
|
DW #0301
|
|
DB M_ITEM,"Zoom out",0
|
|
DW #0302
|
|
DB M_ITEM,"Full Screen",0
|
|
DW #0303
|
|
DB M_BAR
|
|
DB M_ITEM,"Image Information",0
|
|
DW #0304
|
|
DB M_BAR
|
|
DB M_ITEM,"Tools Bar",0
|
|
DW #0305
|
|
DB M_ITEM,"Pallete",0
|
|
DW #0306
|
|
DB M_ITEM,"Status Line",0
|
|
DW #0307
|
|
DB M_END
|
|
|
|
WIMAGE: DW 81,31 ; X Y
|
|
DW 60 ; SIZE
|
|
DB M_ITEM,"Invert",0
|
|
DW #0401
|
|
DB M_ITEM,"Resample",0
|
|
DW #0402
|
|
DB M_END
|
|
|
|
WTOOLS: DW 116,31 ; X Y
|
|
DW 60 ; SIZE
|
|
DB M_ITEM,"Pen",0
|
|
DW #0501
|
|
DB M_ITEM,"Brush",0
|
|
DW #0502
|
|
DB M_ITEM,"Ellips",0
|
|
DW #0503
|
|
DB M_END
|
|
|
|
WOPTION: DW 150,31 ; X Y
|
|
DW 60 ; SIZE
|
|
DB M_ITEM,"Empty",0
|
|
DW #0601
|
|
DB M_END
|
|
PRMBUFF: DB 0
|
|
BLOCK 256,0
|
|
|
|
WN_FACE:
|
|
MODULE _INTERFACE_
|
|
DISP #100
|
|
INCLUDE "interface/face.asm"
|
|
;INCLUDE "interface/face_alt.asm"
|
|
ENT
|
|
ENDMODULE
|
|
WN_FACE.Size EQU $ - WN_FACE
|