flex_nav/fnpanel.a80

1240 lines
19 KiB
Plaintext
Raw Permalink Blame History

; LAST UPDATE: 27.04.2025 savelij
;[]----------------------------------------------------------[]
PrintDisks LD L,(IY + PANEL.XL)
LD H,(IY + PANEL.XH)
INC HL
INC HL
LD (.DiskX1),HL
LD DE,0x0004
ADD HL,DE
LD (.DiskX2),HL
LD DE,0x0006
ADD HL,DE
LD (.NameX),HL
LD A,'A'
LD (.DISK),A
PUSH IY
POP HL
LD DE,PANEL.CURRPATH
ADD HL,DE
LD A,(HL)
SUB 'A'
LD C,A
LD A,(NUM_DEVICES)
LD B,A
.L1 LD A,C
OR A
LD DE,(COLORP.BLACK + COLORI.BLACKGRAY) << 8 | (COLORP.BLACKGRAY + COLORI.YELLOW)
JR Z,.L2
LD DE,(COLORP.BLACK + COLORI.HIGHGRAY) << 8 | (COLORP.HIGHGRAY + COLORI.BLACK)
.L2 LD A,D
LD (.ColRect),A
LD A,E
LD (.ColName),A
MAKEWINDOW WINSUBOBJ.WOBIND
W_BUTTON 0,30,28,12
.DiskX1 EQU $ - 8
.LnDiskX EQU $ - 4
W_FILL 0,32,20,8,COLORI.BLACK
.DiskX2 EQU $ - 9
.ColRect EQU $ - 1
W_TEXT 0,32,COLORI.BLACK," "
.NameX EQU $ - 7
.ColName EQU $ - 3
.DISK EQU $ - 2
W_END
LD HL,(.DiskX1)
LD DE,(.LnDiskX)
ADD HL,DE
LD (.DiskX1),HL
LD HL,(.DiskX2)
ADD HL,DE
LD (.DiskX2),HL
LD HL,(.NameX)
ADD HL,DE
LD (.NameX),HL
LD HL,.DISK
INC (HL)
DEC C
DJNZ .L1
RET
;[]----------------------------------------------------------[]
PrintPath BIT PANELFLAG.B_PRNDOSPATH,(IY + PANEL.PANELFLAG)
LD A,COLORP.BLACK + COLORI.BLACK
LD C,COLORP.BLACK + COLORI.WHITE
JR NZ,.L1
LD A,COLORP.BLACK + COLORI.BLACKGRAY
LD C,COLORP.BLACKGRAY + COLORI.WHITE
.L1 LD (.HeadCol),A
LD A,C
LD (.PathCol),A
LD L,(IY + PANEL.XL)
LD H,(IY + PANEL.XH)
LD (.PanelHX),HL
MAKEWINDOW WINSUBOBJ.WOBIND
W_FILL 0,46,310,12,COLORI.BLACK
.PanelHX EQU $ - 9
.HeadCol EQU $ - 1
W_END
PUSH IY
POP HL
LD BC,PANEL.CURRPATH
ADD HL,BC
PUSH HL
LD DE,WorkBuffer
SUB A
.L2 LDI
CP (HL)
JR NZ,.L2
DEC HL
LD A,'\\'
CP (HL)
JR Z,.L3
LD (DE),A
INC DE
.L3 POP HL
SUB A
LD (DE),A
BIT VIEWFLAG.B_TREE,(IY + PANEL.VIEWFLAG)
JR NZ,.PrPath1
LD BC,0x000D
SBC HL,BC
BIT SORTFLAG.B_FILTER,(IY + PANEL.SORTFLAG)
JR NZ,.L4
LD HL,NORMmask
.L4 LDIR
.PrPath1 LD IX,300
LD HL,(.PanelHX)
LD DE,WorkBuffer
LD BC,0x0006
ADD HL,BC
EX DE,HL
LD C,0x30
LD A,0x00
.PathCol EQU $-1
JP PrnRangPathL
;[]----------------------------------------------------------[]
PrintDOSPath PUSH IY
POP HL
LD BC,PANEL.CURRPATH
ADD HL,BC
LD DE,WorkBuffer
SUB A
.L1 LDI
CP (HL)
JR NZ,.L1
DEC HL
LD A,'\\'
CP (HL)
JR Z,.L2
LD (DE),A
INC DE
.L2 LD A,'>'
LD (DE),A
INC DE
SUB A
LD (DE),A
MAKEWINDOW WINSUBOBJ.WOBIND
W_FILL 4,231,246,8,COLORI.HIGHGRAY
W_END
LD IX,246
LD HL,WorkBuffer
LD DE,250
LD BC,231
LD A,COLORP.HIGHGRAY + COLORI.BLACK
JP PrnRangPathR
;[]----------------------------------------------------------[]
PrnFileInfo BIT VIEWFLAG.B_TREE,(IY + PANEL.VIEWFLAG)
JP NZ,PrnTreeInfo ;Tree
LD A,(IY + PANEL.MFL)
OR (IY + PANEL.MFH)
JP NZ,PrnSelInfo
GETPORT WINSP.CPU1
PUSH AF
BIT PANELFLAG.B_SIDE,(IY + PANEL.PANELFLAG)
LD A,(RAMPAGES.LEFTPANEL)
JR Z,.L1
LD A,(RAMPAGES.RIGHTPANEL)
.L1
SETPORT WINSP.CPU1,,0
LD L,(IY + PANEL.FFL)
LD H,(IY + PANEL.FFH)
LD E,(IY + PANEL.CFL)
LD D,(IY + PANEL.CFH)
ADD HL,DE
ADD HL,HL ; *2
ADD HL,HL ; *4
ADD HL,HL ; *8
LD E,L
LD D,H
ADD HL,HL ; *10
ADD HL,DE ; *18
SET 6,H ; | 0x4000
LD DE,WorkBuffer
LD BC,FileHDR.SIZE
CALL MoveBytes
POP AF
SETPORT WINSP.CPU1,,0
LD HL,WorkBuffer + FileHDR.SIZE;0x18
LD B,38
LD A,' '
.L2 LD (HL),A
INC HL
DJNZ .L2
LD (HL),0x00
LD IX,WorkBuffer
LD HL,WorkBuffer+1
LD A,(HL)
OR A
JR Z,PrntFI
LD DE,WorkBuffer + FileHDR.SIZE;0x18
LD B,0x08
.EFI0 LD A,(HL)
CP ' '
JR Z,.EFI1
INC HL
LD (DE),A
INC DE
DJNZ .EFI0
.EFI1 LD A,B
OR A
JR Z,.L3
.L4 INC HL
DJNZ .L4
.L3 LD B,0x03
INC HL
LD A,(HL)
CP ' '
JR NZ,.EFI3
.EFI2 LD A,(HL)
INC HL
LD (DE),A
INC DE
DJNZ .EFI2
.EFI3 LD A,B
OR A
JR Z,.EndFI
LD A,'.'
LD (DE),A
INC DE
.EFI4 LD A,(HL)
INC HL
LD (DE),A
INC DE
DJNZ .EFI4
.EndFI LD DE,WorkBuffer + FileHDR.SIZE + FileHDR.Zero;0x18 + 0x0D
CALL GetFileLen
LD DE,WorkBuffer + FileHDR.SIZE + FileHDR.SIZE;0x18+0x18
CALL GetData
INC DE
CALL GetTime
PrntFI LD HL,WorkBuffer + FileHDR.SIZE;0x18
LD E,(IY+PANEL.XL)
LD D,(IY+PANEL.XH)
INC DE
INC DE
INC DE
INC DE
LD BC,215
LD A,COLORP.HIGHGRAY + COLORI.BLACK
JP PrnTxtLnNorm
GetFileLen BIT DIR.B_Dir,(IX + FileHDR.Attr)
JP NZ,PDirectory
RES DIR.B_Device,(IX + FileHDR.Attr)
LD HL,GetLenExit
LD (ChooseStringFormat.address),HL
LD L,(IX + FileHDR.SizeBytes)
LD H,(IX + FileHDR.SizeBytes + 1)
EXX
LD L,(IX + FileHDR.SizeBytes + 2)
LD H,(IX + FileHDR.SizeBytes + 3)
EXX
JP ConvNumTxt32_Shared
GetLenExit CP 0x30
JR Z,.L1
SET DIR.B_Device,(IX + FileHDR.Attr)
.L1 BIT DIR.B_Device,(IX + FileHDR.Attr)
JR NZ,.L2
LD A,0x20
.L2 LD (DE),A
INC DE
RET
PDirectory LD HL,DirText
LD BC,0x000A
LDIR
RET
DirText DEFB " <DIR> "
; <20><><EFBFBD><EFBFBD>
GetData EX DE,HL
LD A,(IX + FileHDR.Date)
CALL Get8Bit
LD (HL),'.'
INC HL
LD A,(IX + FileHDR.Month)
CALL Get8Bit
LD (HL),'.'
INC HL
LD A,(IX + FileHDR.Year) ;<3B><><EFBFBD>
CALL Get8Bit
EX DE,HL
RET
; <20><EFBFBD>
GetTime EX DE,HL
LD A,(IX + FileHDR.Hours) ;<3B><><EFBFBD><EFBFBD>
CALL Get8Bit
LD (HL),':'
INC HL
LD A,(IX + FileHDR.Minutes)
CALL Get8Bit
EX DE,HL
RET
Get8Bit LD B,'0' - 1
.L1 INC B
SUB 10
JR NC,.L1
ADD A,10
LD (HL),B
INC HL
ADD A,'0'
LD (HL),A
INC HL
RET
PrnTreeInfo
IF TREE_REZID
CALL RESIDENT.MakeTreePath
ELSE
CALL MakeTreePathR
ENDIF
EX DE,HL
PUSH IY
POP HL
LD BC,PANEL.CURRPATH
ADD HL,BC
INC HL
INC HL
EX DE,HL
SUB A
.L1 LDI
CP (HL)
JR NZ,.L1
LD (DE),A
CALL PrintPath
BIT PANELFLAG.B_PRNDOSPATH,(IY+PANEL.PANELFLAG)
JP NZ,PrintDOSPath
RET
PrnSelInfo LD L,(IY+PANEL.MBL1)
LD H,(IY+PANEL.MBH1)
LD C,(IY+PANEL.MBL2)
LD B,(IY+PANEL.MBH2)
LD A,(IY+PANEL.MBL3) ; [ ] FAT32
LD DE,WorkBuffer
CALL ConvNumTxt40 ; [ ] fat32
LD HL,CrSizeT
LD BC,0x000A
LDIR
LD L,(IY+PANEL.MFL)
LD H,(IY+PANEL.MFH)
CALL ConvNumTxt16
LD HL,CrSelT
LD BC,0x000F
LDIR
LD A,E
LD DE,WorkBuffer+0x100
LD C,A
SUB 38
NEG
SRL A
LD B,A
JR Z,.PrSelI1
LD A,0x20
.L1 LD (DE),A
INC E
DJNZ .L1
.PrSelI1 LD HL,WorkBuffer
LDIR
LD A,38
SUB E
JR Z,.PrSelI2
LD B,A
LD A,0x20
.L2 LD (DE),A
INC E
DJNZ .L2
.PrSelI2 SUB A
LD (DE),A
LD HL,WorkBuffer+0x100
LD E,(IY+PANEL.XL)
LD D,(IY+PANEL.XH)
INC DE
INC DE
INC DE
INC DE
LD BC,215
LD A,COLORP.HIGHGRAY + COLORI.BLACK
JP PrnTxtLnNorm
CrSizeT DEFB " bytes in "
CrSelT DEFB " selected files"
;[]----------------------------------------------------------[]
PrintDIR LD A,(IY+PANEL.EFL)
OR (IY+PANEL.EFH)
JR NZ,PrnDIRECT
LD L,(IY+PANEL.XL)
LD H,(IY+PANEL.XH)
INC HL
INC HL
LD (.ClrDIR1),HL
LD HL,308
LD DE,141
LD A,(IY+PANEL.VIEWFLAG)
AND VIEWFLAG.MASK
JR Z,.L1
LD HL,292
LD DE,149
.L1 LD (.H),HL
LD (.V),DE
MAKEWINDOW WINSUBOBJ.WOBIND
W_FILL 0,60,0,0,COLORI.PANEL
.ClrDIR1 EQU $ - 9
.H EQU $ - 5
.V EQU $ - 3
W_END
RET
PrnDIRECT BIT VIEWFLAG.B_FULL,(IY+PANEL.VIEWFLAG)
JP NZ,PrintFULL
BIT VIEWFLAG.B_TREE,(IY+PANEL.VIEWFLAG)
JP NZ,PrintTREE
; <20><><EFBFBD><EFBFBD> ᯨ᮪
PUSH IY
GETPORT WINSP.CPU1
PUSH AF
BIT PANELFLAG.B_SIDE,(IY+PANEL.PANELFLAG)
LD A,(RAMPAGES.LEFTPANEL)
JR Z,.L1
LD A,(RAMPAGES.RIGHTPANEL)
.L1
SETPORT WINSP.CPU1,,0
LD L,(IY+PANEL.FFL)
LD H,(IY+PANEL.FFH)
ADD HL,HL ; *2
ADD HL,HL ; *4
ADD HL,HL ; *8
LD E,L
LD D,H
ADD HL,HL ; *10
ADD HL,DE ; *18
SET 6,H ; | 0x4000
LD DE,WorkBuffer
LD BC,0x33 * FileHDR.SIZE;0x18
CALL MoveBytes
POP AF
SETPORT WINSP.CPU1,,0
LD B,COLORP.PANEL + COLORI.FILES
LD C,COLORP.PANEL + COLORI.SELECTFILES
CALL InsPrnColor
GETPORT WINSP.Y_PORT ; <20><><EFBFBD>࠭塞 Y <20><><EFBFBD><EFBFBD>
LD C,A
GETPORT WINSP.CPU1
LD B,A
PUSH BC
SETPORT WINSP.CPU1,0x50
LD HL,WorkBuffer
PUSH HL
BIT PANELFLAG.B_SIDE,(IY+PANEL.PANELFLAG)
LD HL,PositTABLeft
JR Z,.L2
LD HL,PositTABRight
.L2 LD B,0x33
.PrnDIR1 LD E,(HL)
INC HL
LD D,(HL)
INC HL
LD C,(HL)
INC HL
EX (SP),HL
PUSH HL
PUSH BC
LD B,0x0C
CALL PrintName
POP BC
POP HL
LD DE,0x0019
ADD HL,DE
LD A,(HL)
DEC HL
OR A
JR Z,PrnDIR2
EX (SP),HL
DJNZ .PrnDIR1
JR PrnDIRe
PrnDIR2 DEC B
JR Z,PrnDIRe
LD HL,EmptyFile
EX (SP),HL
PrnDIR3 LD E,(HL)
INC HL
LD D,(HL)
INC HL
LD C,(HL)
INC HL
EX (SP),HL
PUSH HL
PUSH BC
LD B,0x0C
CALL PrintName
POP BC
POP HL
EX (SP),HL
DJNZ PrnDIR3
PrnDIRe POP HL
POP BC
LD A,B
SETPORT WINSP.CPU1,,0
LD A,C
SETPORT WINSP.Y_PORT,,0
POP IY
RET
EmptyFile DB 0x00," ",0x01," ",0x00
; <20><><EFBFBD><EFBFBD><E0AEA1><EFBFBD> ᯨ᮪
PrintFULL PUSH IY
GETPORT WINSP.CPU1
PUSH AF
BIT PANELFLAG.B_SIDE,(IY+PANEL.PANELFLAG)
LD A,(RAMPAGES.LEFTPANEL)
JR Z,.L1
LD A,(RAMPAGES.RIGHTPANEL)
.L1
SETPORT WINSP.CPU1,,0
LD L,(IY+PANEL.FFL)
LD H,(IY+PANEL.FFH)
ADD HL,HL ; *2
ADD HL,HL ; *4
ADD HL,HL ; *8
LD E,L
LD D,H
ADD HL,HL ; *10
ADD HL,DE ; *18
SET 6,H ; | 0x4000
LD DE,WorkBuffer
LD BC,0x12 * FileHDR.SIZE;0x18
CALL MoveBytes
POP AF
SETPORT WINSP.CPU1,,0
LD B,COLORP.PANEL + COLORI.FILES
LD C,COLORP.PANEL + COLORI.SELECTFILES
CALL InsPrnColor
GETPORT WINSP.Y_PORT ; <20><><EFBFBD>࠭塞 Y <20><><EFBFBD><EFBFBD>
LD C,A
GETPORT WINSP.CPU1
LD B,A
PUSH BC
SETPORT WINSP.CPU1,0x50
LD HL,WorkBuffer
BIT PANELFLAG.B_SIDE,(IY+PANEL.PANELFLAG)
LD DE,8
JR Z,.L2
LD DE,328
.L2 LD BC,0x123F
.PrnDIRp PUSH HL
PUSH DE
PUSH BC
PUSH HL
LD DE,WorkBuffer+0x200
LD BC,0x000D
LDIR
LD A,0x01
LD (DE),A
INC DE
POP IX
BIT DIR.B_Dir,(IX + FileHDR.Attr)
CALL NZ,PutDIRTxt
CALL Z,GetFileLen
LD A,0x01
LD (DE),A
INC DE
CALL GetData
LD A,0x01
LD (DE),A
INC DE
CALL GetTime
POP BC
POP DE
POP HL
PUSH DE
PUSH BC
PUSH HL
LD HL,WorkBuffer+0x200
LD B,0x26
CALL PrintName
POP HL
LD BC,0x0019
ADD HL,BC
POP BC
LD A,C
ADD A,0x08
LD C,A
POP DE
LD A,(HL)
DEC HL
OR A
JR Z,.PrnDIRp2
DJNZ .PrnDIRp
JR .PrnDIRpE
.PrnDIRp2 DEC B
JR Z,.PrnDIRpE
LD HL,EmptyFile1
.PrnDIRp3 PUSH HL
PUSH DE
PUSH BC
LD B,0x26
CALL PrintName
POP BC
LD A,C
ADD A,0x08
LD C,A
POP DE
POP HL
DJNZ .PrnDIRp3
.PrnDIRpE POP BC
LD A,B
SETPORT WINSP.CPU1,,0
LD A,C
SETPORT WINSP.Y_PORT,,0
POP IY
RET
PutDIRTxt EX AF,AF'
LD HL,DIRt1
LD A,(IX + FileHDR.Name)
CP '.'
JR Z,.L1
LD HL,DIRt2
.L1 LD BC,0x000A
LDIR
EX AF,AF'
RET
DIRt1 DEFB 0x20,0x10,"UP--DIR",0x11
DIRt2 DEFB 0x20,0x10,"SUB-DIR",0x11
EmptyFile1 DEFB 0x00," "
DEFB 0x01," "
DEFB 0x01," "
DEFB 0x01," "
DEFB 0x01," "
; <20><><EFBFBD> <20><><EFBFBD><E2A0AB><EFBFBD><EFBFBD>
PrintTREE
GETPORT WINSP.CPU1
PUSH AF
BIT PANELFLAG.B_SIDE,(IY+PANEL.PANELFLAG)
LD A,(RAMPAGES.LEFTPANEL)
JR Z,.L1
LD A,(RAMPAGES.RIGHTPANEL)
.L1
SETPORT WINSP.CPU1,,0
LD HL,WorkBuffer
LD B,0x18
LD A,0x80
PUSH HL
.L2 LD (HL),A
INC L
DJNZ .L2
POP DE
LD HL,0x4000
LD C,(IY+PANEL.FFL)
LD B,(IY+PANEL.FFH)
LD A,B
OR C
JR Z,.PrDIRb2
.PrDIRb1 PUSH BC
LD A,(HL)
AND 0x7F
LD E,A
LD A,(HL)
LD (DE),A
LD BC,0x0010
ADD HL,BC
POP BC
DEC BC
LD A,B
OR C
JR NZ,.PrDIRb1
.PrDIRb2 LD DE,WorkBuffer+0x100
LD BC,0x12*0x10
CALL MoveBytes
POP AF
SETPORT WINSP.CPU1,,0
LD B,COLORP.PANEL + COLORI.FILES
LD C,COLORP.PANEL + COLORI.SELECTFILES
CALL InsPrnColor
GETPORT WINSP.Y_PORT ; <20><><EFBFBD>࠭塞 Y <20><><EFBFBD><EFBFBD>
LD C,A
GETPORT WINSP.CPU1
LD B,A
PUSH BC
SETPORT WINSP.CPU1,0x50
BIT PANELFLAG.B_SIDE,(IY+PANEL.PANELFLAG)
LD HL,WorkBuffer+0x100
LD DE,10
JR Z,.L3
LD DE,330
.L3 LD BC,0x123F
.PrnDIRt PUSH HL
PUSH DE
PUSH BC
LD DE,WorkBuffer+0x300
CALL MakeTreeLine
POP BC
POP DE
POP HL
PUSH DE
PUSH BC
PUSH HL
LD HL,WorkBuffer+0x300
LD B,0x24
PUSH IY
CALL PrintName
POP IY
POP HL
LD BC,0x000F
ADD HL,BC
POP BC
LD A,C
ADD A,0x08
LD C,A
POP DE
LD A,(HL)
INC HL
INC A
JR Z,.PrnDIRt2
DEC B
JP NZ,.PrnDIRt
JR .PrnDIRtE
.PrnDIRt2 DEC B
JR Z,.PrnDIRtE
LD HL,EmptyFile2
PUSH IY
.PrnDIRt3 PUSH HL
PUSH DE
PUSH BC
LD B,0x24
CALL PrintName
POP BC
LD A,C
ADD A,0x08
LD C,A
POP DE
POP HL
DJNZ .PrnDIRt3
POP IY
.PrnDIRtE POP BC
LD A,B
SETPORT WINSP.CPU1,,0
LD A,C
SETPORT WINSP.Y_PORT,,0
RET
MakeTreeLine SUB A
LD (DE),A
INC E
LD C,(HL)
INC HL
LD A,(HL)
INC HL
LD IXL,A
LD A,' '
LD (DE),A
INC E
INC C
DEC C ; r.C=0 "\"
JR Z,.MTreeL2
PUSH HL
LD A,C
AND 0x7F
LD B,A
LD HL,WorkBuffer
PUSH HL
LD L,A
LD (HL),C
POP HL
DEC B
JR Z,.MTreeL1
.MTreeL0 INC HL
BIT 7,(HL)
LD A,0xB3
JR Z,.L1
LD A,' '
.L1 LD (DE),A
INC E
BIT VIEWFLAG.B_SHORTTREE,(IY+PANEL.VIEWFLAG)
JR NZ,.L2
LD A,' '
LD (DE),A
INC E
.L2 DJNZ .MTreeL0
.MTreeL1 BIT 7,C
LD A,0xC3
JR Z,.L3
LD A,0xC0
.L3 LD (DE),A
INC E
BIT VIEWFLAG.B_SHORTTREE,(IY+PANEL.VIEWFLAG)
JR NZ,.L4
LD A,0xC4
LD (DE),A
INC E
.L4 POP HL
.MTreeL2 LD A,IXL
BIT 1,A
JR Z,.MTreeL3
BIT VIEWFLAG.B_SHORTTREE,(IY+PANEL.VIEWFLAG)
JR NZ,.L5
DEC E
.L5 LD A,0xDD
LD (DE),A
INC E
LD A,IXL
.MTreeL3 BIT 0,A
LD A,0x02
JR NZ,.L6
INC A
.L6 LD (DE),A
INC E
SUB A
.L7 LDI
CP (HL)
JR NZ,.L7
LD A,0x03
LD (DE),A
INC E
LD A,IXL
BIT 1,A
JR Z,.MTreeL5
LD A,0xDE
LD (DE),A
INC E
.MTreeL5 LD A,0x28
SUB E
JR Z,.MTreeL6
JR C,.MTreeL6
LD B,A
LD A,0x20
.L8 LD (DE),A
INC E
DJNZ .L8
.MTreeL6 LD A,IXL
BIT 0,A
RET Z
LD E,0x26
LD A,0x02
LD (DE),A
INC E
LD A,0x11
LD (DE),A
RET
EmptyFile2 DEFB 0x00
DB 0x24 DUP ' '
InsPrnColor LD HL,PrnINKd1 ; INK <20><><EFBFBD><EFBFBD><EFBFBD>
LD DE,PrnPAPd1 ; PAPER <20><><EFBFBD><EFBFBD><EFBFBD>
PUSH BC
LD A,B
PUSH AF
AND 0x0F ; INK
LD C,A
RLCA
RLCA
RLCA
RLCA
OR C
CPL
LD B,0x08
.L1 LD (HL),A
INC HL
DJNZ .L1
LD B,A
POP AF
AND 0xF0 ; PAPER
LD C,A
RRCA
RRCA
RRCA
RRCA
OR C
XOR B ; XOR <20> INK
LD B,0x08
.L2 LD (DE),A
INC DE
DJNZ .L2
POP BC
LD HL,PrnINKd2 ; INK <20><><EFBFBD><EFBFBD><EFBFBD>
LD DE,PrnPAPd2 ; PAPER <20><><EFBFBD><EFBFBD><EFBFBD>
LD A,C
PUSH AF
AND 0x0F ; INK
LD C,A
RLCA
RLCA
RLCA
RLCA
OR C
CPL
LD B,0x08
.L3 LD (HL),A
INC HL
DJNZ .L3
LD B,A
POP AF
AND 0xF0 ; PAPER
LD C,A
RRCA
RRCA
RRCA
RRCA
OR C
XOR B ; XOR <20> INK
LD B,0x08
.L4 LD (DE),A
INC DE
DJNZ .L4
RET
PrnINKd1 DB 8 DUP 0
PrnPAPd1 DB 8 DUP 0
PrnINKd2 DB 8 DUP 0
PrnPAPd2 DB 8 DUP 0
PrintName LD IYL,C ; Y <20><><EFBFBD><EFBFBD><E0A4A8><EFBFBD><EFBFBD>
LD A,(HL)
INC HL
PUSH DE
EXX
LD HL,PrnPAPd1 ; INK <20><><EFBFBD><EFBFBD><EFBFBD>
LD DE,PrnINKd1 ; PAPER <20><><EFBFBD><EFBFBD><EFBFBD>
OR A
JR Z,.L1
LD HL,PrnPAPd2 ; INK <20><><EFBFBD><EFBFBD><EFBFBD>
LD DE,PrnINKd2 ; PAPER <20><><EFBFBD><EFBFBD><EFBFBD>
.L1 POP BC
SRL B
RR C
SET 6,B
EXX
DI
GETPORT WINSP.CPU0
PUSH AF
LD A,(RAMPAGES.FNFONT)
SETPORT WINSP.CPU0,,0
LD A,B
LD C,L ; <20><><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD>
LD B,H
ACCEL ACCELCMD.SET_BUFFER
LD H,0x08
ACCEL ACCELCMD.OFF
.L2 EX AF,AF'
LD A,(BC)
INC BC
CP 0x03
JR NZ,.L3
EXX
LD HL,PrnPAPd1 ; INK <20><><EFBFBD><EFBFBD><EFBFBD>
LD DE,PrnINKd1 ; PAPER <20><><EFBFBD><EFBFBD><EFBFBD>
EXX
JR .L5
.L3 CP 0x02
JR NZ,.L4
EXX
LD HL,PrnPAPd2 ; INK <20><><EFBFBD><EFBFBD><EFBFBD>
LD DE,PrnINKd2 ; PAPER <20><><EFBFBD><EFBFBD><EFBFBD>
EXX
.L5 LD A,(BC)
INC BC
.L4 PUSH BC
CP 0x01
LD B,0x04
JR NZ,.L6
LD B,0x02
LD A,0x20
.L6 LD L,A
LD H,HIGH (IFFFONT_RAW)-0xC0
LD E,(HL)
INC H
LD A,(HL)
ADD A,HIGH (IFFFONT_RAW)-0xC0
LD D,A
LD HL,0x0008
EX DE,HL
.L7
ACCEL ACCELCMD.COPY
LD A,(HL)
ACCEL ACCELCMD.OFF
EXX
LD A,IYL
SETPORT WINSP.Y_PORT,,0
ACCEL ACCELCMD.COPY
OR (HL)
EX DE,HL
XOR (HL)
ACCEL ACCELCMD.COPY_VERT
LD (BC),A
ACCEL ACCELCMD.OFF
EX DE,HL
INC BC
EXX
ADD HL,DE
DJNZ .L7
POP BC
EX AF,AF'
DEC A
JR NZ,.L2
POP AF
SETPORT WINSP.CPU0,,0
EI
RET
PositTABLeft
.COUNT := 63
REPT 17
DW 10
DB .COUNT
.COUNT := .COUNT + 8
ENDM
.COUNT := 63
REPT 17
DW 114
DB .COUNT
.COUNT := .COUNT + 8
ENDM
.COUNT := 63
REPT 17
DW 218
DB .COUNT
.COUNT := .COUNT + 8
ENDM
PositTABRight
.COUNT := 63
REPT 17
DW 330
DB .COUNT
.COUNT := .COUNT + 8
ENDM
.COUNT := 63
REPT 17
DW 434
DB .COUNT
.COUNT := .COUNT + 8
ENDM
.COUNT := 63
REPT 17
DW 538
DB .COUNT
.COUNT := .COUNT + 8
ENDM
;[]----------------------------------------------------------[]
SetInvert BIT PANELFLAG.B_PRNDOSPATH,(IY+PANEL.PANELFLAG)
RET Z
LD HL,(COLORP.PANEL + COLORI.FILES) << 8 | (COLORP.PANEL + COLORI.SELECTFILES)
LD BC,(COLORP.INVERTPAPER + COLORI.INVERTINK) << 8 | (COLORP.INVERTPAPER + COLORI.INVSELFILES)
JR PrnInvert
ResInvert BIT PANELFLAG.B_PRNDOSPATH,(IY + PANEL.PANELFLAG)
RET Z
LD HL,(COLORP.INVERTPAPER + COLORI.INVERTINK) << 8 | (COLORP.INVERTPAPER + COLORI.INVSELFILES)
LD BC,(COLORP.PANEL + COLORI.FILES) << 8 | (COLORP.PANEL + COLORI.SELECTFILES)
PrnInvert LD A,(IY + PANEL.EFL)
OR (IY + PANEL.EFH)
RET Z
BIT VIEWFLAG.B_TREE,(IY + PANEL.VIEWFLAG)
JP NZ,PrnTreeInv
PUSH HL
GETPORT WINSP.CPU1
PUSH AF
BIT PANELFLAG.B_SIDE,(IY + PANEL.PANELFLAG)
LD A,(RAMPAGES.LEFTPANEL)
JR Z,.L1
LD A,(RAMPAGES.RIGHTPANEL)
.L1
SETPORT WINSP.CPU1,,0
LD L,(IY + PANEL.FFL)
LD H,(IY + PANEL.FFH)
LD E,(IY + PANEL.CFL)
LD D,(IY + PANEL.CFH)
ADD HL,DE
ADD HL,HL ; *2
ADD HL,HL ; *4
ADD HL,HL ; *8
LD E,L
LD D,H
ADD HL,HL ; *10
ADD HL,DE ; *18
SET 6,H ; | 0xC000
LD E,(HL)
POP AF
SETPORT WINSP.CPU1,,0
POP HL
LD A,E
OR A
LD E,B
LD D,H
JR Z,.L2
LD E,C
LD D,L
.L2 BIT VIEWFLAG.B_FULL,(IY + PANEL.VIEWFLAG)
JR NZ,PrnInvertP
LD L,(IY + PANEL.CFL)
LD H,(IY + PANEL.CFH)
LD C,L
LD B,H
ADD HL,HL
ADD HL,BC
BIT PANELFLAG.B_SIDE,(IY + PANEL.PANELFLAG)
LD BC,PositTABLeft
JR Z,.L3
LD BC,PositTABRight
.L3 ADD HL,BC
PUSH DE
LD E,(HL)
INC HL
LD D,(HL)
INC HL
LD C,(HL)
LD B,0x00
EX DE,HL
POP DE
LD IX,8 << 8 + 48
DEC HL
DEC HL
JP InvertRectan
PrnInvertP LD L,(IY + PANEL.CFL)
LD H,(IY + PANEL.CFH)
ADD HL,HL
ADD HL,HL
ADD HL,HL
LD BC,0x003F
ADD HL,BC
LD C,L
LD B,0x00
BIT PANELFLAG.B_SIDE,(IY + PANEL.PANELFLAG)
LD HL,6
JR Z,.L1
LD HL,326
.L1 LD IX,8 << 8 + 146
JP InvertRectan
PrnTreeInv PUSH HL
GETPORT WINSP.CPU1
PUSH AF
BIT PANELFLAG.B_SIDE,(IY + PANEL.PANELFLAG)
LD A,(RAMPAGES.LEFTPANEL)
JR Z,.L1
LD A,(RAMPAGES.RIGHTPANEL)
.L1
SETPORT WINSP.CPU1,,0
LD L,(IY + PANEL.FFL)
LD H,(IY + PANEL.FFH)
LD E,(IY + PANEL.CFL)
LD D,(IY + PANEL.CFH)
ADD HL,DE
ADD HL,HL ; *2
ADD HL,HL ; *4
ADD HL,HL ; *8
ADD HL,HL ; *10
SET 6,H ; | 0x4000
LD A,(HL)
EX AF,AF'
INC HL
LD A,(HL)
LD IXH,A
LD IXL,0xFF
.L2 INC IXL
INC HL
LD A,(HL)
OR A
JR NZ,.L2
LD A,IXL
ADD A,A
ADD A,A
LD IXL,A
POP AF
SETPORT WINSP.CPU1,,0
POP HL
LD A,IXH
OR A
LD E,B
LD D,H
JR Z,.L3
LD E,C
LD D,L
.L3 LD L,(IY+PANEL.CFL)
LD H,(IY+PANEL.CFH)
ADD HL,HL
ADD HL,HL
ADD HL,HL
LD BC,0x003F
ADD HL,BC
LD C,L
LD B,0x00
BIT PANELFLAG.B_SIDE,(IY+PANEL.PANELFLAG)
LD HL,0x0012
JR Z,.L4
LD HL,0x0152
.L4 BIT VIEWFLAG.B_SHORTTREE,(IY+PANEL.VIEWFLAG)
JR Z,.PrTreeI
EX AF,AF'
OR A
JR Z,.PrTreeI1
EX AF,AF'
LD A,IXH
OR A
JR Z,.PrTreeI
PUSH BC
LD C,0x08
ADD HL,BC
POP BC
.PrTreeI EX AF,AF'
.PrTreeI1 PUSH BC
AND 0x7F
LD C,A
SLA C
RL B
SLA C
RL B
SLA C
RL B
ADD HL,BC
BIT VIEWFLAG.B_SHORTTREE,(IY+PANEL.VIEWFLAG)
JR NZ,.L5
ADD HL,BC
.L5 POP BC
LD IXH,0x08
JP InvertRectan