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


тема: ис-дос & память



от: Dmitry Sharikov
кому: All
дата: 24 Aug 1999

Привет многоуважаемый(ая), All !

Вот тут вопрос возник к людям, кот. писАли/пишут проги под ис-дос... хотелось
бы поработать с верхней памятью, точнее чтобы прога, кот. еще не родилась (до
конца), юзала эту память, но как убедиться, что не будет конфликта с
рам-дисками всякими ?
Речь идет про 128-ю память... Сами понимаете, 48-я пямять - это как-то
неинтересно... ;)

With best wishes, Dmitry.

[ZX] [ЛЭТИ]

от: Dmitry Sharikov
кому: Oleg Grigoriev
дата: 26 Aug 1999

Приветик тебе, Oleg !!!

Однажды в Среду 25 Августа 1999 в 00:44:40 Oleg Grigoriev написал(а) to Dmitry
Sharikov на тему 'ис-дос & память':

DS>> родилась (до конца), юзала эту память, но как убедиться,
DS>> что не будет конфликта с рам-дисками всякими ?
OG> Hикак. :) Используй 128-ю. И всё.

Что, так просто, типа, если чел с рам-диском, то его проблемы ?
блин, опять с 48й памятью ковыряться придется... ;)

With best wishes, Dmitry.

[ZX] [ЛЭТИ]

от: Felix Knajzev
кому: Dmitry Sharikov
дата: 27 Aug 1999
Приветствую тебя, о досточтимый(ая) Dmitry!

[Четверг 26 Август 1999] в [03:59:40] Dmitry Sharikov начертал(а) письмецо к
Felix Knajzev.
Обсуждали они тему "ис-дос & память". Продолжим начатое...

FK>> драйвер рам-диска с возможностью конфигурировать число
FK>> использованных банок (или creat.com) и порядок их
FK>> заполнения. Посленее наиболее важно.

DS> У меня тоже, т.к. я рам-диск не юзаю... ;)

А мне приходится: винта нет, а мозгов - 512К.

DS> А ты как-то по-хитрому создавал рам-диск (конфигурировал) ?

Если в драйвере рам-диска есть таблица заполнения банок, и страницы
128К-памяти находятся в самом конце списка (используются системой в последнюю
очередь), то creat.com'ом просто делаешь
размер рам-диска на 320 блоков (одна банка = 64 блока; память 128К = банки
1,3,4,6,7; 64*5=320) меньше, чем его
максимальный объём. Естественно, владельцев 128К-машин ждёт
облом. В смысле - на рам-диск они вообще обламываются. :)

DS> И еще, а где можно задать порядок заполнения банок ?

В теле самого драйвера. Тут пролетал как-то хороший драйверок,
(кто автор - понятия не имею) имхо наиболее быстрый (2All: а ещё быстрее
можно?) и с возможностью конфигурирования очерёдности заполнения банок.
Вот он:

================= begin of file "ed_512+ .a" ==================
;Драйвер для 512К по стандарту Пентагона; #7ffd, 6&7 bits.

ORG 50000

DEFW #0000 ;без инсталляции
DEFW dread
DEFW write
DEFW binit

;для dread и write:
;hl - адрес в памяти
;de - номер нач. блока на диске
;b - кол-во блоков

DEFB #E0,#04
DEFB #00,#00
DEFB #00,#00
DEFB #00,#00

;таблица очередности заполнения страниц

ptable DEFB #D0,#D1,#D2,#D3,#D4,#D5,#D6,#D7
DEFB #90,#91,#92,#93,#94,#95,#96,#97
DEFB #50,#51,#52,#53,#54,#55,#56,#57
DEFB #11,#13,#14,#16,#17
; ^^^^^^^^^^^^^^^^^^^
;А вот и наши странички 128К-памяти.
;Они будут использоваться в последнюю очередь.
;Их можно вообще исключить из списка, если creat.com'om
;будет создаваться рам-диск на 320 блоков меньше, чем
;его возможный (максимальный) объём.

dread XOR A
JR WORK__
write LD A,#EB
WORK__ LD (EXCH_1),A
LD (EXCH_2),A
LD A,H
ADD A,B
JR C,ERR_07
ADD A,#40
JR NZ,ERR_07
DEC A
ADD A,L
ERR_07 LD A,#07
RET C
JR NEXT__

LOOP__ LD A,E
OR #C0
PUSH AF
NEG
LD C,B
CP B
JR NC,LLL1
LD C,A
LLL1 LD A,B
SUB C
LD B,#00
EX DE,HL
PUSH HL
ADD HL,BC
EX (SP),HL
ADD HL,HL
ADD HL,HL
LD L,H
LD H,B
LD B,A
PUSH BC
LD BC,ptable
ADD HL,BC
POP BC
LD A,(HL)
POP HL
EX (SP),HL
PUSH BC
LD B,C
LD C,#00
LD L,C
DI

