Adaptation for new "Current Dir" in DSS

This commit is contained in:
Anatoliy Belyanskiy 2023-10-19 03:25:56 +10:00
parent 23097bdd16
commit e70ce1ed3d
3 changed files with 79 additions and 67 deletions

@ -1 +1 @@
Subproject commit 947627f58f37509150f653c81c82d742a4123cb6 Subproject commit b534dc7d5df20ff238a64d900fb1559105eb8ef6

View File

@ -147,20 +147,18 @@ BEGIN: LD (LINE_X),IX
IN A,(SLOT3) IN A,(SLOT3)
LD (SAVE_SLOT3),A LD (SAVE_SLOT3),A
;
;
IF NEW_MEMORY_LOGIC IF NEW_MEMORY_LOGIC
;!TEST
LD BC,BUFFER_RAM_PAGES.Size * 256 + Dss.GetMem LD BC,BUFFER_RAM_PAGES.Size * 256 + Dss.GetMem
RST ToDSS RST ToDSS
JR C,Error_NoMemForSPpages JR C,Error_NoMemForSPpages
LD HL,BUFFER_RAM_PAGES LD HL,BUFFER_RAM_PAGES
LD C,BIOS.GetMemBlkPages LD C,BIOS.GetMemBlkPages
RST ToBIOS RST ToBIOS
;
ELSE
;
ENDIF ENDIF
;
;
JP COMAND_LINE JP COMAND_LINE
@ -226,13 +224,13 @@ COMAND_LINE: LD HL,(LINE_X)
CALL FIND_FILES CALL FIND_FILES
LD HL,(CNF_NAME) CALL MAKE_FULL_NAME
LD A,Spec_Page LD A,Spec_Page ;!FIXIT don't use it in new version
CALL READ_FILE_1 CALL READ_FILE_1
JP NC,CONTINUE JP NC,CONTINUE
NO_FIL: LD HL,CNF_FILE NO_FIL: CALL MAKE_FULL_NAME.def_cnf
LD A,Spec_Page LD A,Spec_Page ;!FIXIT don't use it in new version
CALL READ_FILE_1 CALL READ_FILE_1
JR C,ERROR_FILE JR C,ERROR_FILE
JP CONTINUE JP CONTINUE
@ -251,7 +249,7 @@ FIND_T_LOOP: LD A,(HL)
INC HL INC HL
CP "." CP "."
CALL Z,POINT_F CALL Z,POINT_F
CP 20h CP ' '
CALL Z,BLANK_X CALL Z,BLANK_X
CP 9 CP 9
CALL Z,BLANK_X CALL Z,BLANK_X
@ -472,15 +470,13 @@ LOADING_PALETTE:
;OR A ;OR A
;JP NZ,ERROR_FILE ;JP NZ,ERROR_FILE
; ;
;PUSH DE
LD A,(FILE_HANDLE) LD A,(FILE_HANDLE)
LD C,Dss.Close LD C,Dss.Close
RST ToDSS RST ToDSS
;POP DE
.skip: .skip:
; ;
;!TODO ¯¥ç â âì ¨¬ï ä ©«  ¯ «¨âàë, ¥á«¨ ®­ § £à㦥­
; ä ©«ë áç¨â ­ë ; ä ©«ë áç¨â ­ë
;************************************* ;*************************************
@ -916,35 +912,13 @@ RESET_TO_ZX: DI
CP #1E CP #1E
JR Z,EXIT_TO_DSS JR Z,EXIT_TO_DSS
;LD A,CNF_PORT.CNF_3 ; ä¨ªá ­¥¯®«­®© ¤¥è¨äà æ¨¨ ¯®àâ  #FFFD (¯¨èãâ ¢ #C0FD)
;OUT (SYS_PORT.ON),A ; System-page on & CNF = 0 LD A,#FF
LD HL,%00'010'1'1110'1101
;-------------[TEST ATARIN]------------- LD DE,%10'111'1'1111'1111 ; CNF_0, CNF_1
; #c0fd - +#05ED LD BC,ACEX.AY_FFFD_WRITE*256 + BIOS.DCP_CONFIG
; ä¨ªá ­¥¯®«­®© ¤¥è¨äà æ¨¨ ¯®àâ  #FFFD (¯¨èãâ ¢ #C0FD) RST ToBIOS
; ¤®¡ ¢«¥­ ¯®àâ #C0FD ¢® ¢á¥ ª àâë ¯®à⮢ ;
LD BC,SLOT3
IN B,(C)
LD A,DCP_PAGE
OUT (C),A
; !HARDCODE ¤ «¥¥ ¢áñ ­ áª®àïª ¨ § å à¤ª®¦¥­®
; !TODO ¯¥à¥¤¥« âì ¯®¤ ­®¢ãî äã­ªæ¨î ¤¥è¨äà æ¨¨
LD A,#90 ; AY-8910-port (FFFD)
LD HL,#C000+#05ED ; CNF 0
LD (HL),A
LD H,#C0+#15 ; CNF 1
LD (HL),A
LD H,#C0+#25 ; CNF 2
LD (HL),A
LD H,#C0+#35 ; CNF 3
LD (HL),A
OUT (C),B
;---------------------------------------
LD A,(Ret_zx_+2) LD A,(Ret_zx_+2)
LD B,A LD B,A
LD A,(Ret_fn_+2) LD A,(Ret_fn_+2)
@ -1054,7 +1028,6 @@ Original: LD C,BIOS.FN_SYNC ; -> INT for Pentagon or Scorpion
OUT (C),A ; #1FFD OUT (C),A ; #1FFD
LD B,#7F LD B,#7F
LD A,8 LD A,8
LOOP_P1: DEC A LOOP_P1: DEC A
OUT (C),A ; #7FFD OUT (C),A ; #7FFD
@ -1081,8 +1054,8 @@ LOOP_P2: OUT (C),A ; #7FFD
;*********************************************** ;***********************************************
LD HL,PROG_STARTS LD HL,PROG_STARTS
LD BC,PROG_STARTS.Length LD DE,PROG_STARTS.Launch ;!HARDCODE
LD DE,#FF00 ;!HARDCODE LD BC,0*256 + PROG_STARTS.Length
LDIR LDIR
LD A,(Line312_+2) LD A,(Line312_+2)
@ -1121,11 +1094,13 @@ LOOP_P2: OUT (C),A ; #7FFD
LD A,C LD A,C
OUT (SLOT3),A OUT (SLOT3),A
; ;
; JP PROG_STARTS.Launch
JP #FF00 ;!HARDCODE
;*************************************** ;***************************************
PROG_STARTS: LD A,2 PROG_STARTS:
.Launch: EQU #FF00
DISP .Launch
LD A,2
OUT (SLOT2),A OUT (SLOT2),A
LD A,E LD A,E
OUT (SYS_PORT.OFF),A OUT (SYS_PORT.OFF),A
@ -1138,7 +1113,8 @@ PROG_STARTS: LD A,2
LD HL,0 LD HL,0
PUSH HL PUSH HL
JP #3D29 ; RESET to TR-DOS JP #3D29 ; RESET to TR-DOS
ENT
;
.Length EQU $-PROG_STARTS .Length EQU $-PROG_STARTS
ASSERT PROG_STARTS.Length<#100,'PROG_STARTS too big!!!' ASSERT PROG_STARTS.Length<#100,'PROG_STARTS too big!!!'
@ -1148,6 +1124,42 @@ SET_PAL: LD DE,0
JP ToBIOS_18 JP ToBIOS_18
; ;
;----------------------------------------------------------------------;
MAKE_FULL_NAME: LD HL,(CNF_NAME)
LD (.mode),HL
LD DE,ONE_FILE
LD C,Dss.GSwitch
RST ToDSS
;
LD HL,ONE_FILE
LD BC,Dss.EX_Path.GET_ALL*256 + Dss.EX_Path
RST ToDSS
;
CP 3 ; only "FileName.ext"?
LD HL,(CNF_NAME)
JR Z,.get_app_path
RET
;
.def_cnf: LD HL,CNF_FILE
LD (.mode),HL
;
.get_app_path: LD HL,ONE_FILE
LD BC,Dss.AppInfo.EXE_HomeDir
RST ToDSS
;
LD HL,ONE_FILE
LD BC,12 ;!HARDCODE filename length
XOR A
CPIR
DEC HL
EX DE,HL
;
.mode+1: LD HL,0
LD BC,12 ;!HARDCODE filename length
LDIR
LD HL,ONE_FILE
RET
;----------------------------------------------------------------------;
; ;
; …᫨ ¯ à ¬¥âà § ¤ ­, â® ¢ë¡¨à ¥âáï §­ ç¥­¨¥ Y ; …᫨ ¯ à ¬¥âà § ¤ ­, â® ¢ë¡¨à ¥âáï §­ ç¥­¨¥ Y
PARAMS:; Y / N ; âãâ §­ ç¥­¨ï ¤«ï ª«î祩 § ¯¨á뢠îâáï ª ª 16 ¡¨â §­ ç¥­¨¥, §­ ç¨â ®¡à â­ë© ¯®à冷ª ¡ ©â®¢ PARAMS:; Y / N ; âãâ §­ ç¥­¨ï ¤«ï ª«î祩 § ¯¨á뢠îâáï ª ª 16 ¡¨â §­ ç¥­¨¥, §­ ç¨â ®¡à â­ë© ¯®à冷ª ¡ ©â®¢
@ -1199,7 +1211,7 @@ Loader_length EQU 0
;----------------------------------------------[End Loader section] ;----------------------------------------------[End Loader section]
; ;
PlaceForPalette EQU #9000 PlaceForPalette EQU #A000
STACK_CHECK_MACRO stack_point,stack_buffer STACK_CHECK_MACRO stack_point,stack_buffer
; Code after Loader ; Code after Loader

View File

@ -322,7 +322,7 @@ SYS_SECTOR_END: BLOCK 3,0
SCL_FILE_ID: DB 0 SCL_FILE_ID: DB 0
;-----------[¢ á ¬ë© ª®­¥æ]------------- ;-----------[¢ á ¬ë© ª®­¥æ]-------------
SCL_Buffer EQU $ SCL_Buffer EQU $
ASSERT SCL_Buffer+#701<#C000,"Buffer out of mem bank 2" ASSERT SCL_Buffer+#701<#A000,"Buffer out of mem bank 2"