flex_nav/plugins/fneditor/feprn.a80

341 lines
5.1 KiB
Plaintext
Raw Permalink 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.

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: 20.03.2025 savelij
;[]==========================================================[]
FEPrintFile CALL FEResCursor
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,FEPrintTab
CALL JUMPS.TestCoords
LD IX,FEProcessPrn
LD HL,(FEFileLenght)
LD A,L
LD L,H
LD H,0x00
OR A
JR Z,.InitPrn
INC HL
.InitPrn LD (IX+PROC.MAXL1),L
LD (IX+PROC.MAXH1),H
LD (IX+PROC.MAXL2),0X00
LD (IX+PROC.MAXH2),0x00
CALL JUMPS.InitProcess
LD A,(EditMode)
OR A
JP NZ,FEPrintHEX
FEPrintASCII LD HL,0x0000
LD (FETempShift),HL
LD HL,(FEFileLenght)
GETPORT WINSP.CPU1
PUSH AF
LD DE,(FETempShift)
LD A,D ;‚뤥«ï¥¬ ­®¬¥à áâà ­¨æë
AND 0xC0
RLCA
RLCA
EXX
LD E,A ;DE - €¤à¥á áâà ­¨æë ¢ ᯨ᪥
LD D,HIGH (PagesList)
LD A,(DE) ;’¥ª.áâà ­¨æ 
SETPORT WINSP.CPU1,,0
EXX
RES 7,D ;‚ª«.á 0x4000
SET 6,D
FEPrnASCII BIT 7,D
JR Z,PrnASC
RES 7,D
SET 6,D
EXX
INC E ;DE - €¤à¥á áâà ­¨æë ¢ ᯨ᪥
LD A,(DE) ;’¥ª.áâà ­¨æ 
SETPORT WINSP.CPU1,,0
EXX
PrnASC LD A,(DE)
INC DE
CALL FEPrintCHAR
JR C,FEPrnASCIIext
CALL FENxtPrnProc
DEC HL
LD A,H
OR L
JR NZ,FEPrnASCII
CALL FEEndJob
jr c,FEPrnASCIIext
LD DE,0x0000
CALL FENxtPrnProc
HALT
HALT
FEPrnASCIIext POP AF
SETPORT WINSP.CPU1,,0
WINDOWCLOSE
RET
FEPrintHEX LD HL,0x0000
LD (FETempShift),HL
LD HL,LineBuffer
LD BC,0x4E20
.L1 LD (HL),C
INC L
DJNZ .L1
FEPrintHEXlp CALL FEPrnHEXline
JR C,FEPrintHEXext
LD HL,(FETempShift)
LD DE,0x0010 ;€¤à¥á ¤ ¬¯ +16
ADD HL,DE
LD (FETempShift),HL
JR FEPrintHEXlp
FEPrintHEXext CALL FEEndJob
OR A
JR NZ,.PrnHEXe
LD DE,0x0000
CALL FENxtPrnProc
HALT
HALT
.PrnHEXe
WINDOWCLOSE
RET
FEPrnHEXline LD IXL,0x00
LD IXH,B
LD HL,(FEFileLenght)
LD BC,(FETempShift)
OR A
SBC HL,BC
LD A,0x00
RET C
LD B,0x10
LD A,H
OR A
JR NZ,.PrnHLn
LD A,L
CP B
JR NC,.PrnHLn
LD B,L
.PrnHLn
GETPORT WINSP.CPU1
PUSH AF
LD DE,(FETempShift)
LD A,D ;‚뤥«ï¥¬ ­®¬¥à áâà ­¨æë
AND 0xC0
RLCA
RLCA
EXX
LD E,A ;DE - €¤à¥á áâà ­¨æë ¢ ᯨ᪥
LD D,HIGH (PagesList)
LD A,(DE) ;’¥ª.áâà ­¨æ 
SETPORT WINSP.CPU1,,0
EXX
RES 7,D ;‚ª«.á 0x4000
SET 6,D
LD HL,LineBuffer+1 ;¡ãä¥à áâப¨
EXX
LD HL,LineBuffer+0x3D ;¬¥áâ® ¤«ï ASCII ª®¤®¢
EXX
LD (HL),'0'
INC L
LD A,(FETempShift+1)
CALL FEPutHexNumb
LD A,(FETempShift)
CALL FEPutHexNumb
LD (HL),':'
INC L
INC L
INC L
LD A,B
OR A
JR Z,PrnHLp2
FEPrnHLoop BIT 7,D
JR Z,PrnHLp1
RES 7,D
SET 6,D
EXX
INC E ;DE - €¤à¥á áâà ­¨æë ¢ ᯨ᪥
LD A,(DE) ;’¥ª.áâà ­¨æ 
SETPORT WINSP.CPU1,,0
EXX
PrnHLp1 LD A,(DE)
INC DE
EXX
CP 0x20
JR NC,.L1
LD A,'.'
.L1 LD (HL),A
INC L
EXX
CALL FEPutHexNumb ;<3B>à®æ¥¤ãà  ª®­¢¥àâ 
INC L
INC IXL ;“¢¥«¨ç.ª®«-¢® ¢¢¥¤¥­­ëå ¡ ©â®¢
LD A,IXL
AND 0x03
JR NZ,.L2
INC L
.L2 DJNZ FEPrnHLoop
PrnHLp2 POP AF
SETPORT WINSP.CPU1,,0
;<3B>à®æ¥¤ãà  ®âç¨á⪨ § ª®­ç¨¢è¨åáï ¡ ©â®¢
FillHeP LD A,0x10 ;Œ ªá.¡ ©â®¢
SUB IXL ;’¥ª.ª®«-¢® ¡ ©â®¢
JR Z,FEFillP2
LD B,A
LD C,0x20
FEFillP1 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 ¯à®¡¥« 
AND 0x03
JR NZ,.L1
INC L
.L1 DJNZ FEFillP1
FEFillP2 LD HL,LineBuffer
LD B,0x4E
FEPrnHEX LD A,(HL)
INC HL
CALL FEPrintCHAR
LD A,0x01
RET C
DJNZ FEPrnHEX
LD A,0x0D
CALL FEPrintCHAR
RET C
LD A,0x0A
CALL FEPrintCHAR
RET
FEPrintCHAR 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,FEPrintTab
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,FEPrnCHAR
CP 0x1B
SCF
RET Z
RES 5,A
CP 'S'
JR NZ,FEPrnCHAR
FEStopPrint SCF
RET
FEPrnCHAR 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 FEPrintCHAR
FEPrintTab DEFW 0x011C,0x0164,0x0080,0x008E,0x01,0x0000,FEStopPrint,0x0000
DEFW 0x8000
FENxtPrnProc LD A,E
OR A
RET NZ
PUSH HL
PUSH DE
PUSH BC
EXX
PUSH DE
LD IX,FEProcessPrn
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
FEEndJob: PUSH AF
PUSH HL
PUSH BC
EXX
PUSH DE
ld a,0x0C
CALL FEPrintCHAR
jr c,.print_cancel
ld a,0x1B
CALL FEPrintCHAR
jr c,.print_cancel
ld a,0x40
CALL FEPrintCHAR
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
FEProcessPrn DEFW 0x00BA
DEFW 0x0071
DEFW 0x010C
DEFW 0x0000
DEFW 0x0000
DEFW 0x0000
DEFW 0x0000
DEFW 0x0000
DEFW 0x0000
DEFB 0x4F