From 65bc8dbb499d83e8a7b5ef835d234130894a570c Mon Sep 17 00:00:00 2001 From: Tolik <85737314+Tolik-Trek@users.noreply.github.com> Date: Sat, 28 Sep 2024 04:37:38 +1000 Subject: [PATCH] =?UTF-8?q?=D1=83=D0=B6=D0=B5=20=D0=BB=D1=83=D1=87=D1=88?= =?UTF-8?q?=D0=B5?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- Shared_Includes | 2 +- src/bios/exp/BIOS_FUNC.asm | 2 +- src/bios/exp/DCP.ASM | 6 +- src/bios/exp/EXP.asm | 27 ++- src/bios/exp/FUNC_SYS.ASM | 11 +- src/bios/rom/SETUP/MAIN.asm | 36 ++-- src/bios/rom/ZX/ZX_FUNC.ASM | 323 ++++++++++++++++++------------------ src/bios/rom/ZX/ZX_MENU.ASM | 2 +- 8 files changed, 201 insertions(+), 208 deletions(-) diff --git a/Shared_Includes b/Shared_Includes index 753caad..403d6e2 160000 --- a/Shared_Includes +++ b/Shared_Includes @@ -1 +1 @@ -Subproject commit 753caadb020b3d55971aced21723c84a72bf65df +Subproject commit 403d6e2b52dadc50e99a1eac442cedd98e19d0a5 diff --git a/src/bios/exp/BIOS_FUNC.asm b/src/bios/exp/BIOS_FUNC.asm index 8909bba..189062e 100644 --- a/src/bios/exp/BIOS_FUNC.asm +++ b/src/bios/exp/BIOS_FUNC.asm @@ -430,7 +430,7 @@ TAB_FNS: DB high READ_PORTS DB high FN_RESERVED DB high GOTO_SPEC - DB high FN_RESERVED + DB high ZX_MEMORY_MANAGER DB high REINIT DB high FN_RESERVED DB high FN_VERSION diff --git a/src/bios/exp/DCP.ASM b/src/bios/exp/DCP.ASM index 9e906b2..7a23d49 100644 --- a/src/bios/exp/DCP.ASM +++ b/src/bios/exp/DCP.ASM @@ -647,12 +647,10 @@ SET_PORTS: PUSH AF POP DE DI - LD A,CNF_PORT.CNF_0 + ROM.BIOS - OUT (SYS_PORT.ROM),A CALL DOS_ON ; - ; LD A,CNF_PORT.CNF_0 + ROM.BIOS - ; OUT (SYS_PORT.ROM),A + LD A,CNF_PORT.CNF_0 + ROM.BIOS + OUT (SYS_PORT.ROM),A ; LD C,SLOT2 ; получить страницу IN D,(C) diff --git a/src/bios/exp/EXP.asm b/src/bios/exp/EXP.asm index 8ab8ee1..5ccdc6e 100644 --- a/src/bios/exp/EXP.asm +++ b/src/bios/exp/EXP.asm @@ -753,9 +753,6 @@ POST_5_ERROR: ; LD A,CNF_PORT.CNF_0 + CNF_PORT.TURBO.ON LD (SYS_PAGE.CONFIG_DE),A - ; - XOR A ;!HARDCODE zx page number - OUT (SLOT3),A ; ENDMODULE ;-----------------------------------------------------------------------; @@ -772,8 +769,6 @@ POST_5_ERROR: ;-----------------------------------------------------------------------; MODULE Reset_Handler start: DI - IN A,(SLOT3) - PUSH AF ;----[перехват soft reset #EE port]----- Check_EE_Port: LD A,ACEX.RET_PORT LD B,0 @@ -834,7 +829,7 @@ Check_Spec_Page: ; ;--------------------------------------- No_Reset_handlers: - POP AF + XOR A ;!HARDCODE zx page number OUT (SLOT3),A ENDMODULE ;-----------------------------------------------------------------------; @@ -1022,12 +1017,12 @@ PORTS_INIT: LD A,CNF_PORT.CNF_3+ROM.BIOS OUT (SYS_PORT.ROM),A OUT (FDC_93.DrvCTRL),A - PUSH HL - POP HL - LD A,#3C ;!HARDCODE команда для ВГ93 + PUSH HL ; для задержки + POP HL ; для задержки + LD A,#3C ;!HARDCODE команда для ВГ93 OUT (FDC_93.DrvCTRL),A - PUSH HL - POP HL + PUSH HL ; для задержки + POP HL ; для задержки XOR A OUT (FDC_93.Command),A ; Выключить доступ к контроллеру диска @@ -1037,11 +1032,11 @@ PORTS_INIT: LD A,IDE.Chanel.Primary OUT (IDE.Chanel.Set),A LD BC,#7FFD - XOR A - OUT (C),A ; BASIC_128 mode + LD A,#10 + OUT (C),A ; BASIC_48 mode LD B,#1F - INC A - OUT (C),A ; RAM-0 mode !!! + LD A,1 + OUT (C),A ; RAM-0 mode !!! ; очистка буферов клавиатуры и мыши в SIO CALL .clean_kbd_buf JR .clean_mouse_buf @@ -1177,7 +1172,7 @@ SW_ROM: ;!FIXIT assert with ROM ; ;----------------------------------------------------------------------; _mInfoBLOCK #3D00-$,#FF -DOS_ON: NOP +DOS_ON: NOP ;!TODO работает при #7FFD[4] = 1. Как-то узнавать значение 7FFD и менять? RET ;*************************************** diff --git a/src/bios/exp/FUNC_SYS.ASM b/src/bios/exp/FUNC_SYS.ASM index 2d0046f..c916220 100644 --- a/src/bios/exp/FUNC_SYS.ASM +++ b/src/bios/exp/FUNC_SYS.ASM @@ -204,6 +204,7 @@ INIT_SYS_ALL: LD L,A LD (SYS_PAGE.CURRENT_DIR_SEC_L - #4000),HL LD (SYS_PAGE.CURRENT_DIR_SEC_H - #4000),HL + LD (SYS_PAGE.Block_IDs - #4000),HL DEC A LD (SYS_PAGE.CURRENT_HDD - #4000),A LD (SYS_PAGE.CURRENT_DIR_DRIVE - #4000),A @@ -299,11 +300,11 @@ INIT_CONFIG_ALL: LD DE,CNF_PORT.CNF_0 + ROM.BIOS LD (SYS_PAGE.CONFIG_DE - #4000),DE - LD HL,SYS_PAGE.ZX_TASK.CURRENT - #4000 ; убить все задачи - LD DE,SYS_PAGE.ZX_TASK.CURRENT+1 - #4000 - LD BC,_ZX_TASK - 1 - LD (HL),0 - LDIR + ; LD HL,SYS_PAGE.ZX_TASK.CURRENT - #4000 ; убить все задачи + ; LD DE,SYS_PAGE.ZX_TASK.CURRENT+1 - #4000 + ; LD BC,_ZX_TASK - 1 + ; LD (HL),0 + ; LDIR EX AF,AF' OUT (SLOT2),A diff --git a/src/bios/rom/SETUP/MAIN.asm b/src/bios/rom/SETUP/MAIN.asm index 71eae0c..3cd7c22 100644 --- a/src/bios/rom/SETUP/MAIN.asm +++ b/src/bios/rom/SETUP/MAIN.asm @@ -382,7 +382,9 @@ EXIT_SETUP: CALL INT_OFF ; .Set_Page41: CALL ZXMODE_SETUP.Set_Page41 .vROMs_Installed: - CALL MANAGE_ZX_PAGES.GET_SCORP_RAM ;!TODO настраивать в BIOS zx mode + XOR A + LD BC,4*256 + BIOS.ZX_MEMORY_MANAGER ; [ ] free zx pages! HARDCODE MANAGE_ZX_PAGES.GET_SCORP_RAM + RST ToBIOS_18 ;!TODO настраивать в BIOS zx mode JR NC,.set_ZX_params ; CALL ScreenPOS.CRLF @@ -1707,11 +1709,14 @@ ZXMODE_SETUP: IN A,(SLOT3) LD R,A ; ; Load ZX ROM's - LD A,ROM.EXTENSION - OUT (SYS_PORT.ROM),A - CALL MANAGE_ZX_PAGES.FREE_vMEMORY ;!FIXIT не та страница в SLOT3 ; [ ] free zx pages! - XOR A ;LD A,ROM.BIOS - OUT (SYS_PORT.ROM),A + ;LD A,ROM.EXTENSION + ;OUT (SYS_PORT.ROM),A + ; CALL MANAGE_ZX_PAGES.FREE_vMEMORY ;!FIXIT не та страница в SLOT3 ; [ ] free zx pages! + ;XOR A ;LD A,ROM.BIOS + ;OUT (SYS_PORT.ROM),A + XOR A + LD BC,64*256 + BIOS.ZX_MEMORY_MANAGER ; [ ] free zx pages! HARDCODE + RST ToBIOS_18 ; LD B,3 ; !HARDCODE zx-rom number of pages CALL EMM.GetMem @@ -1741,12 +1746,15 @@ ZXMODE_SETUP: IN A,(SLOT3) LDDR ; зачищаем EX DE,HL ; - LD A,SYS_PORT.EXTENSION - OUT (SYS_PORT.ROM),A - JP MANAGE_ZX_PAGES.INIT_vROM - XOR A ;LD A,SYS_PORT.BIOS - OUT (SYS_PORT.ROM),A - RET + ; LD A,SYS_PORT.EXTENSION + ; OUT (SYS_PORT.ROM),A + ; JP MANAGE_ZX_PAGES.INIT_vROM + ; XOR A ;LD A,SYS_PORT.BIOS + ; OUT (SYS_PORT.ROM),A + XOR A + LD BC,128*256 + BIOS.ZX_MEMORY_MANAGER ; [ ] free zx pages! HARDCODE + JP ToBIOS_18 + ;RET ; ;--------------------[copy zx-roms to zx-pages]-----------------; ; SLOT0 - ROM 8, sys_port - on. @@ -1780,7 +1788,7 @@ init_zx_roms: DI OUT (SYS_PORT.ROM),A CALL MANAGE_ZX_PAGES.INIT_vROM ; Копируем образы ZX-ROM из ПЗУ в страницы vROM - INC A ; !HARDCODE LD A,2 + LD A,2 ; !HARDCODE LD BC,+(3*2)*256 + SLOT3 ; !HARDCODE B = (zx-rom number of pages)*2 LD HL,memBUFFER.Shared + 1 .loop: OUTI @@ -1869,7 +1877,7 @@ init_zx_roms: DI .init_41h: ; забить FF-ами LD HL,#C000 LD DE,#C001 - LD BC,#3FFF + LD BC,#3FFF - 2 LD (HL),C LDIR ; Заглушка для страницы #41 diff --git a/src/bios/rom/ZX/ZX_FUNC.ASM b/src/bios/rom/ZX/ZX_FUNC.ASM index 10f34c7..9524ce7 100644 --- a/src/bios/rom/ZX/ZX_FUNC.ASM +++ b/src/bios/rom/ZX/ZX_FUNC.ASM @@ -289,85 +289,6 @@ ZX_MEMORY: IF FREE_ZX_PAGES MODULE MANAGE_ZX_PAGES -;!FIXIT -;----------------[Выделение/освобождение страниц спектрума]-------------; -;вход: рег B: 0 - зарезервировано -; 1 - выделение памяти Pentagon 48k. 3 страницы -; 2 - выделение памяти Pentagon 128k. 2+6 страницы -; 3 - выделение памяти Pentagon 512k. 2+30 страницы -; 4 - выделение памяти Scorpion 256k. 2+6+8 страницы -; 5..15 - зарезервированы -; -; 16 - получить рамблоки инициализированных vROM и VRAM -; 17..31 - зарезервированы -; -; 32 - зарезервировано -; 33 - выделение памяти Spectrum 48k и инит 2-х страниц vROM -; 34 - выделение памяти Pentagon 128k и инит 3-х страниц vROM -; 35 - выделение памяти Pentagon 512k и инит 3-х страниц vROM -; 36 - выделение памяти Scorpion 256k и инит 3-х страниц vROM -; 33..63 - зарезервированы -; -; 64 - освободить рамблоки vROM и vRAM -; 65..127 - зарезервированы -; -; 128 - инициализировать свой набор страниц vROM -; -; рег HL: при рег B[7]=1 адрес страниц (11 шт): -; byte1 - RAM block ID, byte2..11 - страницы для vROM - ZXSlot: 1,2,3(=0),расширенная -; рег A: номер ZX TASK пока что всегда ноль!!! -;выход: CF = 0: HL - номера рамблоков для режимов 0..16. H=vRAM, L=vROM -; CF = 1: A - номер ошибки -; -;если стэк находится в третьем слоте, то вызов с выключенными прерываниями -FN_ENTRANCE: ;!TODO A - TASK NUMBER - AND A - LD A,BIOS.Error.NotSupported - SCF - RET Z - ; - EXX - LD C,SLOT3 - IN B,(C) - LD A,SYS_PAGE - OUT (C),A - EXX - ; - LD (SYS_PAGE.SP_SAVE),SP - LD SP,SYS_PAGE.SYS_SP - LD DE,.EXIT - PUSH DE - ;-----------------------------------; - ; Sub FN #8x - BIT 7,B - JR NZ,INIT_vROM ; B = 128 - ; Sub FN #4x - BIT 6,B - JR NZ,FREE_vMEMORY ; B = 64 - ; Sub FN #1x - JR NZ,GET_RAMBLOCK_IDs ; B = 16 - ; Sub FN #0x - ; DEC B - ; JR Z, ; B = 1 - ; DEC B - ; JR Z, ; B = 2 - ; DEC B - ; JR Z, ; B = 3 - ; DEC B - ; JR Z, ; B = 4 - ;-----------------------------------; - LD A,BIOS.Error.InvalidSubFunction - SCF - RET - ; -.EXIT: LD SP,(SYS_PAGE.SP_SAVE) - EXX - OUT (C),B - EXX - RET -;-----------------------------------------------------------------------; - - ;-----------------------------------------------------------------------; ; Не портить DE ;Вход: A - TASK NUMBER @@ -381,51 +302,51 @@ FN_ENTRANCE: ;!TODO A - TASK NUMBER ; RET ;-----------------------------------------------------------------------; + ;-----------------------------------------------------------------------; -FREE_vRAM: LD A,(SYS_PAGE.Block_ID.vRAM) - OR A +;ВХОД: HL - список страниц +; E - 0 = 128kb, 1 = 512kb +INIT_vRAM: XOR A +.set_1ffd: LD BC,#1FFD + OUT (C),A + ; set 128 + LD B,#7F + LD D,%0000'0000 + CALL SET_7FFD + ; + XOR A + OUT (C),A + BIT 3,E ; 128/512 RET Z + ; set 128 + 384 + ;LD A,SYS_PORT.CNF_512 + ;OUT (SYS_PORT.ROM),A + ; + LD D,%0100'0000 + CALL SET_7FFD + LD D,%1000'0000 + CALL SET_7FFD + LD D,%1100'0000 + CALL SET_7FFD + ; XOR A - LD (SYS_PAGE.Block_ID.vRAM),A - LD C,BIOS.FreeMem - JP ToBIOS_FromEXT -;--------------; -FREE_vMEMORY: CALL FREE_vRAM - ;JR FREE_vROM -;--------------; -FREE_vROM: LD A,(SYS_PAGE.Block_ID.vROM) - OR A - RET Z - XOR A - LD (SYS_PAGE.Block_ID.vROM),A - LD C,BIOS.FreeMem - RST_to_BIOS -;--------------; -RES_FLAG_ZXvROM: ; не должно портить DE - EX AF,AF' - IN A,(SLOT3) - EX AF,AF' - LD A,Spec_Page - OUT (SLOT3),A - XOR A - LD (Spec_Page.flag_Z),A - LD (Spec_Page.flag_X),A - EX AF,AF' - OUT (SLOT3),A + OUT (C),A RET ;-----------------------------------------------------------------------; - ;-----------------------------------------------------------------------; -;Вход: A - TASK NUMBER -;Выход: H - vRAM block ID -; L - vROM block ID -GET_RAMBLOCK_IDs: - LD HL,(SYS_PAGE.Block_IDs) +;ВХОД: HL - список страниц +; D - начальное значение для 7FFD +SET_7FFD: LD A,(HL) + OUT (C),D + OUT (SLOT3),A + INC HL + INC D + BIT 3,D ; количество страниц + JR Z,SET_7FFD RET ;-----------------------------------------------------------------------; - ;-----------------------------------------------------------------------; ;Вход: HL - буфер страниц (SLOT1..SLOT2) на которые маппим (всегда 11 шт.) ; Первый байт списка - RAM BLOCK ID. Далее как угодно номера @@ -500,55 +421,133 @@ INIT_vROM: LD A,(HL) .PORTS.Size EQU $-.PORTS ;-----------------------------------------------------------------------; - +;!FIXIT +;----------------[Выделение/освобождение страниц спектрума]-------------; +;вход: рег B: +; FN 0x +; 0 - зарезервировано +; 1 - выделение памяти Pentagon 48k. 3 страницы +; 2 - выделение памяти Pentagon 128k. 2+6 страницы +; 3 - выделение памяти Pentagon 512k. 2+30 страницы +; 4 - выделение памяти Scorpion 256k. 2+6+8 страницы +; 5..15 - зарезервированы +; FN 1x +; 16 - получить рамблоки инициализированных vROM и VRAM +; 17..31 - зарезервированы +; FN 2x +; 32 - зарезервировано +; 33 - выделение памяти Spectrum 48k и инит 2-х страниц vROM +; 34 - выделение памяти Pentagon 128k и инит 3-х страниц vROM +; 35 - выделение памяти Pentagon 512k и инит 3-х страниц vROM +; 36 - выделение памяти Scorpion 256k и инит 3-х страниц vROM +; 33..63 - зарезервированы +; FN 4x +; 64 - освободить рамблоки vROM и vRAM +; 65..127 - зарезервированы +; FN 8x +; 128 - инициализировать свой набор страниц vROM +; +; рег HL: при рег B[7]=1 адрес страниц (11 шт): +; byte1 - RAM block ID, byte2..11 - страницы для vROM - ZXSlot: 1,2,3(=0),расширенная +; рег A: номер ZX TASK пока что всегда ноль!!! +;выход: CF = 0: HL - номера рамблоков для режимов 0..16. H=vRAM, L=vROM +; CF = 1: A - номер ошибки +; +;если стэк находится в третьем слоте, то вызов с выключенными прерываниями +FN_ENTRANCE: ;!TODO A - TASK NUMBER + AND A + LD A,BIOS.Error.NotSupported + SCF + RET NZ + CCF + ; + EXX + LD C,SLOT3 + IN B,(C) + LD A,SYS_PAGE + OUT (C),A + EXX + ; + LD (SYS_PAGE.SP_SAVE),SP + LD SP,SYS_PAGE.SYS_SP + LD DE,.EXIT + PUSH DE + ;-----------------------------------; + ; Sub FN #8x + BIT 7,B + JR NZ,INIT_vROM ; B = 128 + ; Sub FN #4x + BIT 6,B + JR NZ,FREE_vMEMORY ; B = 64..127 + ; Sub FN #2x ;!TODO ; [ ] free zx pages! + ;BIT 5,B + ;JR NZ, ; B = 32..63 + ; Sub FN #1x + BIT 4,B + JR Z,.x0x_FN ; B = 16 + ; +.GET_RAMBLOCK_IDs: ;Вход: A - TASK NUMBER. Выход: H - vRAM block ID, L - vROM block ID + LD HL,(SYS_PAGE.Block_IDs) + RET + ; + ; Sub FN #0x +.x0x_FN: DEC B + JR Z,GET_48k_MEM ; B = 1 + DEC B + JR Z,GET_128k_MEM ; B = 2 + DEC B + JR Z,GET_512k_MEM ; B = 3 + DEC B + JR Z,GET_SCORP_RAM ; B = 4 + ;-----------------------------------; + LD A,BIOS.Error.InvalidSubFunction + SCF + RET + ; +.EXIT: LD SP,(SYS_PAGE.SP_SAVE) + EXX + OUT (C),B + EXX + RET +;-----------------------------------------------------------------------; ;-----------------------------------------------------------------------; -;ВХОД: HL - список страниц -; E - 0 = 128kb, 1 = 512kb -INIT_vRAM: XOR A -.set_1ffd: LD BC,#1FFD - OUT (C),A - ; set 128 - LD B,#7F - LD D,%0000'0000 - CALL SET_7FFD - ; - XOR A - OUT (C),A - BIT 3,E ; 128/512 +FREE_vRAM: LD A,(SYS_PAGE.Block_ID.vRAM) + OR A RET Z - ; set 128 + 384 - ;LD A,SYS_PORT.CNF_512 - ;OUT (SYS_PORT.ROM),A - ; - LD D,%0100'0000 - CALL SET_7FFD - LD D,%1000'0000 - CALL SET_7FFD - LD D,%1100'0000 - CALL SET_7FFD - ; + LD C,BIOS.FreeMem + CALL ToBIOS_FromEXT + RET C XOR A - OUT (C),A + LD (SYS_PAGE.Block_ID.vRAM),A RET -;-----------------------------------------------------------------------; - -;-----------------------------------------------------------------------; -;ВХОД: HL - список страниц -; D - начальное значение для 7FFD -SET_7FFD: LD A,(HL) - OUT (C),D +;--------------; +FREE_vMEMORY: CALL FREE_vRAM + ;JR FREE_vROM +;--------------; +FREE_vROM: LD A,(SYS_PAGE.Block_ID.vROM) + OR A + RET Z + XOR A + LD (SYS_PAGE.Block_ID.vROM),A + LD C,BIOS.FreeMem + RST_to_BIOS +;--------------; +RES_FLAG_ZXvROM: ; не должно портить DE + EX AF,AF' + IN A,(SLOT3) + EX AF,AF' + LD A,Spec_Page + OUT (SLOT3),A + XOR A + LD (Spec_Page.flag_Z),A + LD (Spec_Page.flag_X),A + EX AF,AF' OUT (SLOT3),A - INC HL - INC D - BIT 3,D ; количество страниц - JR Z,SET_7FFD RET ;-----------------------------------------------------------------------; - - ;-----------------------------------------------------------------------; ;Выполняется для выделения трёх страниц ОЗУ 48k GET_48k_MEM: LD D,ZX_MEMORY.MODE_48k @@ -637,7 +636,7 @@ GET_SCORP_RAM: CALL FREE_vRAM ;░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░; -;!TODO задействовать +; [ ] free zx pages! ; ПЕРЕДАВАТЬ: номер vROM, vRAM, CONFIG_DE, FN_SYNC, PORT_ALL_MODE, MEM_TYPE ; Вход: D: 0 - BASIC 128, 1 - BASIC 48, 2 - TR-DOS 128, ; 3 - EXPANSION. C закрытыми 128-ми портами: @@ -671,21 +670,12 @@ GOTO_SPECTRUM: LD A,BIOS.Error.NotSupported LD (SYS_PAGE.CONFIG_DE),DE LD (SYS_PAGE.Block_IDs),HL ;!FIXIT освободить старые значения? ; [ ] free zx pages! ; - EXX + LD A,C + AND %0000'0011 LD SP,#C000 - ; - ; [ ] free zx pages! ;!TODO если задача пустая, то первый инит - ; ;!TODO сделать активацию винта для параметра из Setup - ;!TODO установить где-нибудь ниже стэк из TASK - ; LD A,(IX + _ZX_TASK_DATA.PORT_ALL_MODE) - ; LD BC,Port_All_Mode - ; OUT (C),A ; установка инта EXX - LD A,C - EXX - AND %0000'0011 LD C,BIOS.FN_SYNC RST_to_BIOS ;CALL FN_SYNC @@ -764,7 +754,8 @@ GOTO_SPECTRUM: LD A,BIOS.Error.NotSupported ; D - количество этих страниц INIT_PAGES: LD A,SYS_PAGE OUT (SLOT1),A - LD A,SYS_PORT.TURBO.ON + SYS_PORT.CNF_0 + SYS_PORT.CNF_512 + ==== + LD A,SYS_PORT.TURBO.ON + SYS_PORT.CNF_0 + SYS_PORT.CNF_512 ;!FIXIT переделать инит. если 512, то нет 1ffd и наоборот OUT (SYS_PORT.ROM),A ; RES 7,H diff --git a/src/bios/rom/ZX/ZX_MENU.ASM b/src/bios/rom/ZX/ZX_MENU.ASM index 9385c04..344f7e6 100644 --- a/src/bios/rom/ZX/ZX_MENU.ASM +++ b/src/bios/rom/ZX/ZX_MENU.ASM @@ -421,7 +421,7 @@ TURBO_ON: CLEAR_RAM: DI - LD C,BIOS.FullInit + LD C,BIOS.FullInit ; [ ] free zx pages! RST_to_BIOS ; при очистке памяти из меню спектрума возврат в DSS по CAD ; будет опасным (RAM Blocks освободились),