flex_nav/rez3_fnmisc.a80
savelij13 ac87c5571e FlexNavigator 1.16.04
- сортировка и копирование файлов/директорий теперь не использует
  страницы панелей.
- убрано переставление страниц в списке выделенных при сортировке.
- доделано копирование директорий, пока только той что под курсором.
- сделано/переделано измерение размера директории в байтах под курсором.
- добавлено описание форм полей ввода.
- перенесены некоторые tab таблицы.
- перенесены буферы для загрузки ini файликов.
2025-09-07 22:15:01 +03:00

1001 lines
17 KiB
Plaintext
Raw Blame History

This file contains invisible Unicode characters

This file contains invisible Unicode characters that are indistinguishable to humans but may be processed differently by a computer. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

; LAST UPDATE: 02.09.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 A,HIGH (CPU3)
CALL GET_HANDLE_ADR
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 A,HIGH (CPU3)
CALL GET_HANDLE_ADR
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
;[]==========================================================[]
QuitConfirmWin
MAKEWINDOW WINSUBOBJ.STORE
W_MAIN 208,88,224,50
W_FILL 4,2,216,10,COLORI.BLACK
W_TEXT 104,3,COLORI.WHITE,"Quit"
W_TEXT 28,19,COLORP.HIGHGRAY,"Do you want quit Flex Navigator ?"
W_BUTTON 32,32,72,14
W_TEXT 58,35,COLORP.HIGHGRAY,"Yes"
W_BUTTON 120,32,72,14
W_TEXT 150,35,COLORP.HIGHGRAY,"No"
W_END
.Loop LD IX,REZ3TAB.QuitTab
CALL CheckCoordsMouse
SPDSS DSSF.SCANKEY
JR Z,.Loop
LD A,B
OR A
JR NZ,.Loop
LD A,E
CP 0x1B
JR Z,.Abort
CP 0x0D
JR Z,.OK
RES 5,A
CP 'Y'
JR Z,.OK
CP 'N'
JR NZ,.Loop
.Abort
WINDOWCLOSE
SCF
RET
.OK
WINDOWCLOSE
OR A
RET