- MISC функции перенесены из 2 резидента в 3. - перераспределение TAB таблиц. - в описание Flex Navigator API добавлено описание глобальных переменных. FileViewer.flx 1.07 - мелкое исправление позиции вывода даты/времени. FileEditor.flx 1.11 - мелкое исправление позиции вывода даты/времени.
958 lines
17 KiB
Plaintext
958 lines
17 KiB
Plaintext
|
||
; LAST UPDATE: 14.08.2025 savelij
|
||
|
||
;[]==========================================================[]
|
||
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 ; §¤¥áì ¢áâ ¢«ï¥âáï ¤ â ᡮન
|
||
W_BUTTON 92,133,72,14
|
||
W_TEXT 120,136,COLORP.HIGHGRAY,"OK"
|
||
W_END
|
||
CALL WaitUnpressMouse
|
||
VersionLoop LD IX,REZ3TAB.VersionTab
|
||
CALL CheckCoordsMouse
|
||
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
|
||
|
||
;[]==========================================================[]
|
||
FileInfoR LD A,(IY+PANEL.FILES_ALL)
|
||
OR (IY+PANEL.FILES_ALL + 1)
|
||
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.FIRST_FILE)
|
||
LD H,(IY+PANEL.FIRST_FILE + 1)
|
||
LD E,(IY+PANEL.CURR_FILE)
|
||
LD D,(IY+PANEL.CURR_FILE + 1)
|
||
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 PointerMouseClock
|
||
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 ConvertNumbers_32b
|
||
LD A,0x20
|
||
LD (DE),A
|
||
INC DE
|
||
LD HL,.Bytes
|
||
LD BC,0x0005
|
||
LDIR
|
||
.L8 LD DE,.FDate
|
||
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,PointerMousePointer
|
||
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 ConvertNumbers_16b
|
||
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,"Date: "
|
||
.FDate 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 PointerMousePointer
|
||
.FileInfoLoop: LD IX,REZ3TAB.FileInfoTab
|
||
CALL CheckCoordsMouse
|
||
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"
|
||
.Bytes: DEFB "bytes"
|
||
|
||
;[]==========================================================[]
|
||
DiskInfoR: LD HL,SetInvert
|
||
;!FIXIT ¯à®¢¥à¨âì ¤«ï íâ® ®® ¨«¨ ¥â SAFE_PORTY
|
||
PUSH HL
|
||
SETPORT WINSP.Y_PORT,0xC0
|
||
CALL PointerMouseClock
|
||
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,PointerMousePointer
|
||
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
|
||
; ¢á¥ ¤ ë¥ ¥áâì
|
||
PUSH DE ; ᢮¡®¤ëå ª« áâ¥à®¢, ¬« ¤è ï ç áâì
|
||
PUSH HL ; ®¡é¥¥ ª®«-¢® ª« áâ¥à®¢, ¬« ¤è ï ç áâì
|
||
PUSH BC ; à §¬¥à ᥪâ®à ¢ ¡ ©â å
|
||
EXX
|
||
PUSH DE ; ᢮¡®¤ëå ª« áâ¥à®¢, áâ àè ï ç áâì
|
||
PUSH HL ; ®¡é¥¥ ª®«-¢® ª« áâ¥à®¢, áâ àè ï ç áâì
|
||
EX AF,AF'
|
||
PUSH AF ; à §¬¥à ª« áâ¥à ¢ ᥪâ®à å
|
||
EX AF,AF'
|
||
.no_full_info: PUSH AF
|
||
; parsing
|
||
LD D,0
|
||
LD HL,WorkBuffer
|
||
; âãâ ¢ HL ¤«¨ ¯®«ï "” ©«®¢ ï á¨á⥬ "
|
||
LD E,(HL)
|
||
ADD HL,DE
|
||
INC HL
|
||
; ¤«¨ ¯®«ï "‘¥à¨©ë© ®¬¥à ¤¨áª "
|
||
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 ; 㪠§ â¥«ì ¤«¨ã ¯®«ï "Œ¥âª ¤¨áª "
|
||
INC HL
|
||
; ¬¥âª
|
||
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
|
||
; á¥à¨©¨ª
|
||
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 ; ᢮¡®¤ëå ª« áâ¥à®¢, ¬« ¤è ï ç áâì
|
||
PUSH HL ; ®¡é¥¥ ª®«-¢® ª« áâ¥à®¢, ¬« ¤è ï ç áâì
|
||
PUSH BC ; à §¬¥à ᥪâ®à ¢ ¡ ©â å
|
||
EXX
|
||
PUSH DE ; ᢮¡®¤ëå ª« áâ¥à®¢, áâ àè ï ç áâì
|
||
PUSH HL ; ®¡é¥¥ ª®«-¢® ª« áâ¥à®¢, áâ àè ï ç áâì
|
||
PUSH AF ; à §¬¥à ª« áâ¥à ¢ ᥪâ®à å
|
||
.calc_size: POP AF ; à §¬¥à ª« áâ¥à ¢ ᥪâ®à å
|
||
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
|
||
; ¢ëç¨á«ï¥¬ ®¡é¨© à §¬¥à ¢ ¡ ©â å
|
||
; A:BC:HL - ç¨á«® ¤«ï ¯¥à¥¢®¤
|
||
LD DE,WorkBuffer
|
||
CALL ConvertNumbers_40b
|
||
SUB A
|
||
LD (DE),A
|
||
LD HL,WorkBuffer
|
||
LD DE,WorkBuffer + 0x100
|
||
CALL .CorrBigNum
|
||
LD A,' '
|
||
LD (DE),A
|
||
INC DE
|
||
LD HL,FileInfoR.Bytes
|
||
LD BC,5;Bytes.Size
|
||
LDIR
|
||
SUB A
|
||
LD (DE),A
|
||
; ¢ëç¨á«ï¥¬ ᢮¡®¤®¥ ¬¥áâ® ¢ ¡ ©â å
|
||
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
|
||
; ABCHL - ç¨á«® ¤«ï ¯¥à¥¢®¤
|
||
CALL ConvertNumbers_40b
|
||
SUB A
|
||
LD (DE),A
|
||
LD HL,WorkBuffer + 0x80
|
||
LD DE,WorkBuffer + 0x180
|
||
CALL .CorrBigNum
|
||
LD A,' '
|
||
LD (DE),A
|
||
INC DE
|
||
LD HL,FileInfoR.Bytes
|
||
LD BC,5;Bytes.Size
|
||
LDIR
|
||
SUB A
|
||
LD (DE),A
|
||
; ¢ë¢®¤ à §¬¥à®¢
|
||
LD HL,WorkBuffer + 0x100
|
||
LD DE,296
|
||
LD BC,112
|
||
LD A,COLORP.HIGHGRAY + COLORI.BLACK
|
||
CALL PrintTxtLine_IFF
|
||
LD HL,WorkBuffer + 0x180
|
||
LD DE,314
|
||
LD BC,124
|
||
LD A,COLORP.HIGHGRAY + COLORI.BLACK
|
||
CALL PrintTxtLine_IFF
|
||
CALL PointerMousePointer
|
||
.DiskInfoLoop: LD IX,REZ3TAB.DiskInfoTab
|
||
CALL CheckCoordsMouse
|
||
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
|
||
; ¥á«¨ ®è¨¡ª , â® ®¡ã«ï¥¬ à §¬¥à ᢮¡®¤®£® ¬¥áâ ¨ ¯®«ë© à §¬¥à
|
||
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
|
||
|
||
;[]==========================================================[]
|
||
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 ConvertNumbers_8b
|
||
LD A,'.'
|
||
LD (DE),A
|
||
INC DE
|
||
LD A,L
|
||
CALL ConvertNumbers_8b
|
||
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,.CMOStxt
|
||
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 ConvertNumbers_32b
|
||
SUB A
|
||
LD (DE),A
|
||
POP HL
|
||
LD DE,.TotMem
|
||
CALL DiskInfoR.CorrBigNum
|
||
INC DE
|
||
LD HL,FileInfoR.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 ConvertNumbers_32b
|
||
SUB A
|
||
LD (DE),A
|
||
POP HL
|
||
LD DE,.FreeMem
|
||
CALL DiskInfoR.CorrBigNum
|
||
INC DE
|
||
LD HL,FileInfoR.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: "
|
||
.CMOStxt 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"
|
||
W_END
|
||
SysInfoLoop: LD IX,REZ3TAB.SysInfoTab
|
||
CALL CheckCoordsMouse
|
||
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
|
||
|
||
Present: DEFB "Present "
|
||
NotPresent: DEFB "Not present"
|
||
|
||
;[]==========================================================[]
|
||
PrintFileR LD A,(IY+PANEL.FILES_ALL)
|
||
OR (IY+PANEL.FILES_ALL + 1)
|
||
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.FIRST_FILE)
|
||
LD H,(IY+PANEL.FIRST_FILE + 1)
|
||
LD E,(IY+PANEL.CURR_FILE)
|
||
LD D,(IY+PANEL.CURR_FILE + 1)
|
||
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.CURR_PATH
|
||
ADD HL,DE
|
||
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 LD HL,PrnFileName
|
||
SUB A
|
||
.L4 LDI
|
||
CP (HL)
|
||
JR NZ,.L4
|
||
LD (DE),A
|
||
LD IX,208
|
||
LD HL,WorkBuffer
|
||
LD DE,248
|
||
LD BC,100
|
||
LD A,COLORP.HIGHGRAY + COLORI.BLACK
|
||
CALL PrintPathLeft
|
||
LD IX,REZ3TAB.PrintFTab
|
||
CALL CheckCoordsMouse
|
||
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 + PROGRESSBAR.MAX_PAGES),L
|
||
LD (IX + PROGRESSBAR.MAX_PAGES + 1),H
|
||
LD (IX + PROGRESSBAR.MAX_PAGES + 2),E
|
||
LD (IX + PROGRESSBAR.MAX_PAGES + 3),0x00
|
||
CALL InitProgressBar
|
||
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 PointerMouseClock
|
||
LD HL,0xC000
|
||
LD DE,0x4000
|
||
LD A,(PrnFHandle)
|
||
SPDSS DSSF.READ
|
||
CALL PointerMousePointer
|
||
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 PointerMouseClock
|
||
LD A,(PrnFHandle)
|
||
PUSH DE
|
||
SPDSS DSSF.READ
|
||
POP BC
|
||
CALL PointerMousePointer
|
||
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,REZ3TAB.PrintFTab
|
||
CALL CheckCoordsMouse
|
||
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 + PROGRESSBAR.CURR_PAGE)
|
||
LD H,(IX + PROGRESSBAR.CURR_PAGE + 1)
|
||
INC HL
|
||
LD (IX + PROGRESSBAR.CURR_PAGE),L
|
||
LD (IX + PROGRESSBAR.CURR_PAGE + 1),H
|
||
LD A,H
|
||
OR L
|
||
JR NZ,.L1
|
||
LD L,(IX + PROGRESSBAR.CURR_PAGE + 2)
|
||
LD H,(IX + PROGRESSBAR.CURR_PAGE + 3)
|
||
INC HL
|
||
LD (IX + PROGRESSBAR.CURR_PAGE + 2),L
|
||
LD (IX + PROGRESSBAR.CURR_PAGE + 3),H
|
||
.L1 CALL DrawProgressBar
|
||
POP BC
|
||
POP DE
|
||
RET
|
||
|
||
ProcessFPrn: DW 186,113,268,0,0,0,0,0,0
|
||
DB COLORP.BLUE + COLORI.WHITE
|
||
PrnFileName: DB 13 DUP 0
|
||
PrnFileLen: DB 4 DUP 0
|
||
PrnMIndef: DB 0
|
||
PrnFHandle: DB 0
|