flex_nav/plugins/fnviewer/fvprn.a80

335 lines
4.6 KiB
Plaintext
Raw Permalink Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

; LAST UPDATE: 24.03.2025 savelij
;[]==========================================================[]
FVPrintFile
MAKEWINDOW WINSUBOBJ.STORE
W_MAIN 168,96,304,50
W_FILL 4,2,296,10,COLORI.BLACK
W_TEXT 132,3,COLORI.WHITE,"Print file"
W_BORDER 16,16,272,12
W_FILL 18,17,268,10,COLORI.WHITE
W_BUTTON 116,32,72,14
W_TEXT 140,35,COLORP.HIGHGRAY,"Stop"
W_END
LD IX,PrintTab
CALL JUMPS.TestCoords
LD IX,ProcessPrn
LD HL,(FileLenght)
LD DE,(FileLenght+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 JUMPS.InitProcess
LD A,(ViewMode)
OR A
JP NZ,PrintHEX
PrintASCII LD HL,0x0000
LD (TempShift),HL
LD (TempShift+2),HL
LD HL,(FileLenght)
LD BC,(FileLenght+2)
GETPORT WINSP.CPU1
PUSH AF
CALL InitFPages
PrnASCII CALL TestFPages
LD A,(DE)
INC DE
CALL FVPrintCHAR
JR C,PrnASCIIext
CALL FVNxtPrnProc
LD A,H
OR L
JR NZ,.L1
DEC BC
.L1 DEC HL
LD A,H
OR L
OR B
OR C
JR NZ,PrnASCII
CALL EndJob
jr c,PrnASCIIext
LD DE,0x0000
CALL FVNxtPrnProc
HALT
HALT
PrnASCIIext POP AF
SETPORT WINSP.CPU1,,0
WINDOWCLOSE
RET
PrintHEX LD HL,0x0000
LD (TempShift),HL
LD (TempShift+2),HL
LD HL,LineBuffer
LD BC,0x5020
.L1 LD (HL),C
INC L
DJNZ .L1
PrintHEXlp CALL PrnHEXline
JR C,PrintHEXext
LD HL,(TempShift)
LD DE,0x0010 ;€¤à¥á ¤ ¬¯ +16
ADD HL,DE
LD (TempShift),HL
LD HL,(TempShift+2)
LD E,D
ADC HL,DE
LD (TempShift+2),HL
JR PrintHEXlp
PrintHEXext CALL EndJob
OR A
JR NZ,PrnHEXe
LD DE,0x0000
CALL FVNxtPrnProc
HALT
HALT
PrnHEXe
WINDOWCLOSE
RET
PrnHEXline LD IXL,0x00
LD HL,(FileLenght)
LD BC,(TempShift)
OR A
SBC HL,BC
EX DE,HL
LD HL,(FileLenght+2)
LD BC,(TempShift+2)
SBC HL,BC
LD A,0x00
RET C
LD B,0x10
JR NZ,PrnHLn
LD A,D
OR A
JR NZ,PrnHLn
OR E
LD A,0x00
SCF
RET Z
LD A,E
CP B
JR NC,PrnHLn
LD B,E
PrnHLn
GETPORT WINSP.CPU1
PUSH AF
CALL InitFPages
LD HL,LineBuffer+1 ;¡ãä¥à áâப¨
EXX
LD HL,LineBuffer+0x3F ;¬¥áâ® ¤«ï ASCII ª®¤®¢
EXX
LD A,(TempShift+3) ;Š« ¤¥¬ ᬥ饭¨¥
CALL PutHexNumb ;®â ­ ç «  ä ¨« 
LD A,(TempShift+2)
CALL PutHexNumb
LD A,(TempShift+1)
CALL PutHexNumb
LD A,(TempShift)
CALL PutHexNumb
LD (HL),":"
INC L
INC L
PrnHLoop CALL TestFPages
LD A,(DE)
INC DE
PUSH AF
CALL PutHexNumb
POP AF
INC L
EXX
CP 0x20
JR NC,.L1
LD A,"."
.L1 LD (HL),A
INC L
EXX
INC IXL
LD A,IXL
CP 0x04
JR Z,.PrHNx1
CP 0x08
JR Z,.PrHNx1
CP 0x0C
JR NZ,.L2
.PrHNx1 INC L
.L2 DJNZ PrnHLoop
POP AF
SETPORT WINSP.CPU1,,0
LD A,0x10
SUB IXL
JR Z,.FillP2
LD B,A
LD C,0x20
.FillP1 LD (HL),C
INC L
LD (HL),C
INC L
INC L
EXX
LD (HL),0x20
INC L
EXX
INC IXL
LD A,IXL ; 業âॠ2 ¯à®¡¥« 
CP 0x04
JR Z,.FlPNx1
CP 0x08
JR Z,.FlPNx1
CP 0x0C
JR NZ,.L3
.FlPNx1 INC L
.L3 DJNZ .FillP1
.FillP2 LD HL,LineBuffer
LD B,0x50
PrnHEX LD A,(HL)
INC HL
CALL FVPrintCHAR
LD A,0x01
RET C
DJNZ PrnHEX
LD A,0x0D
CALL FVPrintCHAR
RET C
LD A,0x0A
CALL FVPrintCHAR
RET
FVPrintCHAR LD IXL,A
PUSH IX
PUSH HL
PUSH DE
PUSH BC
EXX
PUSH DE
SPMOUSE MOUSEF.READ_STATE
BIT 0,A
JR Z,.PrnCH1
LD IX,PrintTab
CALL JUMPS.TestCoords
JR C,.PrnCH2
.PrnCH1
SPDSS DSSF.SCANKEY
LD A,E
.PrnCH2 POP DE
EXX
POP BC
POP DE
POP HL
POP IX
RET C
JR Z,FVPrnCHAR
CP 0x1B
SCF
RET Z
RES 5,A
CP "S"
JR NZ,FVPrnCHAR
FVStopPrint SCF
RET
FVPrnCHAR PUSH HL
PUSH DE
PUSH BC
EXX
PUSH DE
LD A,IXL
SPDSS DSSF.PRINT
POP DE
LD A,B
EXX
POP BC
POP DE
POP HL
RET NC
HALT
JR FVPrintCHAR
PrintTab DEFW 0x011C,0x0164,0x0080,0x008E,0x01,0x0000,FVStopPrint,0x0000
DEFW 0x8000
FVNxtPrnProc LD A,E
OR A
RET NZ
PUSH HL
PUSH DE
PUSH BC
EXX
PUSH DE
LD IX,ProcessPrn
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,.NxtProc
LD L,(IX+PROC.CURL2)
LD H,(IX+PROC.CURH2)
INC HL
LD (IX+PROC.CURL2),L
LD (IX+PROC.CURH2),H
.NxtProc CALL JUMPS.PrnProcess
POP DE
EXX
POP BC
POP DE
POP HL
RET
EndJob: PUSH AF
PUSH HL
PUSH BC
EXX
PUSH DE
ld a,0x0C
CALL FVPrintCHAR
jr c,.print_cancel
ld a,0x1B
CALL FVPrintCHAR
jr c,.print_cancel
ld a,0x40
CALL FVPrintCHAR
jr c,.print_cancel
POP DE
EXX
POP BC
POP HL
POP AF
ret
.print_cancel: POP DE
EXX
POP BC
POP HL
POP AF
SCF
RET
ProcessPrn DEFW 0x00BA
DEFW 0x0071
DEFW 0x010C
DEFW 0x0000
DEFW 0x0000
DEFW 0x0000
DEFW 0x0000
DEFW 0x0000
DEFW 0x0000
DEFB 0x4F