mirror of
https://github.com/Tolik-Trek/2D-Studio.git
synced 2026-06-15 09:31:35 +03:00
1328 lines
17 KiB
NASM
1328 lines
17 KiB
NASM
|
|
LOCK_X DEFW 0
|
|
LOCK_Y DEFW 0
|
|
LOCK_CX DEFW 0
|
|
LOCK_CY DEFW 0
|
|
|
|
MAIN_CX DEFW 0
|
|
MAIN_CY DEFW 0
|
|
|
|
G EQU GRAY
|
|
K EQU RED
|
|
T EQU BRED
|
|
U EQU WHITE
|
|
J EQU BLACK
|
|
|
|
RDB_BMP DEFB G,J,J,J,J,G,G
|
|
DEFB J,J,G,G,G,J,G
|
|
DEFB J,G,G,G,G,G,U
|
|
DEFB J,G,G,G,G,G,U
|
|
DEFB J,G,G,G,G,G,U
|
|
DEFB G,J,G,G,G,U,U
|
|
DEFB G,G,U,U,U,U,G
|
|
|
|
RDB2BMP DEFB G,J,J,J,J,G,G
|
|
DEFB J,J,G,G,G,J,G
|
|
DEFB J,G,U,U,J,G,U
|
|
DEFB J,G,U,G,J,G,U
|
|
DEFB J,G,J,J,J,G,U
|
|
DEFB G,J,G,G,G,U,U
|
|
DEFB G,G,U,U,U,U,G
|
|
|
|
CHE_BMP DEFB J,J,J,J,J,J,U
|
|
DEFB J,G,G,G,G,G,U
|
|
DEFB J,G,G,G,G,G,U
|
|
DEFB J,G,G,G,G,G,U
|
|
DEFB J,G,G,G,G,G,U
|
|
DEFB J,G,G,G,G,G,U
|
|
DEFB U,U,U,U,U,U,U
|
|
|
|
CHE2BMP DEFB J,J,J,J,J,J,U
|
|
DEFB J,G,G,G,G,G,U
|
|
DEFB J,G,U,U,J,G,U
|
|
DEFB J,G,U,G,J,G,U
|
|
DEFB J,G,J,J,J,G,U
|
|
DEFB J,G,G,G,G,G,U
|
|
DEFB U,U,U,U,U,U,U
|
|
|
|
SBU_BMP DEFB U,U,U,U,U,U,U,J
|
|
DEFB U,G,G,G,G,G,G,J
|
|
DEFB U,G,G,J,J,G,G,J
|
|
DEFB U,G,J,J,J,J,G,J
|
|
DEFB U,G,G,J,J,G,G,J
|
|
DEFB U,G,G,J,J,G,G,J
|
|
DEFB U,G,G,G,G,G,G,J
|
|
DEFB J,J,J,J,J,J,J,J
|
|
|
|
SBD_BMP DEFB U,U,U,U,U,U,U,J
|
|
DEFB U,G,G,G,G,G,G,J
|
|
DEFB U,G,G,J,J,G,G,J
|
|
DEFB U,G,G,J,J,G,G,J
|
|
DEFB U,G,J,J,J,J,G,J
|
|
DEFB U,G,G,J,J,G,G,J
|
|
DEFB U,G,G,G,G,G,G,J
|
|
DEFB J,J,J,J,J,J,J,J
|
|
|
|
SBU_BMA DEFB J,J,J,J,J,J,J,J
|
|
DEFB J,G,G,G,G,G,G,U
|
|
DEFB J,G,G,J,J,G,G,U
|
|
DEFB J,G,J,J,J,J,G,U
|
|
DEFB J,G,G,J,J,G,G,U
|
|
DEFB J,G,G,J,J,G,G,U
|
|
DEFB J,G,G,G,G,G,G,U
|
|
DEFB J,U,U,U,U,U,U,U
|
|
|
|
SBD_BMA DEFB J,J,J,J,J,J,J,J
|
|
DEFB J,G,G,G,G,G,G,U
|
|
DEFB J,G,G,J,J,G,G,U
|
|
DEFB J,G,G,J,J,G,G,U
|
|
DEFB J,G,J,J,J,J,G,U
|
|
DEFB J,G,G,J,J,G,G,U
|
|
DEFB J,G,G,G,G,G,G,U
|
|
DEFB J,U,U,U,U,U,U,U
|
|
|
|
SBL_BMP DEFB U,U,U,U,U,U,U,J
|
|
DEFB U,G,G,G,G,G,G,J
|
|
DEFB U,G,G,J,G,G,G,J
|
|
DEFB U,G,J,J,J,J,G,J
|
|
DEFB U,G,J,J,J,J,G,J
|
|
DEFB U,G,G,J,G,G,G,J
|
|
DEFB U,G,G,G,G,G,G,J
|
|
DEFB J,J,J,J,J,J,J,J
|
|
|
|
SBR_BMP DEFB U,U,U,U,U,U,U,J
|
|
DEFB U,G,G,G,G,G,G,J
|
|
DEFB U,G,G,G,J,G,G,J
|
|
DEFB U,G,J,J,J,J,G,J
|
|
DEFB U,G,J,J,J,J,G,J
|
|
DEFB U,G,G,G,J,G,G,J
|
|
DEFB U,G,G,G,G,G,G,J
|
|
DEFB J,J,J,J,J,J,J,J
|
|
|
|
SBL_BMA DEFB J,J,J,J,J,J,J,J
|
|
DEFB J,G,G,G,G,G,G,U
|
|
DEFB J,G,G,J,G,G,G,U
|
|
DEFB J,G,J,J,J,J,G,U
|
|
DEFB J,G,J,J,J,J,G,U
|
|
DEFB J,G,G,J,G,G,G,U
|
|
DEFB J,G,G,G,G,G,G,U
|
|
DEFB J,U,U,U,U,U,U,U
|
|
|
|
SBR_BMA DEFB J,J,J,J,J,J,J,J
|
|
DEFB J,G,G,G,G,G,G,U
|
|
DEFB J,G,G,G,J,G,G,U
|
|
DEFB J,G,J,J,J,J,G,U
|
|
DEFB J,G,J,J,J,J,G,U
|
|
DEFB J,G,G,G,J,G,G,U
|
|
DEFB J,G,G,G,G,G,G,U
|
|
DEFB J,U,U,U,U,U,U,U
|
|
|
|
|
|
BUTTON EQU #80
|
|
ED_BOX EQU #81
|
|
STATIC EQU #82
|
|
LISTX EQU #83
|
|
VSBAR EQU #84
|
|
HSBAR EQU #85
|
|
CH_BOX EQU #86
|
|
RD_BUTT EQU #87
|
|
GROUP EQU #88
|
|
|
|
GETPARM LD B,(IX+2)
|
|
INC IX
|
|
INC IX
|
|
INC IX
|
|
PUSH BC
|
|
PUSH HL
|
|
LD L,(IX+0)
|
|
LD H,(IX+1)
|
|
LD E,(IX+2)
|
|
LD D,(IX+3)
|
|
LD C,(IX+4)
|
|
LD B,(IX+5)
|
|
LD (MAIN_X),HL
|
|
LD (MAIN_Y),DE
|
|
LD (MAIN_CX),BC
|
|
EXX
|
|
LD C,(IX+6)
|
|
LD B,(IX+7)
|
|
LD (MAIN_CY),BC
|
|
POP DE
|
|
EXX
|
|
LD D,XH
|
|
LD E,XL
|
|
LD HL,10
|
|
ADD HL,DE
|
|
LD BC,#0100
|
|
LD A,C
|
|
CPIR
|
|
EX DE,HL
|
|
LD XH,D
|
|
LD XL,E
|
|
POP BC
|
|
GPRM1 PUSH BC
|
|
EXX
|
|
LD L,(IX+8)
|
|
LD H,(IX+9)
|
|
AND A
|
|
SBC HL,DE
|
|
EXX
|
|
JP NZ,GPRM2
|
|
POP BC
|
|
LD L,(IX+0)
|
|
LD H,(IX+1)
|
|
LD E,(IX+2)
|
|
LD D,(IX+3)
|
|
LD C,(IX+4)
|
|
LD B,(IX+5)
|
|
EXX
|
|
LD C,(IX+6)
|
|
LD B,(IX+7)
|
|
EXX
|
|
PUSH BC
|
|
LD BC,(MAIN_X)
|
|
ADD HL,BC
|
|
EX DE,HL
|
|
LD BC,(MAIN_Y)
|
|
ADD HL,BC
|
|
EX DE,HL
|
|
POP BC
|
|
AND A
|
|
RET
|
|
|
|
GPRM2 CALL ITEM_NX
|
|
POP BC
|
|
DJNZ GPRM1
|
|
SCF
|
|
RET
|
|
|
|
DLGclos LD B,(IX+2)
|
|
INC IX
|
|
INC IX
|
|
INC IX
|
|
LD L,(IX+8)
|
|
LD H,(IX+9)
|
|
PUSH HL
|
|
PUSH BC
|
|
LD D,XH
|
|
LD E,XL
|
|
LD HL,10
|
|
ADD HL,DE
|
|
LD BC,#0100
|
|
LD A,C
|
|
CPIR
|
|
EX DE,HL
|
|
LD XH,D
|
|
LD XL,E
|
|
POP BC
|
|
DCLO1 PUSH BC
|
|
LD L,(IX+8)
|
|
LD H,(IX+9)
|
|
CALL LDESTR
|
|
JP C,DCLO2
|
|
CALL ITEM_NX
|
|
POP BC
|
|
DJNZ DCLO1
|
|
LD HL,#0000
|
|
CALL LDESTR
|
|
LD HL,#0002
|
|
CALL LDESTR
|
|
POP HL
|
|
CALL DESTR
|
|
AND A
|
|
RET
|
|
|
|
DCLO2 POP BC
|
|
POP HL
|
|
AND A
|
|
RET
|
|
|
|
RTDIAL DEFW 0
|
|
|
|
DLGopen INC IX
|
|
INC IX
|
|
INC IX
|
|
LD L,(IX+0)
|
|
LD H,(IX+1)
|
|
LD E,(IX+2)
|
|
LD D,(IX+3)
|
|
LD C,(IX+4)
|
|
LD B,(IX+5)
|
|
LD (MAIN_X),HL
|
|
LD (WIN_X),HL
|
|
LD (MAIN_Y),DE
|
|
LD (WIN_Y),DE
|
|
LD (MAIN_CX),BC
|
|
LD L,(IX+6)
|
|
LD H,(IX+7)
|
|
LD (MAIN_CY),HL
|
|
LD L,(IX+8)
|
|
LD H,(IX+9)
|
|
AND A
|
|
RET
|
|
|
|
|
|
DLGinit LD (RTDIAL),IX
|
|
LD (USERINI+1),HL
|
|
LD B,(IX+2)
|
|
PUSH BC
|
|
CALL AWIN
|
|
LD D,XH
|
|
LD E,XL
|
|
LD HL,10
|
|
ADD HL,DE
|
|
CALL CAPTION
|
|
EX DE,HL
|
|
LD XL,E
|
|
LD XH,D
|
|
LD HL,(MAIN_X)
|
|
LD (WIN_X),HL
|
|
LD HL,(MAIN_Y)
|
|
LD (WIN_Y),HL
|
|
POP BC
|
|
ITMCYC3 PUSH BC
|
|
LD L,(IX+8)
|
|
LD H,(IX+9)
|
|
LD A,(IX+10)
|
|
USERINI CALL USERini
|
|
LD HL,ITMCYC2
|
|
PUSH HL
|
|
OR A
|
|
RET Z
|
|
LD A,(IX+10)
|
|
CP BUTTON
|
|
JP Z,BUT_INI
|
|
CP ED_BOX
|
|
JP Z,EDB_INI
|
|
CP CH_BOX
|
|
JP Z,CHB_INI
|
|
CP RD_BUTT
|
|
JP Z,RDB_INI
|
|
CP LISTX
|
|
JP Z,LST_INI
|
|
CP VSBAR
|
|
JP Z,SBV_INI
|
|
CP HSBAR
|
|
JP Z,SBH_INI
|
|
CP STATIC
|
|
JP Z,STC_INI
|
|
CP GROUP
|
|
JP Z,GRP_INI
|
|
POP HL
|
|
ITMCYC2 CALL ITEM_NX
|
|
POP BC
|
|
DJNZ ITMCYC3
|
|
AND A
|
|
RET
|
|
|
|
AWIN INC IX
|
|
INC IX
|
|
INC IX
|
|
LD L,(IX+0)
|
|
LD H,(IX+1)
|
|
LD E,(IX+2)
|
|
LD D,(IX+3)
|
|
LD C,(IX+4)
|
|
LD B,(IX+5)
|
|
LD (MAIN_X),HL
|
|
LD (MAIN_Y),DE
|
|
LD (MAIN_CX),BC
|
|
EXX
|
|
LD C,(IX+6)
|
|
LD B,(IX+7)
|
|
LD (MAIN_CY),BC
|
|
EXX
|
|
CALL SAVERG
|
|
CALL OPTIMIZ
|
|
LD L,(IX+8)
|
|
LD H,(IX+9)
|
|
CALL CONST
|
|
CALL RESTRG
|
|
LD HL,0
|
|
LD DE,0
|
|
CALL OPTIMIZ
|
|
LD HL,#0000
|
|
CALL LCONST
|
|
CALL RESTRG
|
|
LD A,(WINDOW_)
|
|
LD (BODY),A
|
|
JP PLANE
|
|
|
|
CAPTION PUSH HL
|
|
LD BC,12
|
|
EXX
|
|
LD HL,(MAIN_CX)
|
|
LD BC,6
|
|
AND A
|
|
SBC HL,BC
|
|
LD B,H
|
|
LD C,L
|
|
LD HL,(MAIN_X)
|
|
INC HL
|
|
INC HL
|
|
INC HL
|
|
LD DE,(MAIN_Y)
|
|
INC DE
|
|
INC DE
|
|
INC DE
|
|
CALL SAVERG
|
|
LD HL,2
|
|
LD DE,2
|
|
CALL OPTIMIZ
|
|
LD HL,#0002
|
|
CALL LCONST
|
|
CALL RESTRG
|
|
LD A,(ACAPT_)
|
|
LD (BODY),A
|
|
CALL PLACE
|
|
POP DE
|
|
PUSH DE
|
|
CALL LENSTR
|
|
LD HL,(MAIN_CX)
|
|
AND A
|
|
SBC HL,BC
|
|
SRL H
|
|
RR L
|
|
LD DE,(MAIN_X)
|
|
ADD HL,DE
|
|
EX DE,HL
|
|
LD HL,(MAIN_Y)
|
|
LD BC,6
|
|
ADD HL,BC
|
|
EX DE,HL
|
|
LD A,(CTEXT_)
|
|
LD (BODY),A
|
|
POP BC
|
|
JP PCHARX
|
|
|
|
BUT_INI LD L,(IX+0)
|
|
LD H,(IX+1)
|
|
LD E,(IX+2)
|
|
LD D,(IX+3)
|
|
LD C,(IX+4)
|
|
LD B,(IX+5)
|
|
EXX
|
|
LD C,(IX+6)
|
|
LD B,(IX+7)
|
|
EXX
|
|
CALL SAVERG
|
|
CALL OPTIMIZ
|
|
LD L,(IX+8)
|
|
LD H,(IX+9)
|
|
CALL LCONST
|
|
CALL RESTRG
|
|
JP PBUTTON
|
|
|
|
LST_INI LD L,(IX+0)
|
|
LD H,(IX+1)
|
|
LD E,(IX+2)
|
|
LD D,(IX+3)
|
|
LD C,(IX+4)
|
|
LD B,(IX+5)
|
|
EXX
|
|
LD C,(IX+6)
|
|
LD B,(IX+7)
|
|
EXX
|
|
CALL SAVERG
|
|
CALL OPTIMIZ
|
|
LD L,(IX+8)
|
|
LD H,(IX+9)
|
|
CALL LCONST
|
|
CALL RESTRG
|
|
JP PLIST
|
|
|
|
LST_CLR LD L,(IX+0)
|
|
LD H,(IX+1)
|
|
LD E,(IX+2)
|
|
LD D,(IX+3)
|
|
LD C,(IX+4)
|
|
LD B,(IX+5)
|
|
EXX
|
|
LD C,(IX+6)
|
|
LD B,(IX+7)
|
|
EXX
|
|
JP PLIST
|
|
|
|
|
|
EDB_INI LD L,(IX+0)
|
|
LD H,(IX+1)
|
|
LD E,(IX+2)
|
|
LD D,(IX+3)
|
|
LD C,(IX+4)
|
|
LD B,(IX+5)
|
|
EXX
|
|
LD C,(IX+6)
|
|
LD B,(IX+7)
|
|
EXX
|
|
CALL SAVERG
|
|
CALL OPTIMIZ
|
|
LD L,(IX+8)
|
|
LD H,(IX+9)
|
|
CALL LCONST
|
|
CALL RESTRG
|
|
JP PEDITOR
|
|
|
|
CHB_INI LD L,(IX+0)
|
|
LD H,(IX+1)
|
|
LD E,(IX+2)
|
|
LD D,(IX+3)
|
|
LD C,(IX+4)
|
|
LD B,(IX+5)
|
|
EXX
|
|
LD C,(IX+6)
|
|
LD B,(IX+7)
|
|
EXX
|
|
CALL SAVERG
|
|
CALL OPTIMIZ
|
|
LD L,(IX+8)
|
|
LD H,(IX+9)
|
|
CALL LCONST
|
|
CALL RESTRG
|
|
XOR A
|
|
JP PCHECK
|
|
|
|
RDB_INI LD L,(IX+0)
|
|
LD H,(IX+1)
|
|
LD E,(IX+2)
|
|
LD D,(IX+3)
|
|
LD C,(IX+4)
|
|
LD B,(IX+5)
|
|
EXX
|
|
LD C,(IX+6)
|
|
LD B,(IX+7)
|
|
EXX
|
|
CALL SAVERG
|
|
CALL OPTIMIZ
|
|
LD L,(IX+8)
|
|
LD H,(IX+9)
|
|
CALL LCONST
|
|
CALL RESTRG
|
|
XOR A
|
|
JP RDBUTT
|
|
|
|
STC_INI LD L,(IX+0)
|
|
LD H,(IX+1)
|
|
LD E,(IX+2)
|
|
LD D,(IX+3)
|
|
LD C,(IX+4)
|
|
LD B,(IX+5)
|
|
EXX
|
|
LD C,(IX+6)
|
|
LD B,(IX+7)
|
|
EXX
|
|
CALL SAVERG
|
|
CALL OPTIMIZ
|
|
LD L,(IX+8)
|
|
LD H,(IX+9)
|
|
CALL LCONST
|
|
CALL RESTRG
|
|
JP PSTATIC
|
|
|
|
SBV_INI LD L,(IX+0)
|
|
LD H,(IX+1)
|
|
LD E,(IX+2)
|
|
LD D,(IX+3)
|
|
LD C,(IX+4)
|
|
LD B,(IX+5)
|
|
EXX
|
|
LD C,(IX+6)
|
|
LD B,(IX+7)
|
|
EXX
|
|
CALL SAVERG
|
|
CALL OPTIMIZ
|
|
LD L,(IX+8)
|
|
LD H,(IX+9)
|
|
CALL LCONST
|
|
CALL RESTRG
|
|
CALL SAVERG
|
|
CALL INITBAR
|
|
CALL RESTRG
|
|
LD (USOBJ_X),HL
|
|
LD (USOBJ_Y),DE
|
|
PUSH BC
|
|
LD BC,(MAIN_X)
|
|
ADD HL,BC
|
|
EX DE,HL
|
|
LD BC,(MAIN_Y)
|
|
ADD HL,BC
|
|
EX DE,HL
|
|
POP BC
|
|
LD (LOCK_X),HL
|
|
LD (LOCK_Y),DE
|
|
LD (LOCK_CX),BC
|
|
EXX
|
|
LD (LOCK_CY),BC
|
|
EXX
|
|
PUSH HL
|
|
PUSH DE
|
|
LD A,(WINDOW_)
|
|
LD (BODY),A
|
|
CALL PLACE
|
|
POP DE
|
|
POP HL
|
|
PUSH IX
|
|
LD IX,SBU_BMP
|
|
LD BC,#0808
|
|
CALL SPR_256
|
|
LD BC,(SB_LEN)
|
|
EXX
|
|
LD DE,(SB_LEN)
|
|
LD HL,(SB_VAL)
|
|
CALL MUL
|
|
LD DE,(SB_MAX)
|
|
CALL DIV
|
|
LD DE,(LOCK_Y)
|
|
LD BC,8
|
|
ADD HL,BC
|
|
ADD HL,DE
|
|
EX DE,HL
|
|
LD HL,(LOCK_X)
|
|
LD BC,(LOCK_CX)
|
|
CALL PLANE
|
|
LD HL,(LOCK_Y)
|
|
LD BC,(LOCK_CY)
|
|
ADD HL,BC
|
|
LD BC,8
|
|
AND A
|
|
SBC HL,BC
|
|
EX DE,HL
|
|
LD HL,(LOCK_X)
|
|
LD IX,SBD_BMP
|
|
LD BC,#0808
|
|
CALL SPR_256
|
|
POP IX
|
|
LD HL,(USOBJ_X)
|
|
LD DE,(USOBJ_Y)
|
|
LD BC,8
|
|
EXX
|
|
LD BC,8
|
|
EXX
|
|
CALL SAVERG
|
|
CALL OPTIMIZ
|
|
LD L,(IX+8)
|
|
LD H,(IX+9)
|
|
INC L
|
|
CALL LCONST
|
|
CALL RESTRG
|
|
EX DE,HL
|
|
LD BC,(LOCK_CY)
|
|
ADD HL,BC
|
|
LD BC,8
|
|
AND A
|
|
SBC HL,BC
|
|
EX DE,HL
|
|
LD BC,8
|
|
EXX
|
|
LD BC,8
|
|
EXX
|
|
CALL OPTIMIZ
|
|
LD L,(IX+8)
|
|
LD H,(IX+9)
|
|
INC L
|
|
INC L
|
|
CALL LCONST
|
|
AND A
|
|
RET
|
|
|
|
SBH_INI LD L,(IX+0)
|
|
LD H,(IX+1)
|
|
LD E,(IX+2)
|
|
LD D,(IX+3)
|
|
LD C,(IX+4)
|
|
LD B,(IX+5)
|
|
EXX
|
|
LD C,(IX+6)
|
|
LD B,(IX+7)
|
|
EXX
|
|
CALL SAVERG
|
|
CALL OPTIMIZ
|
|
LD L,(IX+8)
|
|
LD H,(IX+9)
|
|
CALL LCONST
|
|
CALL RESTRG
|
|
CALL SAVERG
|
|
CALL INITBAH
|
|
CALL RESTRG
|
|
LD (USOBJ_X),HL
|
|
LD (USOBJ_Y),DE
|
|
PUSH BC
|
|
LD BC,(MAIN_X)
|
|
ADD HL,BC
|
|
EX DE,HL
|
|
LD BC,(MAIN_Y)
|
|
ADD HL,BC
|
|
EX DE,HL
|
|
POP BC
|
|
LD (LOCK_X),HL
|
|
LD (LOCK_Y),DE
|
|
LD (LOCK_CX),BC
|
|
EXX
|
|
LD (LOCK_CY),BC
|
|
EXX
|
|
PUSH HL
|
|
PUSH DE
|
|
LD A,(WINDOW_)
|
|
LD (BODY),A
|
|
CALL PLACE
|
|
POP DE
|
|
POP HL
|
|
PUSH IX
|
|
LD IX,SBL_BMP
|
|
LD BC,#0808
|
|
CALL SPR_256
|
|
LD BC,(LOCK_CY)
|
|
EXX
|
|
LD DE,(SB_LEN)
|
|
LD HL,(SB_VAL)
|
|
CALL MUL
|
|
LD DE,(SB_MAX)
|
|
CALL DIV
|
|
LD DE,(LOCK_X)
|
|
LD BC,8
|
|
ADD HL,BC
|
|
ADD HL,DE
|
|
LD DE,(LOCK_Y)
|
|
LD BC,(SB_LEN)
|
|
CALL PLANE
|
|
LD HL,(LOCK_X)
|
|
LD BC,(LOCK_CX)
|
|
ADD HL,BC
|
|
LD BC,8
|
|
AND A
|
|
SBC HL,BC
|
|
LD DE,(LOCK_Y)
|
|
LD IX,SBR_BMP
|
|
LD BC,#0808
|
|
CALL SPR_256
|
|
POP IX
|
|
LD HL,(USOBJ_X)
|
|
LD DE,(USOBJ_Y)
|
|
LD BC,8
|
|
EXX
|
|
LD BC,8
|
|
EXX
|
|
CALL SAVERG
|
|
CALL OPTIMIZ
|
|
LD L,(IX+8)
|
|
LD H,(IX+9)
|
|
INC L
|
|
CALL LCONST
|
|
CALL RESTRG
|
|
LD BC,(LOCK_CX)
|
|
ADD HL,BC
|
|
LD BC,8
|
|
AND A
|
|
SBC HL,BC
|
|
LD BC,8
|
|
EXX
|
|
LD BC,8
|
|
EXX
|
|
CALL OPTIMIZ
|
|
LD L,(IX+8)
|
|
LD H,(IX+9)
|
|
INC L
|
|
INC L
|
|
CALL LCONST
|
|
AND A
|
|
RET
|
|
|
|
GRP_INI LD L,(IX+0)
|
|
LD H,(IX+1)
|
|
LD E,(IX+2)
|
|
LD D,(IX+3)
|
|
LD C,(IX+4)
|
|
LD B,(IX+5)
|
|
EXX
|
|
LD C,(IX+6)
|
|
LD B,(IX+7)
|
|
EXX
|
|
JP PGROUP
|
|
|
|
PGROUP PUSH BC
|
|
LD BC,(MAIN_X)
|
|
ADD HL,BC
|
|
EX DE,HL
|
|
LD BC,(MAIN_Y)
|
|
ADD HL,BC
|
|
EX DE,HL
|
|
POP BC
|
|
LD (LOCK_X),HL
|
|
LD (LOCK_Y),DE
|
|
LD (LOCK_CX),BC
|
|
EXX
|
|
LD (LOCK_CY),BC
|
|
EXX
|
|
JP DFRAME
|
|
|
|
PSTATIC PUSH BC
|
|
LD BC,(MAIN_X)
|
|
ADD HL,BC
|
|
EX DE,HL
|
|
LD BC,(MAIN_Y)
|
|
ADD HL,BC
|
|
EX DE,HL
|
|
POP BC
|
|
LD (LOCK_X),HL
|
|
LD (LOCK_Y),DE
|
|
LD (LOCK_CX),BC
|
|
EXX
|
|
LD (LOCK_CY),BC
|
|
EXX
|
|
CALL ITEM_TX
|
|
LD B,H
|
|
LD C,L
|
|
LD HL,(LOCK_X)
|
|
INC HL
|
|
INC HL
|
|
INC HL
|
|
LD DE,(LOCK_Y)
|
|
INC DE
|
|
INC DE
|
|
LD A,(WTEXT_)
|
|
LD (BODY),A
|
|
JP PCHARX
|
|
|
|
PLIST PUSH BC
|
|
LD BC,(MAIN_X)
|
|
ADD HL,BC
|
|
EX DE,HL
|
|
LD BC,(MAIN_Y)
|
|
ADD HL,BC
|
|
EX DE,HL
|
|
POP BC
|
|
LD (LOCK_X),HL
|
|
LD (LOCK_Y),DE
|
|
LD (LOCK_CX),BC
|
|
EXX
|
|
LD (LOCK_CY),BC
|
|
EXX
|
|
LD A,(WRKSPC_)
|
|
LD (BODY),A
|
|
CALL PLACE
|
|
RET
|
|
|
|
PCHECK PUSH BC
|
|
LD BC,(MAIN_X)
|
|
ADD HL,BC
|
|
EX DE,HL
|
|
LD BC,(MAIN_Y)
|
|
ADD HL,BC
|
|
EX DE,HL
|
|
POP BC
|
|
LD (LOCK_X),HL
|
|
LD (LOCK_Y),DE
|
|
LD (LOCK_CX),BC
|
|
EXX
|
|
LD (LOCK_CY),BC
|
|
EXX
|
|
LD BC,#0707
|
|
PUSH IX
|
|
OR A
|
|
LD IX,CHE_BMP
|
|
JR Z,OFFCH2
|
|
LD IX,CHE2BMP
|
|
OFFCH2 CALL SPR_256
|
|
POP IX
|
|
CALL ITEM_TX
|
|
PUSH HL
|
|
LD HL,(LOCK_X)
|
|
LD BC,12
|
|
ADD HL,BC
|
|
LD DE,(LOCK_Y)
|
|
LD A,(WTEXT_)
|
|
LD (BODY),A
|
|
POP BC
|
|
JP PCHARX
|
|
|
|
RDBUTT PUSH BC
|
|
LD BC,(MAIN_X)
|
|
ADD HL,BC
|
|
EX DE,HL
|
|
LD BC,(MAIN_Y)
|
|
ADD HL,BC
|
|
EX DE,HL
|
|
POP BC
|
|
LD (LOCK_X),HL
|
|
LD (LOCK_Y),DE
|
|
LD (LOCK_CX),BC
|
|
EXX
|
|
LD (LOCK_CY),BC
|
|
EXX
|
|
LD BC,#0707
|
|
PUSH IX
|
|
OR A
|
|
LD IX,RDB_BMP
|
|
JR Z,OFFCH
|
|
LD IX,RDB2BMP
|
|
OFFCH CALL SPR_256
|
|
POP IX
|
|
CALL ITEM_TX
|
|
PUSH HL
|
|
LD HL,(LOCK_X)
|
|
LD BC,12
|
|
ADD HL,BC
|
|
LD DE,(LOCK_Y)
|
|
LD A,(WTEXT_)
|
|
LD (BODY),A
|
|
POP BC
|
|
JP PCHARX
|
|
|
|
PEDITOR PUSH BC
|
|
LD BC,(MAIN_X)
|
|
ADD HL,BC
|
|
EX DE,HL
|
|
LD BC,(MAIN_Y)
|
|
ADD HL,BC
|
|
EX DE,HL
|
|
POP BC
|
|
LD (LOCK_X),HL
|
|
LD (LOCK_Y),DE
|
|
LD (LOCK_CX),BC
|
|
EXX
|
|
LD (LOCK_CY),BC
|
|
EXX
|
|
LD A,(WRKSPC_)
|
|
LD (BODY),A
|
|
CALL PLACE
|
|
RET
|
|
|
|
PBUTTON PUSH BC
|
|
LD BC,(MAIN_X)
|
|
ADD HL,BC
|
|
EX DE,HL
|
|
LD BC,(MAIN_Y)
|
|
ADD HL,BC
|
|
EX DE,HL
|
|
POP BC
|
|
LD (LOCK_X),HL
|
|
LD (LOCK_Y),DE
|
|
LD (LOCK_CX),BC
|
|
EXX
|
|
LD (LOCK_CY),BC
|
|
EXX
|
|
LD A,(BUTTON_)
|
|
LD (BODY),A
|
|
CALL PLANE
|
|
CALL ITEM_TX
|
|
EX DE,HL
|
|
LD A,(DE)
|
|
INC A
|
|
JP Z,BSPRITE
|
|
PUSH DE
|
|
CALL LENSTR
|
|
LD HL,(LOCK_CX)
|
|
AND A
|
|
SBC HL,BC
|
|
SRL H
|
|
RR L
|
|
LD DE,(LOCK_X)
|
|
ADD HL,DE
|
|
EX DE,HL
|
|
LD HL,(LOCK_CY)
|
|
LD BC,6
|
|
AND A
|
|
SBC HL,BC
|
|
SRL H
|
|
RR L
|
|
LD BC,(LOCK_Y)
|
|
ADD HL,BC
|
|
EX DE,HL
|
|
POP BC
|
|
LD A,(BTEXT_)
|
|
LD (BODY),A
|
|
JP PCHARX
|
|
|
|
BSPRITE INC DE
|
|
LD A,(DE)
|
|
BSPRADR LD HL,#C000
|
|
LD BC,0
|
|
BSPR1 ADD HL,BC
|
|
LD C,(HL)
|
|
INC HL
|
|
LD B,(HL)
|
|
DEC HL
|
|
DEC A
|
|
JP NZ,BSPR1
|
|
INC HL
|
|
INC HL
|
|
LD C,(HL)
|
|
INC HL
|
|
LD B,(HL)
|
|
INC HL
|
|
LD A,C
|
|
PUSH IX
|
|
PUSH HL
|
|
LD HL,(LOCK_CX)
|
|
AND A
|
|
SBC HL,BC
|
|
SRL H
|
|
RR L
|
|
LD DE,(LOCK_X)
|
|
ADD HL,DE
|
|
EX DE,HL
|
|
POP HL
|
|
LD C,(HL)
|
|
INC HL
|
|
LD B,(HL)
|
|
INC HL
|
|
PUSH HL
|
|
LD HL,(LOCK_CY)
|
|
AND A
|
|
SBC HL,BC
|
|
SRL H
|
|
RR L
|
|
EX AF,AF'
|
|
LD A,C
|
|
LD BC,(LOCK_Y)
|
|
ADD HL,BC
|
|
EX DE,HL
|
|
POP IX
|
|
LD B,A
|
|
EX AF,AF'
|
|
LD C,A
|
|
CALL SPR_256
|
|
POP IX
|
|
AND A
|
|
RET
|
|
|
|
|
|
USOBJ_X DEFW 0
|
|
USOBJ_Y DEFW 0
|
|
|
|
|
|
SB_HGT DEFW 0 ;BAR HEIGHT
|
|
SB_LEN DEFW 0 ;LENGHT POINTER
|
|
SB_MIN DEFW 0 ;MIN VALUE
|
|
SB_MAX DEFW 12 ;MAX VALUE
|
|
SB_VAL DEFW 0 ;CURRENT VALUE
|
|
SB_ADD DEFW 1 ;NORMAL ADDER
|
|
SB_WIN DEFW 5 ;BIG ADDER
|
|
|
|
|
|
INITBAR EXX
|
|
LD HL,#FFF0
|
|
ADD HL,BC
|
|
LD (SB_HGT),HL
|
|
EXX
|
|
LD HL,(SB_MAX)
|
|
LD DE,(SB_WIN)
|
|
AND A
|
|
SBC HL,DE
|
|
JR NC,INITB1
|
|
LD (SB_MAX),DE
|
|
INITB1 LD HL,(SB_HGT)
|
|
CALL MUL
|
|
LD DE,(SB_MAX)
|
|
CALL DIV
|
|
LD (SB_LEN),HL
|
|
RET
|
|
|
|
INITBAH LD HL,#FFF0
|
|
ADD HL,BC
|
|
LD (SB_HGT),HL
|
|
LD HL,(SB_MAX)
|
|
LD DE,(SB_WIN)
|
|
AND A
|
|
SBC HL,DE
|
|
JR NC,INITB1H
|
|
LD (SB_MAX),DE
|
|
INITB1H LD HL,(SB_HGT)
|
|
CALL MUL
|
|
LD DE,(SB_MAX)
|
|
CALL DIV
|
|
LD (SB_LEN),HL
|
|
RET
|
|
|
|
;SCROLL CALL SAVERG
|
|
; CALL INITBAR
|
|
; CALL RESTRG
|
|
PSCROLL PUSH BC
|
|
LD BC,(MAIN_X)
|
|
ADD HL,BC
|
|
EX DE,HL
|
|
LD BC,(MAIN_Y)
|
|
ADD HL,BC
|
|
EX DE,HL
|
|
POP BC
|
|
LD (LOCK_X),HL
|
|
LD (LOCK_Y),DE
|
|
LD (LOCK_CX),BC
|
|
EXX
|
|
LD (LOCK_CY),BC
|
|
EXX
|
|
PUSH HL
|
|
PUSH DE
|
|
LD A,(WINDOW_)
|
|
LD (BODY),A
|
|
CALL PLACE
|
|
POP DE
|
|
POP HL
|
|
PUSH IX
|
|
LD IX,(U_S_BMP)
|
|
LD BC,#0808
|
|
CALL SPR_256
|
|
LD BC,(SB_LEN)
|
|
EXX
|
|
LD DE,(SB_HGT)
|
|
LD HL,(SB_VAL)
|
|
CALL MUL
|
|
LD DE,(SB_MAX)
|
|
CALL DIV
|
|
LD DE,(LOCK_Y)
|
|
LD BC,8
|
|
ADD HL,BC
|
|
ADD HL,DE
|
|
EX DE,HL
|
|
LD HL,(LOCK_X)
|
|
LD BC,(LOCK_CX)
|
|
CALL PLANE
|
|
LD HL,(LOCK_Y)
|
|
LD BC,(LOCK_CY)
|
|
ADD HL,BC
|
|
LD BC,8
|
|
AND A
|
|
SBC HL,BC
|
|
EX DE,HL
|
|
LD HL,(LOCK_X)
|
|
LD IX,(D_S_BMP)
|
|
LD BC,#0808
|
|
CALL SPR_256
|
|
POP IX
|
|
RET
|
|
|
|
PSCROLH PUSH BC
|
|
LD BC,(MAIN_X)
|
|
ADD HL,BC
|
|
EX DE,HL
|
|
LD BC,(MAIN_Y)
|
|
ADD HL,BC
|
|
EX DE,HL
|
|
POP BC
|
|
LD (LOCK_X),HL
|
|
LD (LOCK_Y),DE
|
|
LD (LOCK_CX),BC
|
|
EXX
|
|
LD (LOCK_CY),BC
|
|
EXX
|
|
PUSH HL
|
|
PUSH DE
|
|
LD A,(WINDOW_)
|
|
LD (BODY),A
|
|
CALL PLACE
|
|
POP DE
|
|
POP HL
|
|
PUSH IX
|
|
LD IX,(U_S_BMP)
|
|
LD BC,#0808
|
|
CALL SPR_256
|
|
LD BC,(LOCK_CY)
|
|
EXX
|
|
LD DE,(SB_HGT)
|
|
LD HL,(SB_VAL)
|
|
CALL MUL
|
|
LD DE,(SB_MAX)
|
|
CALL DIV
|
|
LD DE,(LOCK_X)
|
|
LD BC,8
|
|
ADD HL,BC
|
|
ADD HL,DE
|
|
LD DE,(LOCK_Y)
|
|
LD BC,(SB_LEN)
|
|
CALL PLANE
|
|
LD HL,(LOCK_X)
|
|
LD BC,(LOCK_CX)
|
|
ADD HL,BC
|
|
LD BC,8
|
|
AND A
|
|
SBC HL,BC
|
|
LD DE,(LOCK_Y)
|
|
LD IX,(D_S_BMP)
|
|
LD BC,#0808
|
|
CALL SPR_256
|
|
POP IX
|
|
RET
|
|
|
|
SBV_WRK LD L,(IX+0)
|
|
LD H,(IX+1)
|
|
LD E,(IX+2)
|
|
LD D,(IX+3)
|
|
LD C,(IX+4)
|
|
LD B,(IX+5)
|
|
EXX
|
|
LD C,(IX+6)
|
|
LD B,(IX+7)
|
|
EXX
|
|
OR A
|
|
JP Z,PBARINI
|
|
DEC A
|
|
JP Z,PBARUP
|
|
EXX
|
|
LD HL,SBU_BMP
|
|
LD (U_S_BMP),HL
|
|
LD HL,SBD_BMA
|
|
LD (D_S_BMP),HL
|
|
EXX
|
|
JP PSCROLL
|
|
|
|
PBARUP EXX
|
|
LD HL,SBU_BMA
|
|
LD (U_S_BMP),HL
|
|
LD HL,SBD_BMP
|
|
LD (D_S_BMP),HL
|
|
EXX
|
|
JP PSCROLL
|
|
|
|
PBARINI EXX
|
|
LD HL,SBU_BMP
|
|
LD (U_S_BMP),HL
|
|
LD HL,SBD_BMP
|
|
LD (D_S_BMP),HL
|
|
EXX
|
|
CALL SAVERG
|
|
CALL INITBAR
|
|
CALL RESTRG
|
|
JP PSCROLL
|
|
|
|
SBH_WRK LD L,(IX+0)
|
|
LD H,(IX+1)
|
|
LD E,(IX+2)
|
|
LD D,(IX+3)
|
|
LD C,(IX+4)
|
|
LD B,(IX+5)
|
|
EXX
|
|
LD C,(IX+6)
|
|
LD B,(IX+7)
|
|
EXX
|
|
OR A
|
|
JP Z,PBAHINI
|
|
DEC A
|
|
JP Z,PBAHUP
|
|
EXX
|
|
LD HL,SBL_BMP
|
|
LD (U_S_BMP),HL
|
|
LD HL,SBR_BMA
|
|
LD (D_S_BMP),HL
|
|
EXX
|
|
JP PSCROLH
|
|
|
|
PBAHUP EXX
|
|
LD HL,SBL_BMA
|
|
LD (U_S_BMP),HL
|
|
LD HL,SBR_BMP
|
|
LD (D_S_BMP),HL
|
|
EXX
|
|
JP PSCROLH
|
|
|
|
PBAHINI EXX
|
|
LD HL,SBL_BMP
|
|
LD (U_S_BMP),HL
|
|
LD HL,SBR_BMP
|
|
LD (D_S_BMP),HL
|
|
EXX
|
|
CALL SAVERG
|
|
CALL INITBAH
|
|
CALL RESTRG
|
|
JP PSCROLH
|
|
|
|
|
|
U_S_BMP DEFW SBU_BMP
|
|
D_S_BMP DEFW SBD_BMP
|
|
|
|
;Input Parameters HL/DE
|
|
;Output Result in HL,Octatok in BC
|
|
DIV LD A,H
|
|
LD C,L
|
|
LD HL,#0000
|
|
LD B,#10
|
|
trial1 RL C
|
|
RLA
|
|
ADC HL,HL
|
|
SBC HL,DE
|
|
CCF
|
|
JR NC,ngv1
|
|
ptv1 DJNZ trial1
|
|
PUSH HL
|
|
RL C
|
|
RLA
|
|
ADD HL,HL
|
|
AND A
|
|
SBC HL,DE
|
|
CCF
|
|
LD H,A
|
|
LD L,C
|
|
LD BC,0
|
|
ADC HL,BC
|
|
POP BC
|
|
RET
|
|
|
|
restr1 RL C
|
|
RLA
|
|
ADC HL,HL
|
|
ADD HL,DE
|
|
JR C,ptv1
|
|
ngv1 DJNZ restr1
|
|
RL C
|
|
RLA
|
|
ADD HL,DE
|
|
PUSH HL
|
|
ADD HL,HL
|
|
AND A
|
|
SBC HL,DE
|
|
CCF
|
|
LD H,A
|
|
LD L,C
|
|
LD BC,0
|
|
ADC HL,BC
|
|
POP BC
|
|
RET
|
|
|
|
MUL PUSH HL ;HL*DE--HL
|
|
XOR A
|
|
OR D
|
|
JR Z,MULENT
|
|
EX DE,HL
|
|
XOR A
|
|
OR D
|
|
JR Z,MULENT
|
|
SCF
|
|
POP HL
|
|
RET
|
|
|
|
MULENT LD A,E
|
|
LD E,0
|
|
LD D,E
|
|
JR MMULB2
|
|
MMULB1 ADD HL,HL
|
|
JR C,ENDMUL
|
|
MMULB2 OR A
|
|
JR Z,ENDMUL
|
|
RRA
|
|
JR NC,MMULB1
|
|
EX DE,HL
|
|
ADD HL,DE
|
|
EX DE,HL
|
|
JR MMULB1
|
|
ENDMUL POP HL
|
|
EX DE,HL
|
|
RET
|
|
|
|
ITEM_TX LD D,XH
|
|
LD E,XL
|
|
LD HL,11
|
|
ADD HL,DE
|
|
RET
|
|
|
|
ITEM_NX LD D,XH
|
|
LD E,XL
|
|
LD HL,11
|
|
ADD HL,DE
|
|
LD BC,#0100
|
|
LD A,C
|
|
CPIR
|
|
EX DE,HL
|
|
LD XH,D
|
|
LD XL,E
|
|
RET
|
|
|
|
|