; LAST UPDATE: 23.04.2025 savelij ;[]==========================================================[] HelpR LD A,0x01 LD (JUMPS.CMOSPrint),A SETPORT WINSP.Y_PORT,0xC0 MAKEWINDOW WINSUBOBJ.STORE W_MAIN 64,16,512,224 W_FILL 4,2,504,10,COLORI.BLACK W_TEXT 248,3,COLORI.WHITE,"Help" W_BUTTON 220,206,72,14 W_TEXT 250,209,COLORP.HIGHGRAY,"Ok" W_BORDER 8,16,496,187 W_FILL 10,17,476,185,COLORI.WHITE W_ICONUPARROW 486,17 W_ICONDOWNARROW 486,194 W_END CALL InitHelpTxt CALL PrnHelpPg CALL JUMPS.ResFire HelpLoop LD IX,HelpTab CALL JUMPS.TestCoords SPDSS DSSF.SCANKEY JR Z,HelpLoop LD A,B OR A JR NZ,HelpLoop LD A,E ; Е-ASCII код CP 0x1B ; Esc JP Z,HelpExit CP 0x0D ; Enter JP Z,HelpExit RES 5,A CP 'O' JP Z,HelpExit OR A JR NZ,HelpLoop ; Ждем функцион.клавиши LD HL,HelpLoop PUSH HL LD A,D CP SC.X8 ; Стрелка вверх JP Z,HLineUp CP SC.X2 ; Стрелка вниз JP Z,HLineDown CP SC.X9 ; PageUp JP Z,HPageUp CP SC.X3 ; PageDown JP Z,HPageDown CP SC.X7 ; Home JP Z,HHome CP SC.X1 ; End JP Z,HEnd RET HelpExit WINDOWCLOSE SUB A LD (JUMPS.CMOSPrint),A RET ;[]----------------------------------------------------------[] InitHelpTxt LD HL,HelpText LD (PageShift),HL LD HL,0x0000 LD (CHLine),HL LD HL,HelpText LD DE,0x0000 InHelp1 LD BC,0x1000 SUB A CPIR INC DE LD A,(HL) INC A JR NZ,InHelp1 DEC DE LD (EHLines),DE LD IX,HelpVBar JP JUMPS.InitScrollBar PageShift DW 0 NextShift DW 0 HelpVBar DW 550 ; X позиция скролбара DW 41 ; Y позиция скролбара DW 169 ; Max длина скролбара DW 0 ; тек.длина скролбара DW HBarUp ; Адрес ячейки BarLeft DW HBarDn ; Адрес ячейки BarRight DW 23 ; Кол-во строк на странице EHLines DW 0 ; Общее кол-во строк CHLine DW 0 ; Первая строка на странице ;[]----------------------------------------------------------[] PrnHelpPg LD HL,(PageShift) LD B,34 PrnHPg1 PUSH BC CALL ClearHRect LD DE,80 LD C,B LD B,D LD A,(HL) INC A LD A,240 CALL NZ,JUMPS.PrnTxtLnIFF POP BC LD A,B ADD A,8 LD B,A CP 218 JR NZ,PrnHPg1 LD (NextShift),HL LD IX,HelpVBar JP JUMPS.PrnVScrBar ClearHRect PUSH HL PUSH BC GETPORT WINSP_CPU PUSH AF DI SETPORT WINSP_CPU,0x50 LD HL,WINSP_ADR + 40 LD IXL,B LD D,COLORP.WHITE + COLORI.WHITE ACCEL ACCELCMD.SET_BUFFER LD A,0xE8 ACCEL ACCELCMD.OFF LD B,0x08 ClHRect LD A,IXL SETPORT WINSP.Y_PORT,,0 ACCEL ACCELCMD.FILL LD (HL),D ACCEL ACCELCMD.OFF INC IXL DJNZ ClHRect POP AF SETPORT WINSP_CPU,,0 SETPORT WINSP.Y_PORT,0xC0 EI POP BC POP HL RET ;[]----------------------------------------------------------[] HHome LD HL,(PageShift) LD DE,HelpText OR A SBC HL,DE RET Z LD (PageShift),DE LD HL,0x0000 LD (CHLine),HL JP PrnHelpPg HEnd LD HL,(NextShift) LD A,(HL) INC A RET Z LD HL,HelpTextEnd DEC HL DEC HL PUSH HL LD DE,HelpText OR A SBC HL,DE LD C,L LD B,H POP HL LD DE,(EHLines) DEC HL LD A,0x17 .L1 EX AF,AF' SUB A DEC DE CPDR JP PO,.L2 EX AF,AF' DEC A JR NZ,.L1 INC HL .L2 INC HL LD (PageShift),HL INC DE LD (CHLine),DE JP PrnHelpPg HLineUp LD HL,(PageShift) LD DE,HelpText OR A SBC HL,DE RET Z LD C,L LD B,H ADD HL,DE DEC HL SUB A CPD JP PO,HLnUp0 CPDR INC HL HLnUp0 INC HL LD (PageShift),HL LD DE,HelpTextEnd DEC DE EX DE,HL OR A SBC HL,DE EX DE,HL LD C,E LD B,D LD A,0x17 HLnUp1 EX AF,AF' SUB A CPIR JP PO,HLnUp2 EX AF,AF' DEC A JR NZ,HLnUp1 HLnUp2 LD (NextShift),HL LD HL,(CHLine) DEC HL LD (CHLine),HL LD DE,0x222A CALL ScrHELPDnUp LD B,34 CALL ClearHRect LD HL,(PageShift) LD DE,80 LD C,B LD B,D LD A,(HL) INC A LD A,240 CALL NZ,JUMPS.PrnTxtLnIFF LD IX,HelpVBar JP JUMPS.PrnVScrBar HLineDown LD HL,(NextShift) LD A,(HL) INC A RET Z PUSH HL LD DE,HelpTextEnd EX DE,HL OR A SBC HL,DE EX DE,HL LD C,E LD B,D SUB A CPIR LD (NextShift),HL LD HL,(PageShift) LD DE,HelpTextEnd EX DE,HL OR A SBC HL,DE EX DE,HL LD C,E LD B,D SUB A CPIR LD (PageShift),HL LD HL,(CHLine) INC HL LD (CHLine),HL LD DE,0x2A22 CALL ScrHELPDnUp POP HL LD B,210 CALL ClearHRect LD DE,80 LD C,B LD B,D LD A,(HL) INC A LD A,240 CALL NZ,JUMPS.PrnTxtLnIFF LD IX,HelpVBar JP JUMPS.PrnVScrBar ;На вход: ; D - Y откуда ; Е - Y куда ScrHELPDnUp GETPORT WINSP_CPU PUSH AF DI SETPORT WINSP_CPU,0x50 LD HL,WINSP_ADR + 40 LD B,0xE8 ACCEL ACCELCMD.SET_BUFFER LD A,0xB0 ACCEL ACCELCMD.OFF ScHelp1 LD A,D SETPORT WINSP.Y_PORT,,0 ACCEL ACCELCMD.COPY_VERT LD A,(HL) ACCEL ACCELCMD.OFF LD A,E SETPORT WINSP.Y_PORT,,0 ACCEL ACCELCMD.COPY_VERT LD (HL),A ACCEL ACCELCMD.OFF INC HL DJNZ ScHelp1 POP AF SETPORT WINSP_CPU,,0 SETPORT WINSP.Y_PORT,0xC0 EI RET HPageUpM CALL HPageUp RET C LD B,0x0A HUpM1 PUSH BC SPMOUSE MOUSEF.READ_STATE POP BC BIT 0,A RET Z HALT DJNZ HUpM1 HUpM2 CALL HPageUp RET C SPMOUSE MOUSEF.READ_STATE BIT 0,A RET Z JR HUpM2 HPageUp LD HL,(PageShift) LD DE,HelpText OR A SBC HL,DE SCF RET Z LD C,L LD B,H ADD HL,DE LD DE,(CHLine) DEC HL LD A,0x18 .L1 EX AF,AF' SUB A DEC DE CPDR JP PO,.L2 EX AF,AF' DEC A JR NZ,.L1 INC DE INC HL .L2 INC HL LD (PageShift),HL LD (CHLine),DE CALL PrnHelpPg OR A RET HPageDownM CALL HPageDown RET C LD B,0x0A HDnM1 PUSH BC SPMOUSE MOUSEF.READ_STATE POP BC BIT 0,A RET Z HALT DJNZ HDnM1 HDnM2 CALL HPageDown RET C SPMOUSE MOUSEF.READ_STATE BIT 0,A RET Z JR HDnM2 HPageDown LD HL,(NextShift) LD A,(HL) INC A SCF RET Z LD (PageShift),HL LD HL,(CHLine) LD DE,0x0017 ADD HL,DE LD (CHLine),HL CALL PrnHelpPg OR A RET ;[]==========================================================[] HelpTab DW 550,566, 33, 41,%0000000000000011,0,HLineUp,0 DW 550,566,210,218,%0000000000000011,0,HLineDown,0 DW 550,566, 41, 0,%0000000000000000,0,HPageUpM,0 HBarUp EQU $ - 10 DW 550,566, 0,210,%0000000000000000,0,HPageDownM,0 HBarDn EQU $ - 12 DW 284,356,222,236,%0000000000100001,0,HelpExit,0 DW 0, 64, 0,256,%0000000000100000,0,HelpExit,0 DW 576,640, 0,256,%0000000000100000,0,HelpExit,0 DW 0,640, 0, 16,%0000000000100000,0,HelpExit,0 DW 0,640,240,256,%0000000000100000,0,HelpExit,0 DW 0x8000