ZXNet эхоконференция «code.zx»


тема: что енто за рестарт?



от: Valerij Kozhevnikov
кому: All
дата: 06 Jul 1998
Hello All! Кто знает, что за рестарт такой в скорпе: LD C,#28 RST 8 DEFB #81 Hайден в пзу трдос. А то у мя книжка старая, там только до #26 есть. Я его юзал, вроде упрощенная копия #23, т.е. умеет исполнять только "автоподключение". Чисто визуально - работает быстрее, т.е за один прыжок бошек. Быстрая точка входа? И для С=#27 аналогично, plz. Если есть таковой. :-/ И что такое Tr-dos mirror on/off в меню винтовых утилит? Копал я тут свой трдос, и обнаружил там кое-что. Когда-то я думалъ, что перехват обращений к дисководу делается аппаратно, то бишь в каком-то месте подменяется ПЗУ, аналогично #3Dxx. Все оказалось проще. Hо дело не в этом. Кто нить знает как обнаружить наличие/от- сутствие винта HЕ используя #24 функцию #81 рестарта "иденти- фикация HDD". В этом рестарте есть многомаздайный глюкъ: при его (рестарта) исполнении, с винта на указанный адрес читается паспорт, HО теневик зачем-то берет из этого паспорта данные о геометрии (кол-во цилиндров/головок/секторов) и прописывает в свои пере- менные (слава Богу что не в нврам). У мя у одного знакомого в паспорте геометрия 560/6/26, а на самом деле 1024/5/17. И после ентого рестарта ему надо топтать "стрелка влево + ресет", т.к. начинаются диск еррор, или лезть в меню сетуп ХДД, чтобы геометрию исправить. И говорят, таких неправильных винтов на удивление много, осо- бенно среди старых моделей. У другого вообще одна голова грохнута, и у него поэтому из- рядный кусок винта пропадает. Реакция на рестарт аналогичная. ЧТО ДЕЛАТЬ??? Кодю тут драйверок для одного муз. редактора, и пишу поти- хоньку описалово всего ентого хозяйства, дабы потом все кучей отправить Дисмастеру для вставки в Мелон. А тут глюкъъъъ... Рестарт юзать стремно. Перелопатил весь трдос, нашел кучу обращений к винту. Принцип такой: на адрес #5CBF кладется RST 8 : DB #8x : RET, и неявно выполняется CALL #5CBF. Процедурка которая енто делает лежит по адресу #0826. См. ниже, там оно. Я ставил ловушку на #5CBF, и перечитывал диск, срабатывала сначала с C=#28 (см. в начале письма), потом с C=#01 (выбор дисковода). И по области #800 - #1000 там и сям раскиданы процедурки чтой-то хитро читающие из порта #7FBA, и в зависимости от про- читанного что-то такое хитрое они делаютъ. :)) Я читал всяко, всегда из #7FBA приходит #7F. Хотя, судя по коду, бывает иначе. Догадки есть, но может кто знает, или тоже догадывается? Может полностью дизассемблер куска ПЗУ сюда кинуть? Вот тут немного: ;замечено использование рестартов: ;#81 (дисковая БИОС), функции #01,#02,#05,#06,#28. ;#82 (работа с переменными биоса), смещения #0D,#1D. ORG #0826 BIOS EX (SP),HL ;процедура вызова RST 8. PUSH AF LD A,#CF LD (L5CBF),A LD A,(HL) INC HL LD (L5CC0),A LD A,#C9 LD (L5CC1),A POP AF EX (SP),HL PUSH HL LD HL,L3D2F EX (SP),HL PUSH HL LD HL,L5CBF EX (SP),HL RET LD DE,L4000 LD A,#7 JP #0B L84C RST #20 LD D,H RRA RET C RST #20 LD A,E DEC DE LD A,(L5CF6) LD BC,L7FBA IN C,(C) CP #1 JR Z,L867 JR NC,L86B BIT 7,C JR NZ,L8A3 JR L86F L867 BIT 6,C JR NZ,L8A3 L86B CP #4 JR NC,L8A3 L86F LD DE,(L5CF4) LD HL,(L5D00) LD BC,L105 ;чтение LD A,(L5CFE) CP #A0 JR NZ,L881 INC C ;или запись сектора L881 CALL BIOS DEFB #81 JR C,L88B POP HL POP DE EI RET [хомяк погрыз] RST #38 RST #38 LD (L5CF6),A LD BC,L7FBA IN C,(C) CP #1 JR Z,L914 JR NC,L917 BIT 7,C RET NZ JR L91A L914 BIT 6,C RET NZ L917 CP #4 RET NC L91A OR #80 LD C,#28 ;не знаю такого. CALL BIOS ;явно какое-то подключение. DEFB #81 LD A,(L5CF6) JR NC,L92D CP #2 RET C L92A JP L3EE7 L92D LD HL,L5D16 LD C,A LD A,#3C OR C LD (HL),A LD A,(L5CF6) LD C,#1 ;выбор дисковода CALL BIOS DEFB #81 JR C,L92A CALL L3E08 LD (HL),#0 CALL L3E11 LD (HL),#83 LD A,#80 LD (L5CCD),A POP HL RET [хомяк погрыз] RST #38 RST #38 LD A,(L5CF6) PUSH BC LD BC,L7FBA IN C,(C) CP #1 JR Z,LA16 JR NC,LA1A BIT 7,C JR NZ,LA2D JR LA1E LA16 BIT 6,C JR NZ,LA2D LA1A CP #4 JR NC,LA2D LA1E POP BC LD D,C PUSH BC LD C,#2 ;позиционирование CALL BIOS ;на логический трек DEFB #81 POP BC JP C,L3EE7 POP HL RET LA2D POP BC JP L1FEB LD A,(L5CF6) LD BC,L7FBA IN C,(C) CP #1 JR Z,LA45 JR NC,LA49 BIT 7,C JR NZ,LA4F JR LA4D LA45 BIT 6,C JR NZ,LA4F LA49 CP #4 JR NC,LA4F LA4D POP HL RET WBR Jason. Powered by ScorpionZS256turbo+/SMUC/HDD'IDE130Mb/FDD'800/ /CMOS/Cache8k/Covox/ATkbd/Mouse/CDOS...




Темы: Игры, Программное обеспечение, Пресса, Аппаратное обеспечение, Сеть, Демосцена, Люди, Программирование

Похожие статьи:
Развитие платформы - FAQ Sprinter: Вопросы и ответы.
Обзор игр - Virtue da dirty soul, Lord of Darkness.
Scene - плацебоги: "placebo: вы плацебоги, мы вас любим".
Анекдоты - лучший анекдот недели.
Использование GIMP в pixel art - Рисование, Работа с палитрой, Конвертация изображений в палитровые , Сохранение палитры, Сохранение BMP.

В этот день...   8 мая