Пакет документации о рестартах iS-DOS 1969 г.

Процедуры - примеры системных процедур.


Проверка системы на Chic/Classic (show.com)

#5DD1        DI

LD HL,#0044       ;проверять будем байт по адресу #44

LD A,(HL)            ;берем байт

LD E,A               ;сохраняем

DEC (HL)          ;уменьшаем на 1 значение байта в ПЗУ

DEC A                ;уменьшаем на 1 значение прочитанного байта

XOR (HL)          ;сравниваем, если система Chic, то байт в ПЗУ изменится, и операция

;XOR даст Z. Иначе NZ - мы в Classic

LD (HL),E            ;восстанавливаем байт в ПЗУ на тот случай, если мы в Chic

EI

Проверка на наличие места под кэшем

LD C,#10          ;$g_com

RST #10

EXX

LD BC,5           ;+5 - адрес кэша

ADD HL,BC

LD E,(HL)

INC HL

LD D,(HL)         ;DE - адрес кэша

LD HL,END       ;адрес конца буфера

AND A

SBC HL,DE

JR C,$+6          ;если адрес конца буфера меньше адреса кэша, то О.К.

SCF                 ;иначе данные "налезут" на кэш, вываливаемся с ошибкой 130

LD A,130

RET

Тут находится сама программа

BUFER                                ;тут располагается буфер, наличие места под которого надо проверить

END             EQU BUFER+[размер буфера]       ;указатель на конец буфера

Подсчёт контрольной суммы открытого файла

;Фрагмент ide_tune.com

LD HL,CALC                   ;считаем контрольную сумму измененного

LD C,#48                          ;файла с помощью резидента calc.res

RST #10

JR NC,FLUSH                ;если резидент был найден и все ОК.

CP 37                               ;если не было резидента, то просто оставим драйвер

;с непосчитанной КС

;и выйдем, сделав flush

SCF                                 ;при любой другой ошибке выходим в оболочку

RET NZ                          ;с ошибкой

FLUSH        …

CALC          DEFM "@calc"

DEFB 13

Вычисление длины файла в секторах

;Процедура справедлива для файлов размером не более 255 секторов.

;На входе в HL - адрес описателя файла

LD DE,14          ;+14 - младший байт длины файла

ADD HL,DE

LD A,(HL)          ;извлекаем младший байт

INC HL            ;+15 - старший байт длины (*256 байт)

LD B,(HL)

OR A               ;проверка, не кратна ли длина файла 256 байт

JR Z,$+3           ;если кратна, то старший байт и будет указывать размер файла в секторах

INC B              ;иначе старший байт увеличим на 1 и получим размер файла в секторах

...

;На выходе в регистре B будет размер файла в секторах.

 




СОДЕРЖАНИЕ:


  Оставте Ваш отзыв:

  НИК/ИМЯ
  ПОЧТА (шифруется)
  КОД



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

Похожие статьи:
История - История KrNews от VTS'а.
Железо - о винчестерах: что это такое, зачем оно нужно и как выглядит изнутри.
B.B.S. Новости - О новой B.B.S. - Denison-BBS.
Почта - Письма читателей.
События - Chaos Constructions 2000. Мнения.

В этот день...   21 ноября