; LAST UPDATE: 24.03.2025 savelij FECSign: DB "FEC" HomeKeyFlag: DB 0 IndentFlag: DB 0 BracketsFlag: DB 0 ExitDlgFlag: DB 0 ;[]==========================================================[] ReadEditorIni: ld a,0 .iniReaded EQU $-1 and a ret nz inc a ld (.iniReaded),a PUSH IY SPDSS DSSF.CURDISK POP IY LD HL,WorkBuffer ADD A,'A' LD (HL),A INC HL LD (HL),':' INC HL PUSH IY SPDSS DSSF.CURDIR POP IY GETPORT WINSP.CPU1 PUSH AF LD A,(JUMPS.FNFUNCT) SETPORT WINSP.CPU1,,0 LD HL,ADDR.FlexDIRECTORY PUSH IY SPDSS DSSF.CHDIR POP IY EX AF,AF' POP AF SETPORT WINSP.CPU1,,0 EX AF,AF' JP C,.exit LD HL,SettingsFileName PUSH IY SPDSS DSSF.OPEN,,1 pop iy jr c,.exit ld (.file),a ld hl,LineBuffer push hl ld de,LineBuffer+1 ld (hl),0 ld bc,7 ldir pop hl ld de,7 PUSH IY SPDSS DSSF.READ pop iy jr c,.close ld hl,(LineBuffer) ld de,'EF' and a sbc hl,de jr nz,.close ld hl,LineBuffer+2 ld a,(hl) cp 'C' jr nz,.close inc hl ld a,(hl) ld (THomeString.param),a inc hl ld a,(hl) ld (CalcStartTabs.param),a inc hl ld a,(hl) ld (AutoBrackets),a inc hl ld a,(hl) ld (QuitAsk.param),a .close: ld a,0 .file EQU $-1 PUSH IY SPDSS DSSF.CLOSE pop IY .exit: LD HL,WorkBuffer PUSH IY SPDSS DSSF.CHDIR POP IY ret ;[]==========================================================[] EditorSetup: CALL PutString CALL FEResCursor LD A,(QuitAsk.param) ld (ExitDlgFlag),a CALL ParamToSymbol LD (ExitDlgFlg),A LD A,(THomeString.param) ld (HomeKeyFlag),a CALL ParamToSymbol LD (HomeKeyFlg),A LD A,(CalcStartTabs.param) ld (IndentFlag),a CALL ParamToSymbol LD (IndentFlg),A LD A,(AutoBrackets) ld (BracketsFlag),a CALL ParamToSymbol LD (BracketsFlg),A MAKEWINDOW WINSUBOBJ.STORE W_MAIN 200,80,240,110 W_FILL 4,2,232,10,COLORI.BLACK W_TEXT 84,3,COLORI.WHITE,"Editor settings" W_BORDER 16,19,20,11 W_FILL 18,20,16,9,COLORI.WHITE W_TEXT 20,21,COLORP.WHITE,"\xFF" ExitDlgFlg: EQU $ - 2 W_TEXT 40,22,COLORP.HIGHGRAY,"Confirmation of closing the editor" W_BORDER 16,35,20,11 W_FILL 18,36,16,9,COLORI.WHITE W_TEXT 20,37,COLORP.WHITE,"\xFF" HomeKeyFlg: EQU $-2 W_TEXT 40,38,COLORP.HIGHGRAY,"find first symbol on Home key" W_BORDER 16,51,20,11 W_FILL 18,52,16,9,COLORI.WHITE W_TEXT 20,53,COLORP.WHITE,"\xFF" IndentFlg: EQU $-2 W_TEXT 40,54,COLORP.HIGHGRAY,"auto Indent" W_BORDER 16,67,20,11 W_FILL 18,68,16,9,COLORI.WHITE W_TEXT 20,69,COLORP.WHITE,"\xFF" BracketsFlg: EQU $-2 W_TEXT 40,70,COLORP.HIGHGRAY,"auto Brackets" W_HORIZLINE 4,84,232 W_BUTTON 77,90,72,14 W_TEXT 96,93,COLORP.HIGHGRAY,"Cancel" W_BUTTON 160,90,64,14 W_TEXT 188,93,COLORP.HIGHGRAY,"Ok" W_END FESetupLoop: LD IX,FESetupTab CALL JUMPS.TestCoords SPDSS DSSF.SCANKEY JR Z,FESetupLoop LD A,E RES 5,A CP 0x1B JP Z,FESetupCancel CP 0x0D JP Z,FESetupOkey CP 'O' JP Z,FESetupOkey ld hl,FESetupLoop push hl CP 'B' JP Z,SetupAutoBracketsInvert CP 'C' JP Z,SetupConfirmDlgInvert CP 'H' JP Z,SetupHomeKeyInvert CP 'I' JP Z,SetupAutoIndentInvert ret ;A - parameter ;Out - A = A == 0 ? " " : "v" ParamToSymbol: OR A LD A,0xFE RET Z INC A RET CheckTxt: DEFB 0x00,0x00 SetupConfirmDlgInvert: LD HL,CheckTxt LD A,(ExitDlgFlag) XOR 0x01 LD (ExitDlgFlag),A call ParamToSymbol LD (HL),A LD DE,0x00DC LD BC,0x0065 LD A,0xF0 CALL JUMPS.PrnTxtLnIFF JP JUMPS.ResFire SetupHomeKeyInvert: LD HL,CheckTxt LD A,(HomeKeyFlag) XOR 0x01 LD (HomeKeyFlag),A call ParamToSymbol LD (HL),A LD DE,0x00DC LD BC,0x0075 LD A,0xF0 CALL JUMPS.PrnTxtLnIFF JP JUMPS.ResFire SetupAutoIndentInvert: LD HL,CheckTxt LD A,(IndentFlag) XOR 0x01 LD (IndentFlag),A call ParamToSymbol LD (HL),A LD DE,0x00DC LD BC,0x0085 LD A,0xF0 CALL JUMPS.PrnTxtLnIFF JP JUMPS.ResFire SetupAutoBracketsInvert: LD HL,CheckTxt LD A,(BracketsFlag) XOR 0x01 LD (BracketsFlag),A call ParamToSymbol LD (HL),A LD DE,0x00DC LD BC,0x0095 LD A,0xF0 CALL JUMPS.PrnTxtLnIFF JP JUMPS.ResFire FESetupOkey: ld a,(ExitDlgFlag) LD (QuitAsk.param),a LD A,(HomeKeyFlag) LD (THomeString.param),A ld A,(IndentFlag) LD (CalcStartTabs.param),A ld a,(BracketsFlag) LD (AutoBrackets),a PUSH IY SPDSS DSSF.CURDISK ;Write ini-file LD HL,WorkBuffer ADD A,'A' LD (HL),A INC HL LD (HL),':' INC HL SPDSS DSSF.CURDIR GETPORT WINSP.CPU1 PUSH AF LD A,(JUMPS.FNFUNCT) SETPORT WINSP.CPU1,,0 LD HL,ADDR.FlexDIRECTORY SPDSS DSSF.CHDIR EX AF,AF' POP AF SETPORT WINSP.CPU1,,0 EX AF,AF' JP C,.exit LD HL,SettingsFileName SPDSS DSSF.CREATE,,0x20 jr c,.exit ld (.file),a jr c,.close ld hl,FECSign ld de,7 SPDSS DSSF.WRITE .close: ld a,0 .file EQU $-1 SPDSS DSSF.CLOSE .exit: LD HL,WorkBuffer SPDSS DSSF.CHDIR POP IY FESetupCancel: WINDOWCLOSE RET ;[]==========================================================[] ;Формат таблицы ; +00 2 Xmin ; +02 2 Xmax ; +04 2 Ymin ; +06 2 Ymax ; +08 2 0 - простой об'ект ; бит 0 - кнопка ; бит 1 - рабочая кнопка ; бит 2 - инверт 1 ; бит 3 - статичный инверт ; бит 4 - программа запускается без адреса возвр. ; и без огня ; бит 5 - программа запускается без адреса возвр. ; по левой кнопке огня ; бит 6 - программа запускается без адреса возвр. ; по правой кнопке огня ; бит 7 - вызвать функцию закрытия окна перед ; запуском программы без огня ; бит 8 - вызвать функцию закрытия окна перед ; запуском программы по левой кнопке ; бит 9 - вызвать функцию закрытия окна перед ; запуском программы по правой кнопке ; бит15 - это переключатель (инверт при огне не ; убирать) ; +0A 2 Адрес обработчика при не нажатом огне ; +0C 2 Адрес обработчика при нажатом огне (лев) ; +0E 2 Адрес обработчика при нажатом огне (прав) ;[]==========================================================[] FESetupTab: DEFW 0x0114,0x015C,0x00AA,0x00B8,0x0021,0x0000,FESetupCancel,0x0000 DEFW 0x0168,0x01A8,0x00AA,0x00B8,0x0021,0x0000,FESetupOkey,0x0000 DEFW 0x00D8,0x0192,0x0063,0x006D,0x0000,0x0000,SetupConfirmDlgInvert,0x0000 DEFW 0x00D8,0x0186,0x0073,0x007D,0x0000,0x0000,SetupHomeKeyInvert,0x0000 DEFW 0x00D8,0x0129,0x0083,0x008D,0x0000,0x0000,SetupAutoIndentInvert,0x0000 DEFW 0x00D8,0x0132,0x0093,0x009D,0x0000,0x0000,SetupAutoBracketsInvert,0x0000 DEFW 0x0000,0x00C8,0x0000,0x0100,0x0020,0x0000,FESetupCancel,0x0000 DEFW 0x01B8,0x0280,0x0000,0x0100,0x0020,0x0000,FESetupCancel,0x0000 DEFW 0x0000,0x0280,0x0000,0x0050,0x0020,0x0000,FESetupCancel,0x0000 DEFW 0x0000,0x0280,0x00BC,0x0100,0x0020,0x0000,FESetupCancel,0x0000 DEFW 0x8000