LD (STORE+1),BC
LD BC,#7FFD
OUT (C),A
STORE LD BC,0

EXCH_1 EX DE,HL
_LDI
LDI
LDI
LDI
LDI

LDI
LDI
LDI
LDI

LDI
LDI
LDI
LDI

LDI
LDI
LDI
LDI
JP PE,_LDI

EXCH_2 EX DE,HL

LD A,#10
LD BC,#7FFD
OUT (C),A
EI

EX DE,HL
POP BC
POP DE
NEXT__ INC B
DJNZ LOOP__
binit XOR A
RET
.

================== end of file "ed_512+ .a" ==================

А вот тот же драйвер, но для 1М-Скорпа (#1ffd/bit_4, #7ffd/bit_6&7):

================== begin of file "ed_sc1mb.a" ==================
;Быстpый дpайвеp RAM-диска для Scorpion'а
;с 1Mb RAM (!); Bit_4 of #1FFD; Bits_6&7 of #7FFD.
;Использует только дополнительную веpхнюю
;память! Т.е. "банки" от #08 до #3F!
;Устpойство создавать на (3*8)+(4*8)=56*64=3584 блока!
;Специально для Vlad Zinuk.

ORG 50000

DEFW #0000 ;без инсталляции
DEFW dread
DEFW write
DEFW binit

;для dread и write:
;hl - адрес в памяти
;de - номер нач. блока на диске
;b - кол-во блоков

DEFB #E0,#04
DEFB #00,#00
DEFB #00,#00
DEFB #00,#00

;таблица очередности заполнения страниц

ptable DEFB #F0,#F1,#F2,#F3,#F4,#F5,#F6,#F7; установлен в "1" bit_5
DEFB #B0,#B1,#B2,#B3,#B4,#B5,#B6,#B7; для записи в bit_4 of #1FFD!
DEFB #70,#71,#72,#73,#74,#75,#76,#77
DEFB #30,#31,#32,#33,#34,#35,#36,#37
;
DEFB #D0,#D1,#D2,#D3,#D4,#D5,#D6,#D7; сбpошен в "0" bit_5
DEFB #90,#91,#92,#93,#94,#95,#96,#97; для записи в bit_4 of #1FFD!
DEFB #50,#51,#52,#53,#54,#55,#56,#57

dread XOR A
JR WORK__
write LD A,#EB
WORK__ LD (EXCH_1),A
LD (EXCH_2),A
LD A,H
ADD A,B
JR C,ERR_07
ADD A,#40
JR NZ,ERR_07
DEC A
ADD A,L
ERR_07 LD A,#07
RET C
JR NEXT__

LOOP__ LD A,E
OR #C0
PUSH AF
NEG
LD C,B
CP B
JR NC,LLL1
LD C,A
LLL1 LD A,B
SUB C
LD B,#00
EX DE,HL
PUSH HL
ADD HL,BC
EX (SP),HL
ADD HL,HL
ADD HL,HL
LD L,H
LD H,B
LD B,A
PUSH BC
LD BC,ptable
ADD HL,BC
POP BC
LD A,(HL)
POP HL
EX (SP),HL
PUSH BC
LD B,C
LD C,#00
LD L,C

DI
LD (STORE+1),BC
LD BC,#7FFD
LD (MEM1+1),A
AND %11011111
OUT (C),A
MEM1 LD A,0
LD B,#1F
AND %00100000
SRL A
OUT (C),A

STORE LD BC,0

EXCH_1 EX DE,HL
_LDI
LDI
LDI
LDI
LDI

LDI
LDI
LDI
LDI

LDI
LDI
LDI
LDI

LDI
LDI
LDI
LDI
JP PE,_LDI

EXCH_2 EX DE,HL

XOR A
LD BC,#1FFD
OUT (C),A
LD A,#10
LD B,#7F
OUT (C),A
EI

EX DE,HL
POP BC
POP DE
NEXT__ INC B
DJNZ LOOP__
binit XOR A
RET
.

================== end of file "ed_sc1mb.a" ==================


С уважением, Felix.

[I.ZX]




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

Похожие статьи:
Сидю... - Werewolves опять выпил пиво и засел за Marazm.
Credits - авторы газеты.
Iron - взлом телефонных карт для бесконечных звонков (вариант без кнопки).
ANOTHER WORLD - Перепалка (о журнале AMIGA RULES).
Doomdarks Revenge - полное описание ролевой игры, в которой вам предстоит сражаться со злом.

В этот день...   28 марта