;R12 ;/////////////////////////////////////////////////////////////////////// ; Функция #08 (DSS_RESCAN). Пересканировать девайсы системы. ; ; вход: нет ; выход: A - номер последнего лог. диска в системе ;/////////////////////////////////////////////////////////////////////// ; INCLUDE 'ScanDRV.asm' ;!TODO код дико костыльный и будет переделан вместе с процедурой INITDVC SCANDRV: ; 1. запоминаем состояние прерываний ; - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -; LD A,R DI PUSH AF ; - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -; ; 2. узнаём букву бут-диска ; - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -; CALL BOOTDSK.GET ; - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -; ; 3. вызываем рескан ; - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -; ; A = Boot disk LD B,A LD A,Dss.DRV.RescanDRV LD C,Dss.DRV.RescanDRV RST ToDSS.DRV ; проверка на ошибку boot disk lost LD HL,.BOOT_DSK_LOST LD E, +(80-.BOOT_DSK_LOST.size)/2 ; coord X LD BC,.BOOT_DSK_LOST.size JP C,KERNEL_PANIC ; LD (LDRIVE),A ; - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -; ; 4. на всякий случай перечитываем дирректорию ; - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -; LD A,(CORE_BUFFERS.CurrentPath) SUB 'A' CALL OPENDSK LD HL,CORE_BUFFERS.CurrentDirectory CALL CHDIR JR NC,.exit LD HL,CORE_BUFFERS.CurrentDirectory LD (HL),0 ; - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -; ; 5. выход ; - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -; .exit: POP AF RET PO EI RET ; .BOOT_DSK_LOST: DZ "Boot drive lost o_O" .BOOT_DSK_LOST.size EQU $-.BOOT_DSK_LOST ; - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -; ;/////////////////////////////////////////////////////////////////////// ;