From 01ed8404f7c07eca5a9662e58d6dac9c2274a747 Mon Sep 17 00:00:00 2001 From: Anatoliy Belyanskiy Date: Tue, 27 Jun 2023 21:10:07 +1000 Subject: [PATCH] testing pages --- Shared_Includes | 2 +- spectrum.asm | 93 +++++++++++++++++++++++++++++++++++-------------- 2 files changed, 68 insertions(+), 27 deletions(-) diff --git a/Shared_Includes b/Shared_Includes index c821d32..38c3f62 160000 --- a/Shared_Includes +++ b/Shared_Includes @@ -1 +1 @@ -Subproject commit c821d325066267e711886212aa3dfc4b83f5b64f +Subproject commit 38c3f62f6d7fa9f4c977eb23e3ff9ea7bf3638f0 diff --git a/spectrum.asm b/spectrum.asm index 39a7e3d..b052f09 100644 --- a/spectrum.asm +++ b/spectrum.asm @@ -122,8 +122,7 @@ OPTIONS_LINE EQU (CFG_FILE_LINES-1)*2 ORG org_addr-CLP_Buffer ENDIF -BEGIN: - LD (LINE_X),IX +BEGIN: LD (LINE_X),IX LD HL,START_MSG LD C,Dss.PChars @@ -132,13 +131,27 @@ BEGIN: IN A,(SLOT3) LD (SAVE_SLOT3),A + ;!TEST + LD BC,BUFFER_RAM_PAGES.Size * 256 + Dss.GetMem + RST ToDSS + JR C,Error_NoMemForSPpages + LD HL,BUFFER_RAM_PAGES + LD C,BIOS.GetMemBlkPages + RST ToBIOS + ; + + JP COMAND_LINE + +Error_NoMemForSPpages: + LD HL,NO_MEM_MSG2 + JR ERROR_FILE.prn_msg ERROR_FILE: LD HL,ERROR_FILE_MSG_X LD C,Dss.PChars RST ToDSS LD HL,ONE_FILE - LD C,Dss.PChars +.prn_msg: LD C,Dss.PChars RST ToDSS LD HL,ERROR_FILE_MSG @@ -359,29 +372,38 @@ N_LINE: LD (HL),0 ; выделено 8 строк в CNF ;************************************* - MACRO vROM_LOAD romLine,pageNumber +;!TODO если пропускаем загрузку ROM для 48, 128 или trdos, то вставлять в порт vROM номер из стандартного первого блока + MACRO vROM_LOAD romLine;,pageNumber LD HL,(A_LINES+romLine) LD A,(HL) CP ';' JR Z,.skip_load - LD A,pageNumber + ;!TEST + ;LD A,pageNumber + LD A,(BC) + INC BC + PUSH BC CALL READ_FILE_1 + POP BC + ; LD A,Spec_Page OUT (SLOT3),A JP C,ERROR_FILE .skip_load: ENDM - vROM_LOAD BASIC128_LINE, #42 ; 2-я строка - имя файла BASIC128 - vROM_LOAD BASIC_48_LINE, #43 ; 3-я строка - имя файла BASIC 48 - vROM_LOAD TRDOS_LINE, #44 ; 4-я строка - имя файла TR-DOS - vROM_LOAD EXP_LINE, #45 ; 5-я строка - имя файла EXPANSION - vROM_LOAD BIOS_LINE, #46 ; 6-я строка - имя файла BIOS - vROM_LOAD BIOS2_LINE, #47 ; 7-я строка - имя файла BIOS2 - ;vROM_LOAD _LINE, #42 ; 8-я строка - имя файла - ;vROM_LOAD _LINE, #42 ; 9-я строка - имя файла - ;vROM_LOAD _LINE, #42 ; 10-я строка - имя файла - ;vROM_LOAD _LINE, #42 ; 11-я строка - имя файла + LD BC,BUFFER_RAM_PAGES.ROM + + vROM_LOAD BASIC128_LINE;, #42 ; 2-я строка - имя файла BASIC128 + vROM_LOAD BASIC_48_LINE;, #43 ; 3-я строка - имя файла BASIC 48 + vROM_LOAD TRDOS_LINE ;, #44 ; 4-я строка - имя файла TR-DOS + vROM_LOAD EXP_LINE ;, #45 ; 5-я строка - имя файла EXPANSION + vROM_LOAD BIOS_LINE ;, #46 ; 6-я строка - имя файла BIOS + vROM_LOAD BIOS2_LINE ;, #47 ; 7-я строка - имя файла BIOS2 + ;vROM_LOAD _LINE ;, #42 ; 8-я строка - имя файла + ;vROM_LOAD _LINE ;, #42 ; 9-я строка - имя файла + ;vROM_LOAD _LINE ;, #42 ; 10-я строка - имя файла + ;vROM_LOAD _LINE ;, #42 ; 11-я строка - имя файла ; файлы считаны ;************************************* @@ -468,29 +490,48 @@ PARAM_E2: EX (SP),HL ; JR LOOP_PAR1 ;************************************ +BUFFER_RAM_PAGES: +.ROM: BLOCK 10 ; количество портов эмулятора ПЗУ +.RAM: BLOCK 16 ; 256 кб +.Size EQU $-BUFFER_RAM_PAGES +.end_marker: BYTE #FF +PARAM_END: + LD HL,BUFFER_RAM_PAGES.ROM -PARAM_END: LD A,#E2 ; ROM-ID - BASIC 128 - LD B,#42 ; page + LD B,(HL) ; page + INC HL + LD A,#E2 ; ROM-ID - BASIC 128 + //LD B,#42 ; page CALL SET_ROM + LD B,(HL) ; page + INC HL LD A,#E3 ; ROM-ID - BASIC 48 - LD B,#43 ; page + //LD B,#43 ; page CALL SET_ROM + LD B,(HL) ; page + INC HL LD A,#E1 ; ROM-ID - TR-DOS - LD B,#44 ; page + //LD B,#44 ; page CALL SET_ROM + LD B,(HL) ; page + INC HL LD A,#E0 ; ROM-ID - EXPANSION - LD B,#45 ; page + //LD B,#45 ; page CALL SET_ROM + LD B,(HL) ; page + INC HL LD A,#EB ; ROM-ID - BIOS-1 - LD B,#46 ; page + //LD B,#46 ; page CALL SET_ROM + LD B,(HL) ; page + INC HL LD A,#EF ; ROM-ID - BIOS-2 - LD B,#47 ; page + //LD B,#47 ; page CALL SET_ROM LD HL,(IMAGE_NAME) @@ -560,9 +601,9 @@ SET_ROM: DI OUT (SLOT3),A LD A,(#C400) ; сохранить то что было - LD L,A + LD E,A LD A,(#C600) - LD H,A + LD D,A EX AF,AF' ; страница @@ -579,9 +620,9 @@ SET_ROM: DI EX AF,AF' LD B,A - LD A,L + LD A,E LD (#C400),A ; вернуть порт - LD A,H + LD A,D LD (#C600),A ; вернуть порт POP AF