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


тема: RAMdisk next version! (было bbs: ram_disk)



от: Denis Parinov
кому: Aleksandr Majorov
дата: 24 Jun 1997
* Message from gate SpbZxNet<=>FidoNet.


Hа днях, 21 июня 97, в 04:16, Aleksandr Majorov писал к Denis Parinov:

Рад приветствотать тебя, Aleksandr!

AM>>> Список всех рестартов дам позжее...

DP>> Када?

AM> скоро-скоро...
AM> ТОка пожалеешь ты об этом...

Ж8-( ) Уже пожалел!!!


AM> --------------- отсюдава ---------------

[skip]

LD L,A
LD H,0 ; Считаем
ADD HL,HL ; начальный
ADD HL,HL ; адрес(смещение)
ADD HL,HL ; на рамдиске
ADD HL,HL
EX AF,AF'
ADD A,L
JP NC,L000
INC H
L000 LD L,A

AM> -------------- досюдава ----------------

AM> зЫ-зЫ!
AM> Глюк-с: насколько я понял ты номер сектора
AM> [E] прибавляешь к амладш. байту дресу?
AM> Дык размер сека - 256 байт = #0100

Hу я так и знал, что в моем творении кто нить
запутается :( в HL мы имеем смещение в секторах
см. ниже, а не в байтах.

AM> Далее: подсчетом такого типа мы теряем
AM> на рам-диске 7 секторов! 1792 байта!!!
AM> (tkr0, sec 9...15)!!!

Hу яж спрашивал - обычный диск или свой формат.

AM> А теперь по существу:
AM> как раз основные 128К трогать низзя, т.е.
AM> рам-диск под себя берет верхнюю пямять =>
AM> отпадает необходимость в табличке страниц.

Хе-хе, как-же не трогать, а как в нее грузить то?

Hу ладно повторим:

FIRST_B EQU 8 ; RAMdisk начинается с
; логического банка 8
POINT1 RET ; Резерв для винта
NOP
NOP
POINT2 LD A,E ; Точка входа.
EX AF,AF'
LD A,D ; Берём трек 'D'
PUSH HL
EXX
LD L,A ; Считаем
LD H,0 ; сколько
ADD HL,HL ; это будет
ADD HL,HL ; в секторах
ADD HL,HL ;
ADD HL,HL ;
EX AF,AF'
ADD A,L ; прибавляем
JP NC,L000 ; секторы из 'E'
INC H ; в HL имеем смещение
L000 LD L,A ; _в секторах_

; LD DE,7
; AND A
; SBC HL,DE
; где-то здесь надо отнят 7 секторов
; если дорожка не нулевая, чтоб память
; съэкономить ;)

EXX
LD A,C ; запоминаем команду
EX AF,AF' ; читать/писать
LD A,B
LD C,#10 ; делаем
ADD A,E ; E + B = Всего секторов
L001 CCF
SUB C ; отнимаем дорожку
JP C,L002 ; если дорожки закончились!
INC D ; иначе продалжаем.
JP L001
L002 ADD A,C
LD E,A ; кладем в 'E'
EXX
LD BC,#0040 ; считаем
LD A,FIRST_B ; банк
NBANK SBC HL,BC ; - #40 секторов (банк)
JP C,BANK_OK
INC A
JP NBANK
BANK_OK ADD HL,BC
LD (FROMRAM+1),A ;читать из полученого банка
LD A,(IY+5) ; банк в который
AND #07
LD (TORAM+1),A ; производить чтение/запись
LD H,L ; в HL смещение в секторах
LD L,0 ; в пределах одного банка
LD DE,#C000 ; умножаем на 256 прибавляем
ADD HL,DE ; адрес начала банка
EX AF,AF' ; в HL имеем адрес на RAMе
OR A ; Что была за команда?
JP Z,NOSAVE ; чтение.
EX (SP),HL ; нет запись.
LD A,(FROMRAM+1)
LD (TORAM+1),A ; меняем параметры
LD A,(IY+5) ; наоборот
AND #07
LD (FROMRAM+1),A
NOSAVE EXX
LD A,B
EXX
LOADING EX AF,AF'
CALL FROMRAM ; Source bank
LD DE,BUF
LD BC,#0100
LDIR
BIT 7,H ; это был последн.
CALL Z,INCFROM ; сектор в банке
EX (SP),HL
EX DE,HL
CALL TORAM ; Destination bank
LD HL,BUF
LD BC,#0100
LDIR
EX DE,HL
BIT 7,H
CALL Z,INCTO
EX (SP),HL
EX AF,AF'
DEC A
JP NZ,LOADING
LD BC,#1FFD ; Off расширенную память
XOR A
OUT (C),A
LD A,(IY+5)
OR #10
LD B,#7F
OUT (C),A
EXX
POP HL
RET

INCTO LD A,(TORAM+1)
INC A
LD (TORAM+1),A
SET 7,H
SET 6,H
RET

TORAM LD A,#00
PUSH HL
PUSH BC
LD B,0
LD C,A
LD HL,RAMS
ADD HL,BC
LD BC,#1FFD
LD A,(HL)
LD L,A
RLCA
AND #10
OUT (C),A
LD A,L
LD B,#7F
AND #07
OR #10
OUT (C),A
POP BC
POP HL
RET

INCFROM LD A,(FROMRAM+1)
INC A
LD (FROMRAM+1),A
SET 7,H
SET 6,H
RET

FROMRAM LD A,#00
PUSH HL
PUSH BC
LD B,0
LD C,A
LD HL,RAMS
ADD HL,BC
LD BC,#1FFD
LD A,(HL)
LD L,A
RLCA
AND #10
OUT (C),A
LD B,#7F
LD A,L
AND #07
OR #10
OUT (C),A
POP BC
POP HL
RET

RAMS DB #00,#01,#03,#04,#05,#06,#07 ;128K memory
DB #0F,#0E,#0D,#0C,#0B,#0A,#09,#08 ;перевернутый RAMdisk

; а насчет таблицы, имхо лучше с ней
; тогда можно RAMdisk конфигурировать
; чтоб тень не затирал!

BUF DS 256,0 ; секторный буфер

Прог сделал на Scorpion, но _не проверял_! Спринтер вот
с отладчиком подружу тада другое дело будет.

P.S. Кста, а если в компе процессор 14 или 28 MHz, как
MMDешку подружить? Тормаза чтоль ставить :(? Hеохото!

AM> А я ...этот, как меня там?.... А!
AM> Aleksandr (*MAS*)

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

-+- ZX WORD 2.5+
+ Origin: SpbZxNet.org (812/08.16)




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

Похожие статьи:
Презентация - варгеймы которые мы выбираем.
Юмор - СцeнoвыE ПрикOлЫ и АнeКдoтЫ.
О всем про все - "Проклятые места России".
Вступление - уникaльнoe aтмoсфeрнo-прoгрeссивнoe явлeниe TargetT'a нaрoду.
Анонс - новая игра из Питер - MORTAL KOMBAT.

В этот день...   26 апреля