ZX Time
#10
22 ноября 2002 |
|
Кодерам - вариант организации работы с Дисководом.
Кодерам ──────────────────────────────────────── ВАРИАНТ ОРГАНИЗАЦИИ РАБОТЫ С ДИСКОВОДОМ (С) Александр Сизенко (Alex_S) Судя по последним релизам, например, Slider`a, перенос программ c ленты в TR- DOS еще не потерял своей актуальности. По сему нижеприведенный материал, навер- ное, будет полезен. Некоторые игровые программы имеют функции отгрузки/загрузки текущего coc- тояния игровой ситуации на магнитофон. Если данная программа не портит систем- ную область, то проблем при "диcкoнaфи- гaции" в принципе не возникает. Сложнее, если программа поступает противным обра- зом, например: располагая там свое тело. Хочу предложить читателям, наверное, один из самых простых способов организа- ции работы таких игр c дисководом, раз- paбoтaнный автором буквально методом "научного тыка" и ни в коей мере не претендующего на его оригинальность. LD HL,#5С00 ;берем и стираем LD DE,#5С01 ;на хрен систем- LD ВС,#013A ;ную область LD (HL),L ;Бейсика и TRDOS LDIR LD IY,#5C3A ;восстанавливаем ;стандартное ;значение IY LD A,#FF LD (IY),A ;кидаем сюда #FF ;(просто так на- ;до) LD (#SCC8),A ;если этого не ;сделать, будут ;неприятности ;при обращении ;ко второй поло- ;вине диска LD (#5D0C),A ;и сюда (зачем ;не знаю) LD A,#С9 ;без команды RET ;ничего работать ;не будет LD (#SCC2),A ЕХ AF,AF` ;в A` будем по- ;сылать 5 или 6 ;для LOAD/SAVE LD С,A ;и помещать в С LD HL,#6000 ;допустим, #6000 ;адрес блока те- ;кущего состоя- ;ния COUNT LD DE,#0000 ;B (COUNT+1) не- ;обходимо занес- ;ти после загру- ;зки (и возмож- ;ной распаковки) ;программы зна- ;чение слова по ;адресу #5CF4 ;(счетчик сек- ;тор, трек),т.e. ;загружать/сохр- ;aнять будем в ;конце тела про- ;граммы, соотве- ;тственно длину ;моноблока Бей- ;cuk - программы ;увеличим на ве- ;личину регистра ;B (см. ниже) LD B,1 ;к примеру, за- ;пись не превы- ;шает 256 байт CALL #3D13 ;c некоторым ;трепетом входим ;в TR-DOS Замечу, что все это работает только c драйвом A, если Вы хотите, чтобы это работало на диске B или даже на С и D, то необходима небольшая доработка при установке системных переменных: LD A,#FF ............ LD (#SCC9),A ;для "B" этого ;хватит LD (#5CCA),A LD (#5CCB),A ;для С и D ............ DRIVE LD A,0 ;в ячейку ;DRIVE+1 после ;загрузки ;программы LD (#5D16),A ;необходимо ;занести копию ;ячейки #5D16 ;(число 60+номер ;накопителя) Обращение к этой п/п для LOAD будет таким: ........ LD A,5 ;или LD A,6 для ;SAVE ЕХ AF,AF` CALL DOS ........ Напомню, что процедура #3D13 рабо- тает только c первым режимом прерывания. При необходимости, выключим второй режим на время обращения. Ну и естественно, если в системной области Бейсика расположено тело программы, сохраняем и восстанавливаем ee значение. * * *
Другие статьи номера:
Похожие статьи:
В этот день... 3 декабря