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)




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

Похожие статьи:
Стихи - Фелиста.
RED HAWK - Описание игры RED HAWK.
От редактора - последние события из жизни издателя газеты.
Приветы - Хотелось бы передать привет...
Обзор софта - а есть-ли асм? Кроме TASM'a и ALASМ'a реальных ассемблеров и нет вовсе?

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