flex_nav/rez2_fnmisc.a80
2025-06-25 08:54:42 +03:00

966 lines
16 KiB
Plaintext
Raw Permalink Blame History

; LAST UPDATE: 25.06.2025 savelij
;[]==========================================================[]
FileInfoR LD A,(IY+PANEL.EFL)
OR (IY+PANEL.EFH)
RET Z
BIT VIEWFLAG.B_TREE,(IY+PANEL.VIEWFLAG)
RET NZ
SETPORT WINSP.Y_PORT,0xC0
GETPORT WINSP.CPU3
PUSH AF
BIT PANELFLAG.B_SIDE,(IY+PANEL.PANELFLAG)
LD A,(RAMPAGES.LEFTPANEL)
JR Z,.L1
LD A,(RAMPAGES.RIGHTPANEL)
.L1
SETPORT WINSP.CPU3,,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
ADD HL,HL
ADD HL,HL
LD E,L
LD D,H
ADD HL,HL
ADD HL,DE
LD A,H
OR 0xC0
LD H,A
LD DE,WorkBuffer
LD BC,0x0018
LDIR
POP AF
SETPORT WINSP.CPU3,,0
LD IX,WorkBuffer
LD HL,WorkBuffer+1
LD DE,WorkBuffer+0x20
LD A,(HL)
CP '.'
RET Z
CALL SetClock
PUSH DE
CALL MakeDOSname
POP HL
LD DE,FName
LD C,12
SUB A
.L2 LDI
CP (HL)
JR NZ,.L2
LD A,C
OR A
JR Z,.L5
LD B,A
LD A,0x20
.L3 LD (DE),A
INC DE
DJNZ .L3
.L5 LD HL,FAtributs
LD DE,FAttrib
LD C,(IX + FileHDR.Attr)
LD B,0x08
.L6 RL C
LD A,'-'
JR NC,.L4
LD A,(HL)
.L4 LD (DE),A
INC HL
INC DE
DJNZ .L6
LD HL,FLen
LD B,0x10
LD A,0x20
.L10 LD (HL),A
INC HL
DJNZ .L10
LD DE,FLen
BIT DIR.B_Dir,(IX + FileHDR.Attr)
JR Z,.L7
LD HL,DirText
LD BC,0x000A
LDIR
JR .L8
.L7 LD L,(IX+0x0F)
LD H,(IX+0x10)
LD C,(IX+0x11)
LD B,(IX+0x12)
CALL ConvNumTxt32
LD A,0x20
LD (DE),A
INC DE
LD HL,Bytes
LD BC,0x0005
LDIR
.L8 LD DE,FData
CALL GetData
LD DE,FTime
CALL GetTime
LD HL,WorkBuffer+0x20
LD DE,WorkBuffer+0x30
LD A,(FileAtribut)
PUSH IY
SPDSS DSSF.F_FIRST,0
POP IY
JP C,SetMouse
LD HL,FClast
LD B,0x05
LD A,0x20
.L9 LD (HL),A
INC HL
DJNZ .L9
LD HL,WorkBuffer+0x30+26
LD E,(HL)
INC HL
LD D,(HL)
EX DE,HL
LD DE,FClast
CALL ConvNumTxt16
MAKEWINDOW WINSUBOBJ.STORE
W_MAIN 240,80,160,98
W_FILL 4,2,152,10,COLORI.BLACK
W_TEXT 56,3,COLORI.WHITE,"File info"
W_TEXT 10,20,COLORP.HIGHGRAY,"Name: "
FName EQU $ - STRLEN(" ") - 1
W_TEXT 10,32,COLORP.HIGHGRAY,"Attributes: "
FAttrib EQU $ - STRLEN(" ") - 1
W_TEXT 10,44,COLORP.HIGHGRAY,"Len: "
FLen EQU $ - STRLEN(" ") - 1
W_TEXT 10,56,COLORP.HIGHGRAY,"Data: "
FData EQU $ - STRLEN(" ") - 1
FTime EQU $ - STRLEN(" ") - 1
W_TEXT 10,68,COLORP.HIGHGRAY,"First cluster: "
FClast EQU $ - STRLEN(" ") - 1
W_BUTTON 44,80,72,14
W_TEXT 72,83,COLORP.HIGHGRAY,"Ok"
W_END
CALL SetMouse
FileInfoLoop: LD IX,FileInfoTab
CALL TestCoords
SPDSS DSSF.SCANKEY
JR Z,FileInfoLoop
LD A,B
OR A
JR NZ,FileInfoLoop
LD A,E
CP 0x1B
JR Z,FileInfoExt
CP 0x0D
JR Z,FileInfoExt
RES 5,A
CP 'O'
JR NZ,FileInfoLoop
FileInfoExt:
WINDOWCLOSE
RET
FAtributs: DEFB "--ad-shr"
;[]==========================================================[]
PrintFileR LD A,(IY+PANEL.EFL)
OR (IY+PANEL.EFH)
RET Z
BIT VIEWFLAG.B_TREE,(IY+PANEL.VIEWFLAG)
RET NZ
SETPORT WINSP.Y_PORT,0xC0
GETPORT WINSP.CPU3
PUSH AF
BIT PANELFLAG.B_SIDE,(IY+PANEL.PANELFLAG)
LD A,(RAMPAGES.LEFTPANEL)
JR Z,.L1
LD A,(RAMPAGES.RIGHTPANEL)
.L1
SETPORT WINSP.CPU3,,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
ADD HL,HL
ADD HL,HL
LD E,L
LD D,H
ADD HL,HL
ADD HL,DE
LD A,H
OR 0xC0
LD H,A
LD DE,WorkBuffer
LD BC,0x0018
LDIR
POP AF
SETPORT WINSP.CPU3,,0
LD IX,WorkBuffer
BIT DIR.B_Dir,(IX + FileHDR.Attr)
RET NZ
LD HL,WorkBuffer+1
LD DE,PrnFileName
CALL MakeDOSname
LD L,(IX + FileHDR.SizeBytes)
LD H,(IX + FileHDR.SizeBytes + 1)
LD (PrnFileLen),HL
LD E,(IX + FileHDR.SizeBytes + 2)
LD D,(IX + FileHDR.SizeBytes + 3)
LD (PrnFileLen+2),DE
LD A,H
OR L
OR D
OR E
RET Z
PUSH IY
SPDSS DSSF.GETMEM,1
POP IY
PUSH AF
CALL C,DOSError
POP AF
RET C
LD (PrnMIndef),A
PUSH IY
LD HL,PagesList
SPBIOS BIOSF.GETMEMBLKPAGES
MAKEWINDOW WINSUBOBJ.STORE
W_MAIN 168,84,304,62
W_FILL 4,2,296,10,COLORI.BLACK
W_TEXT 142,3,COLORI.WHITE,"Print"
W_TEXT 16,16,COLORP.HIGHGRAY,"Printing file:"
W_BORDER 16,28,272,12
W_FILL 18,29,268,10,COLORI.WHITE
W_BUTTON 116,44,72,14
W_TEXT 140,47,COLORP.HIGHGRAY,"Stop"
W_END
PUSH IY
POP HL
LD DE,PANEL.CURRPATH
ADD HL,DE
LD DE,WorkBuffer
SUB A
.L2 LDI
CP (HL)
JR NZ,.L2
DEC HL
LD A,0x5C
CP (HL)
JR Z,.L3
LD (DE),A
INC DE
.L3 LD HL,PrnFileName
SUB A
.L4 LDI
CP (HL)
JR NZ,.L4
LD (DE),A
LD IX,0x00D0
LD HL,WorkBuffer
LD DE,0x00F8
LD BC,0x0064
LD A,0x80
CALL PrnRangPathL
LD IX,PrintFTab
CALL TestCoords
LD IX,ProcessFPrn
LD HL,(PrnFileLen)
LD DE,(PrnFileLen+2)
LD A,L
LD L,H
LD H,E
LD E,D
OR A
JR Z,InitPrn
INC HL
LD A,H
OR L
JR NZ,InitPrn
INC E
InitPrn LD (IX+PROC.MAXL1),L
LD (IX+PROC.MAXH1),H
LD (IX+PROC.MAXL2),E
LD (IX+PROC.MAXH2),0x00
CALL InitProcess
LD HL,PrnFileName
SPDSS DSSF.OPEN,,1
PUSH AF
CALL C,DOSError
POP AF
JP C,PrnError
LD (PrnFHandle),A
GETPORT WINSP.CPU3
PUSH AF
LD HL,PagesList
LD A,(HL)
ReadPr1 INC HL
PUSH HL
SETPORT WINSP.CPU3,,0
LD HL,(PrnFileLen)
LD DE,(PrnFileLen+2)
LD BC,0x4000
OR A
SBC HL,BC
LD B,0x00
EX DE,HL
SBC HL,BC
EX DE,HL
JR C,ReadPrnEnd
LD (PrnFileLen),HL
LD (PrnFileLen+2),DE
CALL SetClock
LD HL,0xC000
LD DE,0x4000
LD A,(PrnFHandle)
SPDSS DSSF.READ
CALL SetMouse
LD BC,0x4000
CALL PrintBlock
POP HL
JR C,PrnEsc
LD A,(HL)
CP 0xFF
JR NZ,ReadPr1
PrnEsc POP AF
SETPORT WINSP.CPU3,,0
JR PrnFileExit
ReadPrnEnd: LD HL,0xC000
LD DE,(PrnFileLen)
LD A,D
OR E
JR Z,.L1
CALL SetClock
LD A,(PrnFHandle)
PUSH DE
SPDSS DSSF.READ
POP BC
CALL SetMouse
CALL PrintBlock
JR C,.L2
.L1 CALL NxtPrnProc
.L2 POP HL
POP AF
SETPORT WINSP.CPU3,,0
PrnFileExit LD A,(PrnFHandle)
SPDSS DSSF.CLOSE
PrnError LD A,(PrnMIndef)
SPDSS DSSF.FREEMEM
POP IY
HALT
HALT
WINDOWCLOSE
RET
;[]----------------------------------------------------------[]
PrintBlock: LD DE,0xC000
PrnBlockLp LD A,(DE)
INC DE
CALL PrintCHAR
RET C
CALL NxtPrnProc
DEC BC
LD A,B
OR C
JR NZ,PrnBlockLp
RET
PrintCHAR: LD L,A
PUSH HL
PUSH DE
PUSH BC
SPMOUSE MOUSEF.READ_STATE
BIT 0,A
JR Z,PrnCH1
LD IX,PrintFTab
CALL TestCoords
JR C,PrnCH2
PrnCH1
SPDSS DSSF.SCANKEY
LD A,E
PrnCH2 POP BC
POP DE
POP HL
RET C
JR Z,PrnCHAR
CP 0x1B
SCF
RET Z
RES 5,A
CP 'S'
JR NZ,PrnCHAR
StopPrint SCF
RET
PrnCHAR PUSH DE
PUSH BC
LD A,L
SPDSS DSSF.PRINT
LD A,B
POP BC
POP DE
RET NC
HALT
JR PrintCHAR
;[]----------------------------------------------------------[]
NxtPrnProc LD A,E
OR A
RET NZ
PUSH DE
PUSH BC
LD IX,ProcessFPrn
LD L,(IX+PROC.CURL1)
LD H,(IX+PROC.CURH1)
INC HL
LD (IX+PROC.CURL1),L
LD (IX+PROC.CURH1),H
LD A,H
OR L
JR NZ,.L1
LD L,(IX+PROC.CURL2)
LD H,(IX+PROC.CURH2)
INC HL
LD (IX+PROC.CURL2),L
LD (IX+PROC.CURH2),H
.L1 CALL PrnProcess
POP BC
POP DE
RET
ProcessFPrn: DEFW 0x00BA
DEFW 0x0071
DEFW 0x010C
DEFW 0x0000
DEFW 0x0000
DEFW 0x0000
DEFW 0x0000
DEFW 0x0000
DEFW 0x0000
DEFB 0x4F
PrnFileName: DUPL 13,0
PrnFileLen: DUPL 4,0
PrnMIndef: DEFB 0x00
PrnFHandle: DEFB 0x00
;[]==========================================================[]
SystemInfoR
SETPORT WINSP.Y_PORT,0xC0
LD HL,SetInvert
PUSH HL
LD HL,DOSvers
LD DE,BIOSver
LD B,0x05
LD A,0x20
.L1 LD (HL),A
INC HL
LD (DE),A
INC DE
DJNZ .L1
PUSH IY
SPDSS DSSF.VERSION
POP IY
EX DE,HL
LD DE,DOSvers
LD A,H
CALL ConvNumTxt8
LD A,'.'
LD (DE),A
INC DE
LD A,L
CALL ConvNumTxt8
LD HL,WorkBuffer
SPBIOS BIOSF.FN_VERSION
SUB A
.L2 INC HL
CP (HL)
JR NZ,.L2
LD A,0x20
.L3 DEC HL
CP (HL)
JR NZ,.L3
INC HL
LD DE,BIOSver
SUB A
.L4 LDI
CP (HL)
JR NZ,.L4
LD HL,Present
LD A,(CMOSFlag)
OR A
JR NZ,.L5
LD HL,NotPresent
.L5 LD DE,CMOS
LD BC,0x000B
LDIR
LD HL,TotMem
LD DE,FreeMem
LD B,0x0F
LD A,0x20
.L6 LD (HL),A
INC HL
LD (DE),A
INC DE
DJNZ .L6
PUSH IY
SPDSS DSSF.INFOMEM
POP IY
PUSH BC
LD B,H
LD C,L
LD HL,0x0000
LD DE,WorkBuffer
SRL B
RR C
RR H
RR L
SRL B
RR C
RR H
RR L
PUSH DE
CALL ConvNumTxt32
SUB A
LD (DE),A
POP HL
LD DE,TotMem
CALL CorrBigNum
INC DE
LD HL,Bytes
LD BC,0x0005
LDIR
POP HL
LD B,H
LD C,L
LD HL,0x0000
LD DE,WorkBuffer
SRL B
RR C
RR H
RR L
SRL B
RR C
RR H
RR L
PUSH DE
CALL ConvNumTxt32
SUB A
LD (DE),A
POP HL
LD DE,FreeMem
CALL CorrBigNum
INC DE
LD HL,Bytes
LD BC,0x0005
LDIR
MAKEWINDOW WINSUBOBJ.STORE
W_MAIN 224,64,192,114
W_FILL 4,2,184,10,COLORI.BLACK
W_TEXT 48,3,COLORI.WHITE,"System information"
W_TEXT 10,20,COLORP.HIGHGRAY,"FN version: \{FLEX_VERS.NAVIGATOR}"
W_TEXT 10,32,COLORP.HIGHGRAY,"BIOS version: "
BIOSver EQU $ - STRLEN(" ") - 1
W_TEXT 10,44,COLORP.HIGHGRAY,"DOS version: "
DOSvers EQU $ - STRLEN(" ") - 1
W_TEXT 10,56,COLORP.HIGHGRAY,"CMOS: "
CMOS EQU $ - STRLEN(" ") - 1
W_TEXT 10,70,COLORP.HIGHGRAY,"Total memory: "
TotMem EQU $ - STRLEN(" ") - 1
W_TEXT 10,82,COLORP.HIGHGRAY,"Free memory: "
FreeMem EQU $ - STRLEN(" ") - 1
W_BUTTON 60,96,72,14
W_TEXT 88,99,COLORP.HIGHGRAY,"Ok",0
W_END
SysInfoLoop: LD IX,SysInfoTab
CALL TestCoords
SPDSS DSSF.SCANKEY
JR Z,SysInfoLoop
LD A,B
OR A
JR NZ,SysInfoLoop
LD A,E
CP 0x1B
JR Z,SysInfoExt
CP 0x0D
JR Z,SysInfoExt
RES 5,A
CP 'O'
JR NZ,SysInfoLoop
SysInfoExt
WINDOWCLOSE
RET
Bytes: DEFB "bytes"
Present: DEFB "Present "
NotPresent: DEFB "Not present"
;[]==========================================================[]
DiskInfoR: LD HL,SetInvert
;!FIXIT <09><EFBFBD><E0AEA2><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD> <20><><EFBFBD> <20><><EFBFBD> <20><><EFBFBD> <20><><EFBFBD> SAFE_PORTY
PUSH HL
SETPORT WINSP.Y_PORT,0xC0
CALL SetClock
PUSH IY
SPDSS DSSF.CURDISK
POP IY
ADD A,'A'
LD (.CrDrive),A
;!TEST
;LD IX,0x0000
;LD HL,0x0000
;LD DE,WorkBuffer
;LD BC,0x0105
;SUB 'A'
;PUSH IY
;RST ToDSS.DRV ;!FIXIT rst 0x18
;POP IY
;JP C,SetMouse
LD B,0
CALL .get_info
EX AF,AF'
LD A,D
AND E
EXX
AND D
AND E
INC A
EXX
JR Z,.no_full_info
; <20><><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD>
PUSH DE ; ᢮<><E1A2AE><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>஢, <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD>
PUSH HL ; <20><><20><><EFBFBD>-<2D><> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>஢, <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD>
PUSH BC ; ࠧ<><E0A0A7><EFBFBD><><E1A5AA><EFBFBD><EFBFBD> <20> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
EXX
PUSH DE ; ᢮<><E1A2AE><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>஢, <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD>
PUSH HL ; <20><><20><><EFBFBD>-<2D><> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>஢, <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD>
EX AF,AF'
PUSH AF ; ࠧ<><E0A0A7><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><E1A5AA><EFBFBD><EFBFBD><EFBFBD>
EX AF,AF'
.no_full_info: PUSH AF
; parsing
LD D,0
LD HL,WorkBuffer
; <20><><EFBFBD> <20> HL <20><><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD> "<22><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD>"
LD E,(HL)
ADD HL,DE
INC HL
; <20><><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD> "<22><><EFBFBD><E0A8A9><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD> <20><>᪠"
LD A,(HL)
PUSH HL
INC HL
LD (.serial_1),HL
INC HL
LD (.serial_2),HL
INC HL
LD (.serial_3),HL
INC HL
LD (.serial_4),HL
POP HL
LD E,A
ADD HL,DE
INC HL ; 㪠<><E3AAA0><EFBFBD> <20><> <20><><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD> "<22><><20><>᪠"
INC HL
; <20><>
LD (.buf_label),HL
LD DE,.NoLabel
LD B,11
.loop1: SUB A
CP (HL)
JR Z,.DiskI2
LD A,(DE)
CP (HL)
JR NZ,.DiskI1
INC HL
INC DE
DJNZ .loop1
.DiskI1: LD HL,WorkBuffer+0x2B
.buf_label EQU $-2
JR NZ,.DiskI21F
.DiskI2: LD HL,.NoLabelT
.DiskI21F: LD DE,.Dlabel
LD BC,.Dlabel.Size
LDIR
; <20><><EFBFBD><E0A8A9><EFBFBD>
LD DE,.SerialN
LD A,(WorkBuffer+0x2A)
.serial_4 EQU $-2
CALL ConvHexTxt
LD A,(WorkBuffer+0x29)
.serial_3 EQU $-2
CALL ConvHexTxt
INC DE
LD A,(WorkBuffer+0x28)
.serial_2 EQU $-2
CALL ConvHexTxt
LD A,(WorkBuffer+0x27)
.serial_1 EQU $-2
CALL ConvHexTxt
MAKEWINDOW WINSUBOBJ.STORE
W_MAIN 192,80,256,98
W_FILL 4,2,248,10,COLORI.BLACK
W_TEXT 106,3,COLORI.WHITE,"Disk info"
W_TEXT 10,20,COLORP.HIGHGRAY,"Current drive: "
.CrDrive: EQU $ - 2
W_TEXT 10,32,COLORP.HIGHGRAY,"Total disk space:"
W_TEXT 10,44,COLORP.HIGHGRAY,"Avaliable disk space:"
W_TEXT 10,56,COLORP.HIGHGRAY,"Disk label: "
.Dlabel: EQU $ - STRLEN(" ") - 1
.Dlabel.Size EQU $ - .Dlabel - 1
W_TEXT 10,68,COLORP.HIGHGRAY,"Serial volume number: - "
.SerialN: EQU $ - STRLEN(" - ") - 1
W_BUTTON 92,80,72,14
W_TEXT 120,83,COLORP.HIGHGRAY,"Ok"
W_END
POP AF
JR NZ,.calc_size
LD B,1
CALL .get_info
PUSH DE ; ᢮<><E1A2AE><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>஢, <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD>
PUSH HL ; <20><><20><><EFBFBD>-<2D><> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>஢, <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD>
PUSH BC ; ࠧ<><E0A0A7><EFBFBD><><E1A5AA><EFBFBD><EFBFBD> <20> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
EXX
PUSH DE ; ᢮<><E1A2AE><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>஢, <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD>
PUSH HL ; <20><><20><><EFBFBD>-<2D><> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>஢, <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD>
PUSH AF ; ࠧ<><E0A0A7><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><E1A5AA><EFBFBD><EFBFBD><EFBFBD>
.calc_size: POP AF ; ࠧ<><E0A0A7><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><E1A5AA><EFBFBD><EFBFBD><EFBFBD>
POP HL
POP DE
EXX
POP BC
POP HL
POP DE
; --> (HL':HL)*BC*A, (DE':DE)*BC*A = B':HL'HL, C':DE':DE
EXX
LD BC,0
EXX
SRL B
RR C
RRCA
JR C,.loop_2
.loop_1: SLA L
RL H
EXX
RL L
RL H
RL B
EXX
SLA E
RL D
EXX
RL E
RL D
RL C
EXX
RRCA
JP NC,.loop_1
.loop_2: SLA L
RL H
EXX
RL L
RL H
RL B
EXX
SLA E
RL D
EXX
RL E
RL D
RL C
EXX
SRL B
RR C
JP NC,.loop_2
; <-- B':HL'HL, C':DE':DE
EXX
LD A,C
LD (.freeSpace_h),A
LD (.freeSpace_m),DE
LD A,B
PUSH HL
EXX
LD (.freeSpace_l),DE
POP BC
; <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><20><>騩 ࠧ<><E0A0A7><EFBFBD> <20> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
; A:BC:HL - <20><><20><><EFBFBD> <20><><EFBFBD><E0A5A2><EFBFBD>
LD DE,WorkBuffer
CALL ConvNumTxt40
SUB A
LD (DE),A
LD HL,WorkBuffer
LD DE,WorkBuffer+0x100
CALL CorrBigNum
LD A,' '
LD (DE),A
INC DE
LD HL,Bytes
LD BC,5;Bytes.Size
LDIR
SUB A
LD (DE),A
; <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>塞 ᢮<><E1A2AE><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD> <20> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
LD A,0
.freeSpace_h EQU $-1
LD BC,0
.freeSpace_m EQU $-2
LD HL,0
.freeSpace_l EQU $-2
LD DE,WorkBuffer+0x80
; A:BC:HL - <20><><20><><EFBFBD> <20><><EFBFBD><E0A5A2><EFBFBD>
CALL ConvNumTxt40
SUB A
LD (DE),A
LD HL,WorkBuffer+0x80
LD DE,WorkBuffer+0x180
CALL CorrBigNum
LD A,' '
LD (DE),A
INC DE
LD HL,Bytes
LD BC,5;Bytes.Size
LDIR
SUB A
LD (DE),A
; <20><EFBFBD><><E0A0A7>
LD HL,WorkBuffer+0x100
LD DE,0x0128
LD BC,0x0070
LD A,0x80
CALL PrnTxtLnIFF
LD HL,WorkBuffer+0x180
LD DE,0x0013A
LD BC,0x007C
LD A,0x80
CALL PrnTxtLnIFF
CALL SetMouse
.DiskInfoLoop: LD IX,DiskInfoTab
CALL TestCoords
SPDSS DSSF.SCANKEY
JR Z,.DiskInfoLoop
LD A,B
OR A
JR NZ,.DiskInfoLoop
LD A,E
CP 0x1B
JR Z,.Ext
CP 0x0D
JR Z,.Ext
RES 5,A
CP 'O'
JR NZ,.DiskInfoLoop
.Ext:
WINDOWCLOSE
RET
.get_info: LD A,(.CrDrive)
SUB 'A'
OR 0x80
LD HL,WorkBuffer
PUSH IY
SPDSS DSSF.DSKINFO
POP IY
RET NC
; <20><20><EFBFBD><E8A8A1>, <20><> <20><><EFBFBD><EFBFBD><EFBFBD>塞 ࠧ<><E0A0A7><EFBFBD><><E1A2AE><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD> <20> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><><E0A0A7><EFBFBD>
XOR A
LD H,A
LD L,A
LD D,A
LD E,A
EXX
LD H,A
LD L,A
LD D,A
LD E,A
LD B,A
LD C,A
RET
.NoLabel DEFB "NO NAME "
.NoLabelT DEFB "no label "
ConvHexTxt PUSH AF
RRCA
RRCA
RRCA
RRCA
CALL ConvHexT1
POP AF
ConvHexT1 AND 0x0F
ADD A,0x90
DAA
ADC A,0x40
DAA
LD (DE),A
INC DE
RET
CorrBigNum PUSH HL
SUB A
LD C,A
.L1 INC C
INC HL
CP (HL)
JR NZ,.L1
POP HL
LD A,C
.L2 SUB 0x03
JR Z,.L5
JR NC,.L2
ADD A,0x03
LD B,A
.L3 LD A,(HL)
LD (DE),A
INC HL
INC DE
DJNZ .L3
.L4 LD A,(HL)
OR A
RET Z
LD A,' '
LD (DE),A
INC DE
.L5 LDI
LDI
LDI
JR .L4
;[]==========================================================[]
VersionR
SETPORT WINSP.Y_PORT,0xC0
LD HL,SetInvert
PUSH HL
MAKEWINDOW WINSUBOBJ.STORE
W_MAIN 192,64,256,152
W_FILL 4,2,248,10,COLORI.BLACK
W_TEXT 110,3,COLORI.WHITE,"Version"
W_TEXT 93,20,COLORP.HIGHGRAY,"Flex Navigator"
W_TEXT 76,38,COLORP.HIGHGRAY,"Component versions:"
W_TEXT 70,48,COLORP.HIGHGRAY,"Manager:"
W_TEXT 128,48,COLORP.HIGHGRAY,"\{FLEX_VERS.NAVIGATOR}"
W_TEXT 65,58,COLORP.HIGHGRAY,"File Editor:"
W_TEXT 128,58,COLORP.HIGHGRAY,"\{FLEX_VERS.EDITOR}"
W_TEXT 61,68,COLORP.HIGHGRAY,"File Viewer:"
W_TEXT 128,68,COLORP.HIGHGRAY,"\{FLEX_VERS.VIEWER}"
W_TEXT 40,86,COLORP.HIGHGRAY,"2000, Enin Anton"
W_TEXT 40,96,COLORP.HIGHGRAY,"2021, Mikhaltchenkov Dmitry"
W_TEXT 40,106,COLORP.HIGHGRAY,"2022, Belyanskiy Anatoliy"
W_TEXT 40,116,COLORP.HIGHGRAY,"(C) Sprinter Team build ",0 ; <20><><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><E2A0A2><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD> ᡮન
W_BUTTON 92,133,72,14
W_TEXT 120,136,COLORP.HIGHGRAY,"OK"
W_END
CALL ResFire
VersionLoop LD IX,VersionTab
CALL TestCoords
SPDSS DSSF.SCANKEY
JR Z,VersionLoop
LD A,B
OR A
JR NZ,VersionLoop
LD A,E
CP 0x1B
JR Z,VersionExt
CP 0x0D
JR NZ,VersionLoop
VersionExt
WINDOWCLOSE
RET