mirror of
https://github.com/Tolik-Trek/2D-Studio.git
synced 2026-06-15 01:21:33 +03:00
1431 lines
18 KiB
NASM
1431 lines
18 KiB
NASM
|
|
YSW EQU 3*8
|
|
LDFILE
|
|
CALL RD_DIR
|
|
|
|
LD HL,(FILES)
|
|
CALL SBMAX ;MAX VALUE
|
|
LD HL,16
|
|
CALL SBWIN ;BIG ADDER
|
|
LD HL,0
|
|
CALL SBVAL ;CURRENT VALUE
|
|
CALL SETNWIN
|
|
LD IX,OPNFDLG
|
|
LD HL,USErini
|
|
CALL DLGinit
|
|
AGAIN CALL WAITMSG
|
|
CALL USErwrk
|
|
JP AGAIN
|
|
|
|
USErini LD A,H
|
|
CP #14
|
|
JP Z,FILEBX
|
|
CP #16
|
|
JP Z,SBARIN
|
|
LD A,2
|
|
SCF
|
|
RET
|
|
|
|
|
|
SVFILE CALL RD_DIR
|
|
LD HL,(FILES)
|
|
CALL SBMAX ;MAX VALUE
|
|
LD HL,16
|
|
CALL SBWIN ;BIG ADDER
|
|
LD HL,0
|
|
CALL SBVAL ;CURRENT VALUE
|
|
CALL SETNWIN
|
|
LD IX,SAVFDLG
|
|
LD HL,USErini
|
|
CALL DLGinit
|
|
AGAINS CALL WAITMSG
|
|
CALL USEswrk
|
|
JP AGAINS
|
|
|
|
FILEBX LD (SAVEIX),IX
|
|
CALL LST_INI
|
|
CALL PUTDIR
|
|
XOR A
|
|
RET
|
|
|
|
POSS_Y DW 0
|
|
POSS_X DW 0
|
|
|
|
PUTDIR LD HL,126
|
|
LD DE,68+YSW
|
|
INC HL
|
|
INC DE
|
|
LD (POSS_Y),DE
|
|
LD (POSS_X),HL
|
|
CALL RSBVAL ;!
|
|
LD B,H ;!
|
|
LD C,L ;!
|
|
LD HL,#C000
|
|
LD DE,#0020
|
|
; LD BC,(SB_VAL)
|
|
INC BC
|
|
AND A
|
|
SBC HL,DE
|
|
SKIDRR ADD HL,DE
|
|
DEC BC
|
|
LD A,B
|
|
OR C
|
|
JP NZ,SKIDRR
|
|
LD B,16
|
|
PUTDIR1 PUSH BC
|
|
CALL GETH
|
|
JP C,EGET
|
|
PUSH HL
|
|
LD HL,(POSS_X)
|
|
LD DE,(POSS_Y)
|
|
; LD A,(WTEXT_)
|
|
LD A,#F0
|
|
CALL SBODY
|
|
EXX
|
|
LD HL,EXTITEM+2
|
|
LD DE,EXTITEM+3
|
|
LDD
|
|
LDD
|
|
LDD
|
|
XOR A
|
|
LD (DE),A
|
|
EXX
|
|
XOR A
|
|
LD (EXTITEM+4),A
|
|
LD BC,DIRITEM
|
|
CALL PCHARX
|
|
LD HL,(POSS_X)
|
|
LD DE,56
|
|
ADD HL,DE
|
|
LD DE,(POSS_Y)
|
|
LD BC,EXTITEM+1
|
|
CALL PCHARX
|
|
LD HL,(POSS_Y)
|
|
LD BC,8
|
|
ADD HL,BC
|
|
LD (POSS_Y),HL
|
|
POP HL
|
|
POP BC
|
|
DJNZ PUTDIR1
|
|
RET
|
|
|
|
EGET POP BC
|
|
RET
|
|
|
|
ADI LD BC,#0020
|
|
ADD HL,BC
|
|
JP GETH1
|
|
|
|
GETH IN A,(#E2)
|
|
PUSH AF
|
|
LD A,(DIRPAGE)
|
|
OUT (#E2),A
|
|
GETH1 LD A,(HL)
|
|
OR A
|
|
JP Z,EDI
|
|
CP #E5
|
|
JP Z,ADI
|
|
LD DE,DIRITEM
|
|
LD BC,#0020
|
|
LDIR
|
|
POP AF
|
|
OUT (#E2),A
|
|
AND A
|
|
RET
|
|
|
|
EDI POP AF
|
|
OUT (#E2),A
|
|
SCF
|
|
RET
|
|
|
|
DIRITEM DB " "
|
|
EXTITEM DB " "
|
|
DW 0,0,0,0,0,0,0,0
|
|
|
|
SBARIN LD A,L
|
|
CP 1
|
|
JR Z,ITSBR
|
|
XOR A
|
|
RET
|
|
|
|
ITSBR LD (SAVEIX2),IX
|
|
LD A,2
|
|
SCF
|
|
RET
|
|
|
|
LOADF
|
|
LD C,3
|
|
CALL INTMOUS
|
|
EX DE,HL
|
|
LD DE,68+YSW
|
|
AND A
|
|
SBC HL,DE
|
|
SRL H
|
|
RR L
|
|
SRL H
|
|
RR L
|
|
SRL H
|
|
RR L
|
|
EX DE,HL ;!
|
|
CALL RSBVAL ;!
|
|
; LD DE,(SB_VAL)
|
|
ADD HL,DE
|
|
LD A,L
|
|
OR A
|
|
LD HL,#C000
|
|
JR Z,LF2
|
|
LD B,A
|
|
LD DE,#0020
|
|
LF1 ADD HL,DE
|
|
DJNZ LF1
|
|
LF2 CALL GETH
|
|
LD A,0
|
|
RET C
|
|
;;;;;;;;
|
|
;
|
|
; LD HL,DIRITEM
|
|
; CALL DEBUG
|
|
;
|
|
;;;;;;;;
|
|
LD A,(DIRITEM+11)
|
|
AND #10
|
|
JP NZ,REDIR
|
|
CALL RD_FILE
|
|
CALL CONVERT
|
|
POP HL
|
|
RET
|
|
|
|
;DEBUG
|
|
; LD B,H
|
|
; LD C,L
|
|
; LD HL,5
|
|
; LD DE,5
|
|
; CALL PCHARX
|
|
; RET
|
|
|
|
REDIR
|
|
LD HL,DIRITEM
|
|
CALL CH_DIR
|
|
LD HL,(FILES)
|
|
CALL SBMAX ;MAX VALUE
|
|
LD HL,0
|
|
CALL SBVAL ;CURRENT VALUE
|
|
LD IX,(SAVEIX)
|
|
CALL LST_CLR
|
|
LD IX,(SAVEIX2)
|
|
LD A,0
|
|
CALL SBV_WRK
|
|
CALL PUTDIR
|
|
XOR A
|
|
RET
|
|
|
|
SAVEF LD C,3
|
|
CALL INTMOUS
|
|
EX DE,HL
|
|
LD DE,68+YSW
|
|
AND A
|
|
SBC HL,DE
|
|
SRL H
|
|
RR L
|
|
SRL H
|
|
RR L
|
|
SRL H
|
|
RR L
|
|
EX DE,HL ;!
|
|
CALL RSBVAL ;!
|
|
; LD DE,(SB_VAL)
|
|
ADD HL,DE
|
|
LD A,L
|
|
OR A
|
|
LD HL,#C000
|
|
JR Z,SF2
|
|
LD B,A
|
|
LD DE,#0020
|
|
SF1 ADD HL,DE
|
|
DJNZ SF1
|
|
SF2 CALL GETH
|
|
LD A,0
|
|
RET C
|
|
LD A,(DIRITEM+11)
|
|
AND #10
|
|
JP NZ,REDIR
|
|
CALL MAKEBMP
|
|
CALL SV_FILE
|
|
POP HL
|
|
RET
|
|
|
|
USEswrk CP 3
|
|
JP Z,PUS2_
|
|
CP 4
|
|
JP Z,UNPS_SV
|
|
CP 5
|
|
JP Z,DRAG2_
|
|
CP 6
|
|
JP Z,DROP2_
|
|
LD A,1
|
|
RET
|
|
|
|
UNPS_SV LD A,H
|
|
CP #11
|
|
JP Z,UP_BT21
|
|
CP #14
|
|
JP Z,SVFI
|
|
CP #16
|
|
JP Z,UPBARRS
|
|
LD A,2
|
|
RET
|
|
|
|
|
|
SVFI LD A,L
|
|
CP 1
|
|
JP Z,SAVEF
|
|
LD A,3
|
|
RET
|
|
|
|
UP_BT21 LD A,L
|
|
CP 1
|
|
JP Z,UP_BT31
|
|
CP 2
|
|
JP Z,UP_BT32
|
|
LD A,3
|
|
RET
|
|
|
|
|
|
UP_BT31 CALL POPBOT
|
|
POP HL
|
|
XOR A
|
|
RET
|
|
|
|
UP_BT32 CALL POPBOT
|
|
POP HL
|
|
XOR A
|
|
RET
|
|
|
|
USErwrk CP 3
|
|
JP Z,PUS2_
|
|
CP 4
|
|
JP Z,UNPUS2_
|
|
CP 5
|
|
JP Z,DRAG2_
|
|
CP 6
|
|
JP Z,DROP2_
|
|
LD A,1
|
|
RET
|
|
|
|
DROP2_ LD A,H
|
|
CP #11
|
|
JP Z,DROP2
|
|
LD A,2
|
|
RET
|
|
|
|
DRAG2_ LD A,H
|
|
CP #11
|
|
JP Z,DRAG2
|
|
LD A,2
|
|
RET
|
|
|
|
PUS2_ LD A,H
|
|
CP #11
|
|
JP Z,PBUTT2
|
|
CP #12
|
|
JP Z,EDBXX2
|
|
CP #16
|
|
JP Z,SSBBAR
|
|
LD A,2
|
|
RET
|
|
|
|
EDBXX2 LD A,L
|
|
CP 1
|
|
JP Z,EDBXX1
|
|
LD A,3
|
|
RET
|
|
|
|
EDBXX1 LD IX,OPNFDLG
|
|
CALL GETPARM
|
|
LD IX,SYSTEM1
|
|
CALL EDITBOX
|
|
XOR A
|
|
RET
|
|
|
|
SSBBAR LD A,L
|
|
CP 2
|
|
JP Z,SBAR1
|
|
CP 3
|
|
JP Z,SBAR2
|
|
LD A,3
|
|
RET
|
|
|
|
SBAR1 CALL PUSHBOT
|
|
SBB2 ;D HL,(SB_VAL)
|
|
CALL RSBVAL ;!
|
|
LD A,L
|
|
OR H
|
|
RET Z
|
|
DEC HL
|
|
CALL SBVAL ;!
|
|
; LD (SB_VAL),HL
|
|
LD IX,(SAVEIX)
|
|
CALL LST_CLR
|
|
LD IX,(SAVEIX2)
|
|
LD A,1
|
|
CALL SBV_WRK
|
|
CALL PUTDIR
|
|
LD C,3
|
|
CALL INTMOUS
|
|
CP 1
|
|
JP Z,SBB2
|
|
XOR A
|
|
RET
|
|
|
|
SBAR2 CALL PUSHBOT
|
|
SBB1 CALL RSBVAL ;!
|
|
EX DE,HL ;!
|
|
INC DE
|
|
CALL RSBWIN ;!
|
|
LD B,H ;!
|
|
LD C,L ;!
|
|
CALL RSBMAX
|
|
; LD HL,(SB_MAX)
|
|
; LD BC,(SB_WIN)
|
|
AND A
|
|
SBC HL,BC
|
|
AND A
|
|
SBC HL,DE
|
|
LD A,0
|
|
RET C
|
|
EX DE,HL
|
|
CALL SBVAL
|
|
; LD (SB_VAL),HL
|
|
SBAR0 LD IX,(SAVEIX)
|
|
CALL LST_CLR
|
|
LD IX,(SAVEIX2)
|
|
LD A,2
|
|
CALL SBV_WRK
|
|
CALL PUTDIR
|
|
LD C,3
|
|
CALL INTMOUS
|
|
CP 1
|
|
JP Z,SBB1
|
|
XOR A
|
|
RET
|
|
|
|
UPBARRS LD A,L
|
|
CP 2
|
|
JP Z,UPBAR1
|
|
CP 3
|
|
JP Z,UPBAR2
|
|
LD A,3
|
|
RET
|
|
UPBAR2
|
|
UPBAR1 CALL POPBOT
|
|
XOR A
|
|
RET
|
|
|
|
SAVEIX DW IX1
|
|
SAVEIX2 DW IX2
|
|
|
|
UNPUS2_ LD A,H
|
|
CP #11
|
|
JP Z,UPBUT21
|
|
CP #14
|
|
JP Z,LDFI
|
|
CP #16
|
|
JP Z,UPBARRS
|
|
LD A,2
|
|
RET
|
|
|
|
PBUTT2 LD A,L
|
|
CP 1
|
|
JP Z,PBUTT1A
|
|
CP 2
|
|
JP Z,PBUTT2A
|
|
LD A,3
|
|
RET
|
|
|
|
LDFI LD A,L
|
|
CP 1
|
|
JP Z,LOADF
|
|
LD A,3
|
|
RET
|
|
|
|
UPBUT21 LD A,L
|
|
CP 1
|
|
JP Z,UPBUT31
|
|
CP 2
|
|
JP Z,UPBUT32
|
|
LD A,3
|
|
RET
|
|
|
|
PBUTT1A CALL PUSHBOT
|
|
XOR A
|
|
RET
|
|
|
|
PBUTT2A CALL PUSHBOT
|
|
XOR A
|
|
RET
|
|
|
|
UPBUT31 CALL POPBOT
|
|
POP HL
|
|
XOR A
|
|
RET
|
|
|
|
UPBUT32 CALL POPBOT
|
|
POP HL
|
|
XOR A
|
|
RET
|
|
|
|
DROP2 LD A,L
|
|
CP 1
|
|
JP Z,PUSHBOT
|
|
CP 2
|
|
JP Z,PUSHBOT
|
|
LD A,3
|
|
RET
|
|
|
|
DRAG2 LD A,L
|
|
CP 1
|
|
JP Z,POPBOT
|
|
CP 2
|
|
JP Z,POPBOT
|
|
LD A,3
|
|
RET
|
|
|
|
PUSHBOT LD IX,OPNFDLG
|
|
CALL GETPARM
|
|
JP BPUSH
|
|
|
|
POPBOT LD IX,OPNFDLG
|
|
CALL GETPARM
|
|
JP BPOP
|
|
|
|
SYSTEM1 DB 64,0
|
|
DS 64
|
|
|
|
OPNFDLG DW #0000 ;STYLE
|
|
DB 6 ;(7) ;NUMBER ITEMS
|
|
DW 120 ;X
|
|
DW 32+YSW ;Y
|
|
DW 96 ;CX
|
|
DW 192 ;CY
|
|
DW #0002 ;RESOURCE MENU BAR OR "0" ZERO
|
|
DB "Open",0 ;CAPTION
|
|
|
|
;CONTROL ITEM
|
|
DW 8 ;X
|
|
DW 170 ;Y
|
|
DW 40 ;CX
|
|
DW 14 ;CY
|
|
DW #1101 ;ID
|
|
DB BUTTON ;TYPE ITEM #80-BUTTON
|
|
DB "Open",0 ;TEXT FOR ITEM
|
|
|
|
DW 52 ;X
|
|
DW 170 ;Y
|
|
DW 40 ;CX
|
|
DW 14 ;CY
|
|
DW #1102 ;ID
|
|
DB BUTTON ;TYPE ITEM #80-BUTTON
|
|
DB "Cancel",0 ;TEXT FOR ITEM
|
|
|
|
; DW 5 ;X
|
|
; DW 20 ;Y
|
|
; DW 80 ;CX
|
|
; DW 12 ;CY
|
|
; DW #1201 ;ID
|
|
; DB ED_BOX ;TYPE ITEM #80-BUTTON
|
|
; DB 0 ;TEXT FOR ITEM
|
|
|
|
IX1 DW 5 ;X
|
|
DW 35 ;Y
|
|
DW 88 ;CX
|
|
DW 130 ;CY
|
|
DW #1401 ;ID
|
|
DB LISTX ;TYPE ITEM #80-BUTTON
|
|
DB #00 ;ARRAY
|
|
|
|
IX2 DW 93-9 ;X
|
|
DW 36 ;Y
|
|
DW 8 ;CX
|
|
DW 128 ;CY
|
|
DW #1601 ;ID
|
|
DB VSBAR ;TYPE ITEM #80-BUTTON
|
|
DB #00 ;ARRAY
|
|
|
|
DW 93-9 ;X
|
|
DW 36 ;Y
|
|
DW 8 ;CX
|
|
DW 8 ;CY
|
|
DW #1602 ;ID
|
|
DB BUTTON ;TYPE ITEM #80-BUTTON
|
|
DB 0 ;TEXT FOR ITEM
|
|
|
|
DW 93-9 ;X
|
|
DW 36+128-8 ;Y
|
|
DW 8 ;CX
|
|
DW 8 ;CY
|
|
DW #1603 ;ID
|
|
DB BUTTON ;TYPE ITEM #80-BUTTON
|
|
DB 0 ;TEXT FOR ITEM
|
|
|
|
|
|
SAVFDLG DW #0000 ;STYLE
|
|
DB 6 ;(7) ;NUMBER ITEMS
|
|
DW 120 ;X
|
|
DW 32+YSW ;Y
|
|
DW 96 ;CX
|
|
DW 192 ;CY
|
|
DW #0003 ;RESOURCE MENU BAR OR "0" ZERO
|
|
DB "Save as",0 ;CAPTION
|
|
|
|
;CONTROL ITEM
|
|
DW 8 ;X
|
|
DW 170 ;Y
|
|
DW 40 ;CX
|
|
DW 14 ;CY
|
|
DW #1101 ;ID
|
|
DB BUTTON ;TYPE ITEM #80-BUTTON
|
|
DB "Save",0 ;TEXT FOR ITEM
|
|
|
|
DW 52 ;X
|
|
DW 170 ;Y
|
|
DW 40 ;CX
|
|
DW 14 ;CY
|
|
DW #1102 ;ID
|
|
DB BUTTON ;TYPE ITEM #80-BUTTON
|
|
DB "Cancel",0 ;TEXT FOR ITEM
|
|
|
|
; DW 5 ;X
|
|
; DW 20 ;Y
|
|
; DW 80 ;CX
|
|
; DW 12 ;CY
|
|
; DW #1201 ;ID
|
|
; DB ED_BOX ;TYPE ITEM #80-BUTTON
|
|
; DB 0 ;TEXT FOR ITEM
|
|
|
|
IX12 DW 5 ;X
|
|
DW 35 ;Y
|
|
DW 88 ;CX
|
|
DW 130 ;CY
|
|
DW #1401 ;ID
|
|
DB LISTX ;TYPE ITEM #80-BUTTON
|
|
DB #00 ;ARRAY
|
|
|
|
IX22 DW 93-9 ;X
|
|
DW 36 ;Y
|
|
DW 8 ;CX
|
|
DW 128 ;CY
|
|
DW #1601 ;ID
|
|
DB VSBAR ;TYPE ITEM #80-BUTTON
|
|
DB #00 ;ARRAY
|
|
|
|
DW 93-9 ;X
|
|
DW 36 ;Y
|
|
DW 8 ;CX
|
|
DW 8 ;CY
|
|
DW #1602 ;ID
|
|
DB BUTTON ;TYPE ITEM #80-BUTTON
|
|
DB 0 ;TEXT FOR ITEM
|
|
|
|
DW 93-9 ;X
|
|
DW 36+128-8 ;Y
|
|
DW 8 ;CX
|
|
DW 8 ;CY
|
|
DW #1603 ;ID
|
|
DB BUTTON ;TYPE ITEM #80-BUTTON
|
|
DB 0 ;TEXT FOR ITEM
|
|
|
|
;----------------------------------------
|
|
AREApix EQU #C000
|
|
CONVERT DI
|
|
LD C,#93
|
|
LD A,#0E
|
|
RST 8 ;CLEAR "S"
|
|
; LD C,#93
|
|
; LD A,#0D
|
|
; RST 8 ;CLEAR "R"
|
|
;; LD BC,#0592
|
|
;; LD A,#0E
|
|
;; RST 8 ;CREATE "S"
|
|
; LD BC,#0592
|
|
; LD A,#0D
|
|
; RST 8 ;CREATE "R"
|
|
LD BC,#0094
|
|
LD HL,FLEPAGE
|
|
SL2PAGE LD A,#0D
|
|
PUSH HL
|
|
PUSH BC
|
|
RST 8 ;GET PAGES
|
|
POP BC
|
|
POP HL
|
|
LD (HL),A
|
|
INC A
|
|
JR Z,EDP001
|
|
INC HL
|
|
INC B
|
|
LD A,#81
|
|
CP B
|
|
JP NZ,SL2PAGE
|
|
EDP001 LD C,#92
|
|
LD A,#0E
|
|
RST 8 ;CREATE "S"
|
|
LD BC,#0094
|
|
LD HL,PIXPAGE
|
|
SL3PAGE LD A,#0E
|
|
PUSH HL
|
|
PUSH BC
|
|
RST 8 ;GET PAGES
|
|
POP BC
|
|
POP HL
|
|
LD (HL),A
|
|
INC A
|
|
JR Z,EDP002
|
|
INC HL
|
|
INC B
|
|
LD A,#81
|
|
CP B
|
|
JP NZ,SL3PAGE
|
|
EDP002 CALL TURNBMP
|
|
LD HL,NEWPAL
|
|
LD DE,#0000 ;! EE (00) AMOUNT COLORS
|
|
LD BC,#FFA4
|
|
LD A,1 ;PALETTE FOR MODE 8(!)
|
|
RST 8 ;SET PALETTE
|
|
EI
|
|
AND A
|
|
RET
|
|
|
|
FLEBANK DB #00
|
|
|
|
pixBANK DB #00
|
|
|
|
FLEPAGE DS #80
|
|
|
|
;PIXPAGE DS #80
|
|
|
|
pixOPEN XOR A
|
|
PUSH BC
|
|
PUSH HL
|
|
LD (pixBANK),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
|
|
|
|
pixNEXT PUSH BC
|
|
PUSH HL
|
|
LD A,(pixBANK)
|
|
INC A
|
|
LD (pixBANK),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
|
|
SET 7,H
|
|
SET 6,H
|
|
RET
|
|
|
|
pixPREV PUSH BC
|
|
PUSH HL
|
|
LD A,(pixBANK)
|
|
DEC A
|
|
LD (pixBANK),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
|
|
SET 7,H
|
|
SET 6,H
|
|
RET
|
|
|
|
pixCURR PUSH BC
|
|
PUSH HL
|
|
LD A,(pixBANK)
|
|
LD C,A
|
|
LD B,0
|
|
LD HL,PIXPAGE
|
|
ADD HL,BC
|
|
LD A,(HL)
|
|
OUT (PAGE3),A
|
|
POP HL
|
|
POP BC
|
|
RET
|
|
|
|
FLEOPEN XOR A
|
|
PUSH BC
|
|
PUSH HL
|
|
LD (FLEBANK),A
|
|
LD C,A
|
|
LD B,0
|
|
IN A,(PAGE3)
|
|
LD (retBANK+1),A
|
|
LD HL,FLEPAGE
|
|
ADD HL,BC
|
|
LD A,(HL)
|
|
OUT (PAGE3),A
|
|
POP HL
|
|
POP BC
|
|
RET
|
|
|
|
FLENEXT PUSH BC
|
|
PUSH HL
|
|
LD A,(FLEBANK)
|
|
INC A
|
|
LD (FLEBANK),A
|
|
LD C,A
|
|
LD B,0
|
|
LD HL,FLEPAGE
|
|
ADD HL,BC
|
|
LD A,(HL)
|
|
OUT (PAGE3),A
|
|
POP HL
|
|
POP BC
|
|
LD A,XH
|
|
OR #C0
|
|
LD XH,A
|
|
SET 7,H
|
|
SET 6,H
|
|
RET
|
|
|
|
FLEPREV PUSH BC
|
|
PUSH HL
|
|
LD A,(FLEBANK)
|
|
DEC A
|
|
LD (FLEBANK),A
|
|
LD C,A
|
|
LD B,0
|
|
LD HL,FLEPAGE
|
|
ADD HL,BC
|
|
LD A,(HL)
|
|
OUT (PAGE3),A
|
|
POP HL
|
|
POP BC
|
|
LD A,XH
|
|
OR #C0
|
|
LD XH,A
|
|
SET 7,H
|
|
SET 6,H
|
|
RET
|
|
|
|
FLECURR PUSH BC
|
|
PUSH HL
|
|
LD A,(FLEBANK)
|
|
LD C,A
|
|
LD B,0
|
|
LD HL,FLEPAGE
|
|
ADD HL,BC
|
|
LD A,(HL)
|
|
OUT (PAGE3),A
|
|
POP HL
|
|
POP BC
|
|
RET
|
|
|
|
retBANK LD A,#00
|
|
OUT (PAGE3),A
|
|
RET
|
|
|
|
TURNBMP LD IX,AREApix
|
|
CALL FLEOPEN
|
|
LD A,(IX+00)
|
|
CP "B"
|
|
; RET NZ
|
|
JP NZ,retBANK
|
|
LD A,(IX+01)
|
|
CP "M"
|
|
; RET NZ
|
|
JP NZ,retBANK
|
|
|
|
;HL'- IMAGE_OFFSET
|
|
;DE'- SIZE_HEADER
|
|
;BC'- HEIGHT
|
|
;BC - WIDTH
|
|
;HL -
|
|
; D - COLOR_USED
|
|
; E - BIT_COUNT
|
|
|
|
EXX
|
|
LD HL,40 ;SIZE_WINDOW 3.1 HEADER
|
|
LD E,(IX+14) ;SIZE_HEADER
|
|
LD D,(IX+15)
|
|
AND A
|
|
SBC HL,DE
|
|
JP NZ,OS2BMP
|
|
LD HL,14 ;SIZE_FILE_HEADER
|
|
ADD HL,DE
|
|
EX DE,HL
|
|
PUSH DE
|
|
LD E,(IX+02) ; SIZE FILE
|
|
LD D,(IX+03)
|
|
LD C,(IX+04)
|
|
LD B,(IX+05)
|
|
LD (FLSIZE),DE
|
|
LD (FHSIZE),BC
|
|
LD L,(IX+10) ; IMAGE OFFSET
|
|
LD H,(IX+11)
|
|
LD (OFFSET),HL
|
|
LD C,(IX+18) ;WIDTH
|
|
LD B,(IX+19)
|
|
LD (X_SIZE),BC
|
|
LD C,(IX+22) ;HEIGHT
|
|
LD B,(IX+23)
|
|
LD (Y_SIZE),BC
|
|
|
|
POP DE
|
|
LD L,(IX+10) ;IMAGE_OFFSET
|
|
LD H,(IX+11)
|
|
EXX
|
|
LD C,(IX+18) ;WIDTH
|
|
LD B,(IX+19)
|
|
; LD A,(IX+20) ;HIGH
|
|
; LD A,(IX+21)
|
|
EXX
|
|
LD C,(IX+22) ;HEIGHT
|
|
LD B,(IX+23)
|
|
; LD A,(IX+24) ;HIGH
|
|
; LD A,(IX+25)
|
|
EXX
|
|
; LD A,(IX+26) ;PLANES
|
|
; LD A,(IX+27)
|
|
LD E,(IX+28) ;BIT_COUNT
|
|
; LD A,(IX+29)
|
|
|
|
; LD A,(IX+30) ;COMPRESSION
|
|
; LD A,(IX+31)
|
|
; LD A,(IX+32)
|
|
; LD A,(IX+33)
|
|
|
|
; LD E,(IX+34) ;SIZE_IMAGE(COMPRESSION)
|
|
; LD D,(IX+35)
|
|
; LD A,(IX+36)
|
|
; LD A,(IX+37)
|
|
|
|
; LD A,(IX+38) ;X_PELS_PER_METER
|
|
; LD A,(IX+39)
|
|
; LD A,(IX+40)
|
|
; LD A,(IX+41)
|
|
|
|
; LD A,(IX+42) ;Y_PELS_PER_METER
|
|
; LD A,(IX+43)
|
|
; LD A,(IX+44)
|
|
; LD A,(IX+45)
|
|
|
|
LD D,(IX+46) ;COLOR_USED
|
|
; LD A,(IX+47)
|
|
; LD A,(IX+48)
|
|
; LD A,(IX+49)
|
|
|
|
; LD A,(IX+50) ;COLOR_IMPORTANT
|
|
; LD A,(IX+51)
|
|
; LD A,(IX+52)
|
|
; LD A,(IX+53)
|
|
PUSH IX
|
|
EXX
|
|
ADD IX,DE ;SKIP BITMAP HEADER
|
|
EXX
|
|
PUSH IX
|
|
POP HL ;HL - PALETTE (B/G/R/0)
|
|
EXX
|
|
POP IX
|
|
EX DE,HL
|
|
ADD IX,DE ;IX - OUTSET IMAGE
|
|
EXX
|
|
INC D ; D - COLOR_USED
|
|
DEC D
|
|
LD A,E ; A - BIT_COUNT
|
|
JP NZ,USCOLOR
|
|
LD D,16 ;IF COLOR_USED = 0 THEN
|
|
; CP 4 ;USED ALL COLOR
|
|
; JP Z,USCOLOR ;16 COLORS ?
|
|
LD D,0 ;(256)
|
|
CP 8
|
|
JP Z,USCOLOR ;256 COLORS ?
|
|
LD A,#04
|
|
; LD (VDI_ERR),A
|
|
SCF
|
|
RET
|
|
|
|
USCOLOR PUSH BC ;PUSH WIDTH
|
|
PUSH AF ;A - BIT_COUNT
|
|
PUSH IX
|
|
|
|
;Install File Palette
|
|
; PUSH HL
|
|
; LD E,0
|
|
; LD BC,#FFA4
|
|
; LD A,0 ;PALETTE FOR MODE 8(!)
|
|
; CALL #3D13 ;SET PALETTE
|
|
; POP HL
|
|
LD DE,NEWPAL
|
|
LD BC,256*4
|
|
LDIR
|
|
POP IX ;POP OUTSET IMAGE
|
|
POP AF
|
|
POP BC
|
|
; CP 4
|
|
; JP Z,BMP16
|
|
CP 8
|
|
JP BMP256
|
|
|
|
OS2BMP LD A,#05
|
|
; LD (VDI_ERR),A
|
|
SCF
|
|
RET
|
|
|
|
REAL256 PUSH BC
|
|
LD A,C
|
|
AND #03
|
|
JR Z,BM25602
|
|
LD A,C
|
|
AND #FC
|
|
ADD A,4
|
|
LD C,A
|
|
JR NC,BM25602
|
|
INC B
|
|
BM25602 LD (RL_SIZE),BC
|
|
POP BC
|
|
RET
|
|
|
|
RL_SIZE DW 0
|
|
|
|
;IX - IMAGE
|
|
;BC - WIDTH
|
|
;BC'- HEIGHT
|
|
|
|
BMP256 CALL REAL256
|
|
EXX
|
|
PUSH BC
|
|
EXX
|
|
LD D,XH
|
|
LD E,XL
|
|
EX DE,HL
|
|
POP DE
|
|
PUSH BC
|
|
LD BC,(RL_SIZE)
|
|
BMP256A DEC DE
|
|
LD A,D
|
|
OR E
|
|
JR Z,BMP256B
|
|
ADD HL,BC
|
|
JP NC,BMP256A
|
|
CALL FLENEXT
|
|
JP BMP256A
|
|
BMP256B CALL retBANK
|
|
CALL pixOPEN
|
|
LD DE,AREApix
|
|
BMP256C POP BC
|
|
PUSH HL
|
|
PUSH DE
|
|
CALL READST
|
|
POP DE
|
|
CALL WRITEST
|
|
POP HL
|
|
PUSH BC
|
|
LD BC,(RL_SIZE)
|
|
AND A
|
|
SBC HL,BC
|
|
BIT 6,H
|
|
CALL Z,FLEPREV
|
|
EXX
|
|
DEC BC
|
|
LD A,B
|
|
OR C
|
|
EXX
|
|
JP NZ,BMP256C
|
|
POP BC
|
|
CALL retBANK
|
|
AND A
|
|
RET
|
|
|
|
; FROM HL
|
|
|
|
READST CALL FLECURR
|
|
PUSH BC
|
|
LD D,H
|
|
LD E,L
|
|
ADD HL,BC
|
|
JP C,DOUBLE
|
|
LD H,D
|
|
LD L,E
|
|
LD DE,STBUFF
|
|
LDIR
|
|
POP BC
|
|
CALL retBANK
|
|
RET
|
|
|
|
DOUBLE 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,STBUFF
|
|
LDIR
|
|
CALL FLENEXT
|
|
POP BC
|
|
LD A,B
|
|
OR C
|
|
JR Z,ROVNO
|
|
LDIR
|
|
CALL FLEPREV
|
|
ROVNO POP BC
|
|
CALL retBANK
|
|
RET
|
|
|
|
; TO DE
|
|
|
|
WRITEST CALL pixCURR
|
|
PUSH BC
|
|
LD H,D
|
|
LD L,E
|
|
ADD HL,BC
|
|
JP C,DOUBLE2
|
|
LD HL,STBUFF
|
|
LDIR
|
|
POP BC
|
|
CALL retBANK
|
|
RET
|
|
|
|
DOUBLE2 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 HL,STBUFF
|
|
LDIR
|
|
EX DE,HL
|
|
CALL pixNEXT
|
|
EX DE,HL
|
|
POP BC
|
|
LD A,B
|
|
OR C
|
|
JR Z,ROVNO2
|
|
LDIR
|
|
ROVNO2 POP BC
|
|
CALL retBANK
|
|
RET
|
|
|
|
;---------------------------------
|
|
|
|
MAKEBMP DI
|
|
; LD C,#93
|
|
; LD A,#0E
|
|
; RST 8 ;CLEAR "S"
|
|
LD C,#93
|
|
LD A,#0D
|
|
RST 8 ;CLEAR "R"
|
|
; LD BC,#0592
|
|
; LD A,#0E
|
|
; RST 8 ;CREATE "S"
|
|
|
|
LD HL,(FLSIZE)
|
|
LD (SIZE0),HL
|
|
LD HL,(FHSIZE)
|
|
LD (SIZE1),HL
|
|
CALL MEM_CLK
|
|
|
|
; LD BC,#0592
|
|
; LD A,#0D
|
|
; RST 8 ;CREATE "R"
|
|
|
|
LD BC,#0094
|
|
LD HL,PIXPAGE
|
|
SLXPAGE LD A,#0E
|
|
PUSH HL
|
|
PUSH BC
|
|
RST 8 ;GET PAGES
|
|
POP BC
|
|
POP HL
|
|
LD (HL),A
|
|
INC HL
|
|
INC B
|
|
LD A,5
|
|
CP B
|
|
JP NZ,SLXPAGE
|
|
LD BC,#0094
|
|
LD HL,FLEPAGE
|
|
SX2PAGE LD A,#0D
|
|
PUSH HL
|
|
PUSH BC
|
|
RST 8 ;GET PAGES
|
|
POP BC
|
|
POP HL
|
|
LD (HL),A
|
|
INC HL
|
|
INC B
|
|
; LD A,5
|
|
; CP B
|
|
CP #FF
|
|
JP NZ,SX2PAGE
|
|
CALL RE_TURN
|
|
AND A
|
|
EI
|
|
RET
|
|
|
|
RE_TURN LD IX,AREApix
|
|
CALL FLEOPEN
|
|
LD A,"B"
|
|
LD (IX+00),A ; MAGIC "BM" ID
|
|
LD A,"M"
|
|
LD (IX+01),A ;
|
|
XOR A
|
|
LD DE,(FLSIZE)
|
|
LD BC,(FHSIZE)
|
|
LD (IX+02),E ; SIZE FILE
|
|
LD (IX+03),D
|
|
LD (IX+04),C
|
|
LD (IX+05),B
|
|
LD (IX+06),A ; RESERVED
|
|
LD (IX+07),A
|
|
LD (IX+08),A
|
|
LD (IX+09),A
|
|
LD HL,(OFFSET)
|
|
LD (IX+10),L ; IMAGE OFFSET
|
|
LD (IX+11),H
|
|
LD (IX+12),A
|
|
LD (IX+13),A
|
|
LD DE,40 ;SIZE_WINDOW 3.1 HEADER
|
|
LD (IX+14),E ;SIZE_HEADER
|
|
LD (IX+15),D
|
|
LD (IX+16),A
|
|
LD (IX+17),A
|
|
LD BC,(X_SIZE)
|
|
PUSH BC
|
|
LD (IX+18),C ;WIDTH
|
|
LD (IX+19),B
|
|
LD (IX+20),A ;HIGH
|
|
LD (IX+21),A
|
|
LD BC,(Y_SIZE)
|
|
PUSH BC
|
|
LD (IX+22),C ;HEIGHT
|
|
LD (IX+23),B
|
|
LD (IX+24),A ;HIGH
|
|
LD (IX+25),A
|
|
LD DE,1
|
|
LD (IX+26),E ;PLANES
|
|
LD (IX+27),D
|
|
LD DE,8
|
|
LD (IX+28),E ;BIT_COUNT
|
|
LD (IX+29),D
|
|
|
|
LD (IX+30),A ;COMPRESSION
|
|
LD (IX+31),A
|
|
LD (IX+32),A
|
|
LD (IX+33),A
|
|
|
|
LD (IX+34),A ;SIZE_IMAGE(COMPRESSION)
|
|
LD (IX+35),A
|
|
LD (IX+36),A
|
|
LD (IX+37),A
|
|
|
|
LD (IX+38),A ;X_PELS_PER_METER
|
|
LD (IX+39),A
|
|
LD (IX+40),A
|
|
LD (IX+41),A
|
|
|
|
LD (IX+42),A ;Y_PELS_PER_METER
|
|
LD (IX+43),A
|
|
LD (IX+44),A
|
|
LD (IX+45),A
|
|
LD DE,0
|
|
LD (IX+46),E ;COLOR_USED
|
|
LD (IX+47),D
|
|
LD (IX+48),A
|
|
LD (IX+49),A
|
|
|
|
LD (IX+50),A ;COLOR_IMPORTANT
|
|
LD (IX+51),A
|
|
LD (IX+52),A
|
|
LD (IX+53),A
|
|
LD D,XH
|
|
LD E,XL
|
|
LD HL,54
|
|
ADD HL,DE
|
|
EX DE,HL
|
|
LD HL,NEWPAL
|
|
LD BC,1024
|
|
LDIR
|
|
EXX
|
|
POP BC
|
|
EXX
|
|
POP BC
|
|
|
|
;DE - IMAGE PLACE
|
|
;BC - WIDTH
|
|
;BC'- HEIGHT
|
|
|
|
CALL REAL256
|
|
EXX
|
|
PUSH BC
|
|
LD HL,STBUFF
|
|
LD DE,STBUFF+1
|
|
LD BC,(RL_SIZE)
|
|
LD (HL),0
|
|
LDIR
|
|
POP BC
|
|
PUSH BC
|
|
EXX
|
|
EX DE,HL
|
|
POP DE
|
|
PUSH HL
|
|
CALL retBANK
|
|
CALL pixOPEN
|
|
LD HL,AREApix
|
|
BMP256Z DEC DE
|
|
LD A,D
|
|
OR E
|
|
JR Z,BMP256Y
|
|
ADD HL,BC
|
|
JP NC,BMP256Z
|
|
CALL pixNEXT
|
|
JP BMP256Z
|
|
BMP256Y CALL retBANK
|
|
CALL FLEOPEN
|
|
POP DE
|
|
BMP256X PUSH BC
|
|
PUSH HL
|
|
PUSH DE
|
|
CALL READS2
|
|
POP DE
|
|
LD BC,(RL_SIZE)
|
|
CALL WRITES2
|
|
POP HL
|
|
POP BC
|
|
AND A
|
|
SBC HL,BC
|
|
BIT 6,H
|
|
CALL Z,pixPREV
|
|
EXX
|
|
DEC BC
|
|
LD A,B
|
|
OR C
|
|
EXX
|
|
JP NZ,BMP256X
|
|
CALL retBANK
|
|
AND A
|
|
RET
|
|
|
|
; FROM HL
|
|
|
|
READS2 CALL pixCURR
|
|
PUSH BC
|
|
LD D,H
|
|
LD E,L
|
|
ADD HL,BC
|
|
JP C,DOUBLE3
|
|
LD H,D
|
|
LD L,E
|
|
LD DE,STBUFF
|
|
LDIR
|
|
POP BC
|
|
CALL retBANK
|
|
RET
|
|
|
|
DOUBLE3 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,STBUFF
|
|
LDIR
|
|
POP BC
|
|
LD A,B
|
|
OR C
|
|
JR Z,ROVNO3
|
|
CALL pixNEXT
|
|
LDIR
|
|
CALL pixPREV
|
|
ROVNO3 POP BC
|
|
CALL retBANK
|
|
RET
|
|
|
|
|
|
; TO DE
|
|
|
|
WRITES2 CALL FLECURR
|
|
PUSH BC
|
|
LD H,D
|
|
LD L,E
|
|
ADD HL,BC
|
|
JP C,DOUBLE4
|
|
LD HL,STBUFF
|
|
LDIR
|
|
POP BC
|
|
CALL retBANK
|
|
RET
|
|
|
|
DOUBLE4 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 HL,STBUFF
|
|
LDIR
|
|
EX DE,HL
|
|
CALL FLENEXT
|
|
EX DE,HL
|
|
POP BC
|
|
LD A,B
|
|
OR C
|
|
JR Z,ROVNO4
|
|
LDIR
|
|
ROVNO4 POP BC
|
|
CALL retBANK
|
|
RET
|
|
|
|
FLSIZE DW 0
|
|
FHSIZE DW 0
|
|
|
|
OFFSET DW 1024+54
|
|
|
|
STBUFF DS 1024
|
|
|
|
NEWPAL DS 256*4
|
|
|
|
INCLUDE "WINDOS2.ASM" |