diff --git a/Shared_Includes b/Shared_Includes index 265b46f..b1851fc 160000 --- a/Shared_Includes +++ b/Shared_Includes @@ -1 +1 @@ -Subproject commit 265b46fce2afbc3e8acef59e83d78b84b88d4ced +Subproject commit b1851fc9f30652ff464f323a7f2873806bd51bfd diff --git a/src/bios/exp/FUNC_ZX.ASM b/src/bios/exp/FUNC_ZX.ASM index b87c86a..3a273c2 100644 --- a/src/bios/exp/FUNC_ZX.ASM +++ b/src/bios/exp/FUNC_ZX.ASM @@ -174,19 +174,6 @@ INIT_vROM: LD A,(IX + _#ZX_TASK_DATA.vROM_ID) ;-----------------------------------------------------------------------; -;????? надо? -/* -;-----------------------------------------------------------------------; -;Вход: A - TASK NUMBER -FREE_vROM: LD A,(IX + _#ZX_TASK_DATA.vROM_ID) - CALL EMM.FreeMem - PUSH AF - CALL RES_FLAG_ZXvROM - POP AF - RET -;-----------------------------------------------------------------------; -*/ - /* ;-----------------------------------------------------------------------; @@ -234,22 +221,6 @@ SET_7FFD: LD A,(HL) JR Z,SET_7FFD RET ;-----------------------------------------------------------------------; - - -;-----------------------------------------------------------------------; -;!FIXIT косяк со стеком в SLOT3 -;ВХОД: HL - список страниц. -INIT_SCORP_vRAM:; first 128 kb - LD E,0 - CALL INIT_PENT_vRAM - ; second 128 kb - LD A,#10 - CALL INIT_PENT_vRAM.set_1ffd - ; A = 0 - LD B,#1F - OUT (C),A - RET -;-----------------------------------------------------------------------; */ @@ -282,28 +253,15 @@ FREE_vRAM: XOR A ;-----------------------------------------------------------------------; -;!FIXIT SET_TASK_POINTER ;-----------------------------------------------------------------------; ;Выполняется для выделения 3 страниц ОЗУ 48k и 14 страниц ОЗУ Scorp256k ;Вход: --- ;Выход: A - RAM block ID GET_SCORP_RAM: CALL FREE_vRAM - CALL .SCORP - RET C - LD D,L - ; Get Pent128 mem - LD B,3+5 - CALL EMM.GetMem - ; A - Pent128 mem block id - LD B,D ; Scorp128 mem block id - CALL EMM.MergeMemBlocks - LD (IX + _#ZX_TASK_DATA.vRAM_ID),A - RET - ; -.SCORP: ; выделить страницы скорпа + ; выделить страницы скорпа XOR A - LD DE,#F0D0 ; для фильтра. #F0 - маска, #D0 - страницы ISA #D0..#DF - LD BC,8*256 + #FF ; B - количество страниц, C - Метка конца рамблока + LD DE,#F0D0 ; для фильтра. #F0 - маска, #D0 - страницы ISA #D0..#DF + LD BC,8*256 + #FF ; B - количество страниц, C - Метка конца рамблока LD HL,SYS_PAGE.RAM_TABLE .allocate_loop: DEC L JR Z,.error_no_mem @@ -319,6 +277,14 @@ GET_SCORP_RAM: CALL FREE_vRAM DJNZ .allocate_loop ; L = указатель цепочки. AND A + LD D,L + ; Get Pent128 mem + LD B,3+5 + CALL EMM.GetMem + ; A - Pent128 mem block id + LD B,D ; Scorp128 mem block id + CALL EMM.MergeMemBlocks + LD (IX + _#ZX_TASK_DATA.vRAM_ID),A RET ; ; фильтр для страниц скорпа @@ -336,10 +302,8 @@ GET_SCORP_RAM: CALL FREE_vRAM LD L,E RET ; -.error_no_mem: ;PUSH DE - LD A,C +.error_no_mem: LD A,C CALL EMM.FreeMem - ;POP DE LD A,BIOS.Error.EMM.NoMemory SCF RET @@ -486,7 +450,7 @@ RES128_PROG: ; !!! NO USE STACK !!! ; ;***************************************** -;!TODO +;!TODO стек установлен в третьей странице, не использовать или устанавливать в другую! ; инициализация страниц zx spectrum INIT_PAGES: AND A @@ -529,11 +493,11 @@ SCORPION_256_MODE: ALL_MODE: OUT (SLOT0),A - XOR 5 + XOR 5 ; [ ] free zx pages! OUT (SLOT1),A - XOR 7 + XOR 7 ; [ ] free zx pages! OUT (SLOT2),A - OR #0F + OR #0F ; [ ] free zx pages! LD E,A .loop: DEC D @@ -561,8 +525,8 @@ ALL_MODE: INIT_VIDEO_REG: XOR A OUT (RGADR),A ; регистр видео адреса -; OUT (RGSCR),A ; регистр экрана OUT (RGMOD),A ; регистр моды +; OUT (RGSCR),A ; регистр экрана ;!TEST ; Restore old Spectrum Screen