966 lines
16 KiB
Plaintext
966 lines
16 KiB
Plaintext
|
||
; 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
|