335 lines
4.6 KiB
Plaintext
335 lines
4.6 KiB
Plaintext
|
||
; 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
|