341 lines
5.1 KiB
Plaintext
341 lines
5.1 KiB
Plaintext
|
||
; 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
|