From ae88e6864e10a7e8df1c42ae75eaf387f9732d60 Mon Sep 17 00:00:00 2001 From: Anatoliy Belyanskiy Date: Sat, 6 Jan 2024 02:57:48 +1000 Subject: [PATCH] =?UTF-8?q?=D0=A1=D0=BE=D1=85=D1=80=D0=B0=D0=BD=D0=B5?= =?UTF-8?q?=D0=BD=D0=B8=D0=B5=20=D0=B8=20=D0=B2=D0=BE=D1=81=D1=81=D1=82?= =?UTF-8?q?=D0=B0=D0=BD=D0=BE=D0=B2=D0=BB=D0=B5=D0=BD=D0=B8=D0=B5=20=D1=81?= =?UTF-8?q?=D0=BE=D1=81=D1=82=D0=B0=D1=8F=D0=BD=D0=B8=D1=8F=20=D0=BF=D1=80?= =?UTF-8?q?=D0=B5=D1=80=D1=8B=D0=B2=D0=B0=D0=BD=D0=B8=D0=B9=20=D0=B2=20EXP?= =?UTF-8?q?=5FFNS?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- SP_TRDOS.ASM | 40 ++++++++++++++++++++++++++++++++++--- TRDOS/TR_MSD_2.ASZ | 8 ++++++-- TRDOS/TR_MSD_3.ASZ | 14 +++++++------ TRDOS/TR_MSD_S.ASZ | 2 +- TRDOS/TR_RMD_S.ASZ | 50 ++++++++++++++++++++++++++++++++-------------- 5 files changed, 87 insertions(+), 27 deletions(-) diff --git a/SP_TRDOS.ASM b/SP_TRDOS.ASM index b3a35f6..a8903e1 100644 --- a/SP_TRDOS.ASM +++ b/SP_TRDOS.ASM @@ -6447,6 +6447,36 @@ PRINT_RED: POP BC POP HL RET +;******************************* + + +;******************************* +;!TEST 06/01/2024 сохраняем состояние прерываний зачем-то +EXP_FNS_PREPARE: + PUSH HL + PUSH AF + LD A,R + DI + PUSH AF + POP HL + POP AF + EX (SP),HL + CALL EXP_FNS_PREPARE_EXIT + EX (SP),HL + PUSH AF + LD A,L + AND 4 + JR Z,.no_EI + EI +.no_EI: POP AF + POP HL + RET +EXP_FNS_PREPARE_EXIT: + PUSH AF + XOR A + JP EXP_FNS_PREPARE_RET +;******************************* + ;******************************* BLOCK #3CC0 - $,255 @@ -7016,9 +7046,13 @@ HD_CMD: PUSH AF ;----[ From API #80..#FF to TR-DOS ]----- BLOCK #3FF8-$, #FF EXP_FNS: - PUSH AF - DI - XOR A ; D_ROM16OFF + ;!TEST 06/01/2024 сохраняем состояние прерываний зачем-то + ;PUSH AF + ;DI ;!TODO подумать, как сохранять состояние прерываний и ничего не сломать + ;XOR A ; D_ROM16OFF + JP EXP_FNS_PREPARE +EXP_FNS_PREPARE_RET: + ; OUT (SYS_PORT_ON),A POP AF RET diff --git a/TRDOS/TR_MSD_2.ASZ b/TRDOS/TR_MSD_2.ASZ index 88e5175..141ddec 100644 --- a/TRDOS/TR_MSD_2.ASZ +++ b/TRDOS/TR_MSD_2.ASZ @@ -570,7 +570,9 @@ AY8910: LD A,#EA LD C,#F3 ;!HARDCODE BIOS.SPRINTER_ALL CALL EXP_FNS - EI + ;!TEST 06/01/2024 сохраняем состояние прерываний зачем-то + ;EI + ; CALL AUTO_1D97 AND A RET @@ -592,7 +594,9 @@ SP_1: LD A,(DE) CCF RET C CALL EXP_FNS - EI + ;!TEST 06/01/2024 сохраняем состояние прерываний зачем-то + ;EI + ; CALL AUTO_1D97 AND A RET diff --git a/TRDOS/TR_MSD_3.ASZ b/TRDOS/TR_MSD_3.ASZ index 57179c7..c524135 100644 --- a/TRDOS/TR_MSD_3.ASZ +++ b/TRDOS/TR_MSD_3.ASZ @@ -1,9 +1,13 @@ INIT_RMD: LD C,#9F ;!HARDCODE BIOS.FullInit - CALL EXP_FNS - EI - RET + ;!TEST 06/01/2024 сохраняем состояние прерываний зачем-то + JP EXP_FNS + ;CALL EXP_FNS + ;EI + ;RET + ; + ; DI ; LD C,PAGE3 @@ -220,9 +224,7 @@ CONT_XX1: ADD A,A INC A - LOOP_128: - PUSH AF PUSH DE PUSH IX @@ -271,7 +273,7 @@ MADE_next_blk: CALL EXP_FNS POP BC INC L ; SET ZF, if END BLK !!! - LD HL,0C000H + LD HL,#C000 RET ;***************************************** diff --git a/TRDOS/TR_MSD_S.ASZ b/TRDOS/TR_MSD_S.ASZ index 5dc90dd..2ee025a 100644 --- a/TRDOS/TR_MSD_S.ASZ +++ b/TRDOS/TR_MSD_S.ASZ @@ -431,7 +431,7 @@ READ_BPB: RET NC .SPACIAL: LD IX,0 - LD DE,63 + LD DE,63 ;!HARDCODE LD A,SYS_PAGE LD HL,MS_BPB LD C,BIOS.HDD_READ and #BF diff --git a/TRDOS/TR_RMD_S.ASZ b/TRDOS/TR_RMD_S.ASZ index e213620..d34babd 100644 --- a/TRDOS/TR_RMD_S.ASZ +++ b/TRDOS/TR_RMD_S.ASZ @@ -1,3 +1,4 @@ +; DISK_REDIR: PUSH HL PUSH BC @@ -5,7 +6,9 @@ DISK_REDIR: AND 3 LD C,BIOS.GET_DRV_ST CALL EXP_FNS - EI + ;!TEST 06/01/2024 сохраняем состояние прерываний зачем-то + ;EI + ; POP BC POP HL RET @@ -42,7 +45,9 @@ TEST_RAMD: PUSH HL LD C,#CE ;!HARDCODE BIOS.GET_RAMD_ST CALL EXP_FNS - EI + ;!TEST 06/01/2024 сохраняем состояние прерываний зачем-то + ;EI + ; POP HL RET @@ -273,11 +278,13 @@ PAGE_CALC2: AND #0F LD D,A PUSH HL - LD C,#98 ;!HARDCODE BIOS.RAMD_CALC_PAGE + LD C,BIOS.RAMD_CALC_PAGE CALL DISK_REDIR SUB 4 CALL EXP_FNS ; вычисление адреса и страницы RAM-Disk - EI + ;!TEST 06/01/2024 сохраняем состояние прерываний зачем-то + ;EI + ; LD B,A LD C,H POP HL @@ -394,7 +401,9 @@ CLEAR_RMD_A: PUSH BC LD C,#93 ;!HARDCODE BIOS.FreeMemRMD CALL EXP_FNS ; вызвать функцию - EI + ;!TEST 06/01/2024 сохраняем состояние прерываний зачем-то + ;EI + ; POP BC POP DE POP HL @@ -405,7 +414,9 @@ GET_RMD_A: GET_RAM_BLK: ; B - ЧИСЛО ТРЕБУЕМЫХ БЛОКОВ, A - КЛЮЧ RAM-Disk LD C,#92 ;!HARDCODE BIOS.GetMemRMD CALL EXP_FNS ; A,L - КЛЮЧ RAM-Disk - номер первого блока - EI + ;!TEST 06/01/2024 сохраняем состояние прерываний зачем-то + ;EI + ; RET NC NO_MEM: LD HL,NO_MEMORY @@ -420,9 +431,12 @@ FDD_SET: LD A,(OPER_DISK) LD B,A LD C,#CC ;!HARDCODE BIOS.FDD_TO_DRV - CALL EXP_FNS - EI - RET + ;!TEST 06/01/2024 сохраняем состояние прерываний зачем-то + JP EXP_FNS + ;CALL EXP_FNS + ;EI + ;RET + ; HDD_SET: LD C,BIOS.HDD_INIT and #BF @@ -433,9 +447,12 @@ HDD_SET: LD B,A LD A,0 LD C,#CD ;!HARDCODE BIOS.HDD_TO_DRV - CALL EXP_FNS - EI - RET + ;!TEST 06/01/2024 сохраняем состояние прерываний зачем-то + JP EXP_FNS + ;CALL EXP_FNS + ;EI + ;RET + ; RAMD_SET: CALL RAMD_SYM @@ -446,9 +463,12 @@ RAMD_SET1: LD B,A POP AF LD C,#CB ;!HARDCODE BIOS.RAMD_TO_DRV - CALL EXP_FNS - EI - RET + ;!TEST 06/01/2024 сохраняем состояние прерываний зачем-то + JP EXP_FNS + ;CALL EXP_FNS + ;EI + ;RET + ; RAMD_SYM: LD A,(DE)