;--------------------------------------------------------------- ;Rev Date Name Description ;--------------------------------------------------------------- ;R10 13-04-2023 BAO FIX BUG WITH PARSING DIRECTORY BUFFER ////////////////////////////////////////////////////////////////////// ; !FIXIT тут одни затупы и дебилизм ; Функция #47. Получение информации приложения. ; ; вход: HL - буфер данных ; B - номер подфункции: ; B=0 - получение параметров командной строки ; B=1 - получение полного пути к каталогу программы ; B=2 - получение полного пути и имени файла программы ; выход: нет ; ; APPLICATION INFO ;==================== ; B = 0 - GET APP_PARAM ; B = 1 - GET APP_PATH ; B = 2 - GET APP_FULLNAME ////////////////////////////////////////////////////////////////////// ;LAST_PSP_PTR: DW 0 APPINFO: INC B ; DJNZ .FN1 ; получение параметров командной строки EX DE,HL XOR A LD (DE),A LD HL,(.LAST_PSP_PTR) LD C,(HL) INC C RET Z INC HL LDIR AND A RET .FN1: DJNZ .FN2 ; получение полного пути к каталогу программы EX DE,HL .LAST_PSP_PTR+1: LD HL,0 LD C,(HL) INC HL ADD HL,BC INC HL INC HL PUSH HL LD BC,#100 ;!HARDCODE длина коммандной строки XOR A CPIR DEC HL ;R10 ;[x] исправлен баг с парсингом буфера каталога DEC HL ;R10,5 - не тестил ;!!!!! LD BC,#100 ;R10 ;[x] не было этой команды, CPDR мог не прошерстить всё ;!HARDCODE длина коммандной строки LD A,'\' CPDR INC HL INC HL POP BC AND A SBC HL,BC ;R10 ;[x] могло всё в космос улететь LD A,DSS_Error.sys.COMMON_ERROR JR C,.error ; LD A,B ;EX HL,A,BC LD B,H LD H,A LD A,C LD C,L LD L,A LDIR XOR A LD (DE),A RET ; .FN2: DJNZ .FN3 ; получение полного пути и имени файла EX DE,HL LD HL,(.LAST_PSP_PTR) LD C,(HL) INC HL ADD HL,BC INC HL INC HL ; .loop LD A,(HL) LDI OR A JR NZ,.loop ; RET ; .FN3: ; ; ошибка LD A,DSS_Error.sys.INVALID_FUNCTION .error: SCF RET ;