; 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