Прошу помощи. Пишу на z88dk и только начал изучать ассемблер. Потребовалось мне сделать загрузку файлов с дискетки. Т.к. ни в z88dk ни в spritepack подобных функций я не нашел, то пришлось вооружаться поиском, книгами и получилось вот это
Код:
void tr_dos_load (char *filename,char* dest)
{
sprintf(asm_filename,"%s",filename);
asm_adres=&asm_dat[0];
asm_len=0;
#asm
di
.LOAD
CALL SET_NAMEL ; готовим сист.
; переменные
LD C,10 ; ищем файл
CALL 15635
LD A,C
BIT 7,C
JR Z,LD_1
jp ext
RET
.LD_1 ; грузим...
LD A,C
LD C,8
CALL 15635
XOR A
LD (23801),A
LD (23824),A
LD A,3
LD HL,(_asm_adres)
LD C,14
CALL 15635
JP ext
.SET_NAMEL
LD HL,_asm_filename ; перекидываем
LD DE,23773 ; имя файла
LD BC,8
LDIR
LD A,67 ; тип файла м.б.
LD (23781),A ; любой, кроме
LD A,9 ; поиск файла
LD (23814),A ; по 9 символам
RET
.ext
ei
#endasm
sprintf(dest,"%s",asm_dat);
}
С выключенными прерываниями функция работает, но когда я включаю прерывания функцией sp_InitIM2(0xf1f1) сбрасывает спектрум при обращении. Помогите мне разобраться что не так и довести ее в работоспособное состояние.