/* * setdisk — сменить текущий диск (0=A, 1=B, ...) через ESTEX * CHDISK ($01). Возвращает число дисков в системе (из A) или * -1 + errno при ошибке (EINVDRV, если диска нет). */ #include #include int setdisk(uint8_t drive) __naked { (void)drive; __asm ;; __sdcccall(1): uint8_t-аргумент уже в A. push ix ld c, #0x01 ; ESTEX CHDISK rst #0x10 pop ix jr c, _setdisk_err ld e, a ; A = число дисков ld d, #0 ret _setdisk_err: call __errno_set ld de, #-1 ret __endasm; }