is-dos & memory
ZXNet echo conference «code.zx»
From Dmitry Sharikov → To All 24 August 1999
Hello dear, All!
This is where a question arose for people, cat. wrote/are writing programs under is-dos... I wanted
I would like to work with the upper memory, or rather the program, cat. not yet born (before
end), I used this memory, but how can I make sure that there is no conflict with
all sorts of ram disks?
We are talking about the 128th memory... You understand, the 48th memory is somehow
not interesting... ;)
With best wishes, Dmitry.
[ZX] [LETI]
From Dmitry Sharikov → To Oleg Grigoriev 26 August 1999
Hello to you, Oleg!!!
Once on Wednesday August 25, 1999 at 00:44:40 Oleg Grigoriev wrote to Dmitry
Sharikov on the topic 'is-dos & memory':
DS>> was born (to the end), I used this memory, but how to make sure
DS>> that there will be no conflict with all sorts of ram disks?
OG> No way. :) Use 128. And that's it.
What, it’s so simple, like, if a person has a RAM disk, then his problems?
Damn, I'll have to tinker with the 48th memory again... ;)
With best wishes, Dmitry.
[ZX] [LETI]
From Felix Knajzev → To Dmitry Sharikov 27 August 1999
Greetings, O venerable Dmitry!
[Thursday 26 August 1999] at [03:59:40] Dmitry Sharikov wrote a letter to
Felix Knajzev.
They discussed the topic "is-dos & memory". Let's continue what we started...
FK>> RAM disk driver with the ability to configure the number
FK>> used cans (or creat.com) and their order
FK>> padding. The last one is most important.
DS> Me too, because... I don't use a ramdisk... ;)
But I have to: there is no screw, but 512K of brains.
DS> Did you somehow create a ram disk (configured) in a cunning way?
If the RAM disk driver has a table for filling jars, and pages
128K memories are at the very end of the list (used by the system last
queue), then you just do it with creat.com
frame disk size for 320 blocks (one bank = 64 blocks; memory 128K = banks
1,3,4,6,7; 64*5=320) less than it
maximum volume. Naturally, for owners of 128K machines,
bummer. I mean, they generally break off on the frame disk. :)
DS> And also, where can you set the order of filling the cans?
In the body of the driver itself. Somehow a good driver flew by here,
(I have no idea who the author is) IMHO the fastest (2All: and even faster
is it possible?) and with the ability to configure the order of filling the cans.
Here it is:================= begin of file "ed_512+ .a" ==================
;Driver for 512K according to the Pentagon standard; #7ffd, 6&7 bits.
ORG 50000
DEFW #0000 ;no installation
DEFW dread
DEFW write
DEFW binit
;for dread and write:
;hl - address in memory
;de - start number block on disk
;b - number of blocks
DEFB #E0,#04
DEFB #00,#00
DEFB #00,#00
DEFB #00,#00
;page order table
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
; ^^^^^^^^^^^^^^^^^^^
;And here are our 128K memory pages.
;They will be used last.
;They can be excluded from the list altogether if creat.com'om
;a ramdisk will be created with 320 blocks less than
;its possible (maximum) volume.
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
N.E.G.
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),HLADD 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 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__
bit XOR A
RET
.
================= end of file "ed_512+ .a" ===================
And here is the same driver, but for 1M-Scorp (#1ffd/bit_4, #7ffd/bit_6&7):
================== begin of file "ed_sc1mb.a" ===================
Fast RAM drive for Scorpion
;with 1Mb RAM (!); Bit_4 or #1FFD; Bits_6&7 or #7FFD.
;Uses only additional upper
;memory! That is. "cans" from #08 to #3F!
;Ustpoystvo create on (3*8)+(4*8)=56*64=3584 blocks!
;Specially for Vlad Zinuk.
ORG 50000
DEFW #0000 ;no installation
DEFW dread
DEFW write
DEFW sew
;for dread and write:
;hl - address in memory;de - start number block on disk
;b - number of blocks
DEFB #E0,#04
DEFB #00,#00
DEFB #00,#00
DEFB #00,#00
;page order table
ptable DEFB #F0,#F1,#F2,#F3,#F4,#F5,#F6,#F7; set to "1" bit_5
DEFB #B0,#B1,#B2,#B3,#B4,#B5,#B6,#B7; to write to 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; reset to "0" bit_5
DEFB #90,#91,#92,#93,#94,#95,#96,#97; to write to 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
N.E.G.
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 B.C.
LD A,(HL)
POP HL
EX (SP),HL
PUSH BC
LD B,C
LD C,#00
LD L,C
D.I.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__
bit XOR A
RET
.
================= end of file "ed_sc1mb.a" ===================
Sincerely, Felix.
[I.ZX]