2D-Studio/INTERFACE/DLG.ASM
2025-07-11 00:23:19 +10:00

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