<GreaseMonkey>
looking at the ISA DMA page on the wiki (trying to get an actual ISA SB16 working), and there's something claiming that 16-bit ISA DMA doesn't cross 64 KB boundaries
<GreaseMonkey>
unfortunately this contradicts the schematic for the IBM PC/AT, where it actually *does*, and the low bit of the page address is ignored
<GreaseMonkey>
this seems to not be the problem i'm hitting with trying to get this working on real hardware though
<zid`>
the 8237 can only index that much bus I think
<zid`>
so I assume there's some trickery that sticks the high bits, and the 8237 just uses the lower? would have to be 64k *aligned* then though...
<zid`>
16 bits from the 8237, 8 bits from an external latch, for 16MB of range, but the 8237 can't tell the external latch to increment, so it just wraps after nnFFFF
<zid`>
GreaseMonkey: re low bit, there's 8bit and 16bit dma, one on each 8327, you obviously don't need a low bit on one of those, is that maybe what you're looking at?
mrpops2ko has joined #osdev
<Shaddox404>
Is the website down again?
<Shaddox404>
I am unable to access it
<GreaseMonkey>
zid`: yeah i'm looking at that... and the MAR84 schematic for the IBM PC/AT (specifically pg96-97, sheets 14,15) backs up the claim earlier on in the doc that it can transfer a block of up to 128KB
<GreaseMonkey>
sheet 14: U112 connects the 16-bit 8237's XD7 line to XA16 when its ~OE line goes low, this line is called ~AEN2. the 8-bit one connects XD7 to XA15, the line being called ~AEN1.
<GreaseMonkey>
sheet 15: U124 contains the page registers. MD1 through MD7 drive A17 through A23. MD0 goes through a buffer gated by ~AEN1 before going into XA16. if ~AEN1 is high, this doesn't go through.
<GreaseMonkey>
i'll get the link for the actual reference manual
<GreaseMonkey>
i *think* DOSBox-X might follow the PC/AT on this matter, as i was actually having issues when i didn't factor stuff in properly
<GreaseMonkey>
it's quite feasible that a lot of boards omit the upper address bit from the 8237 instead of omitting the lower address bit from the page register
Shaddox404 is now known as [AWAY]
[AWAY] is now known as Shaddox404
<GreaseMonkey>
...oh what the hell, checking the DOSBox-X source, it seems ISA chipsets tend to behave how i've described it, while PCI chipsets and later tend to behave like the wiki describes it
<GreaseMonkey>
and it's a config option there, defaulting to the 128KB case
<GreaseMonkey>
the actual target machine with the actual ISA SB16 on it on the other hand is a PCI chipset
<GreaseMonkey>
...update: the reference manual for the 82317AB (PIIX4) used in said target machine is documented as *also* behaving as per the PC/AT
Shaddox404 has quit [Quit: (╯°□°)╯︵ ┻━┻]
guideX_ is now known as guideX
asarandi has quit [Quit: WeeChat 4.5.2]
asarandi has joined #osdev
mrpops2ko has quit [Ping timeout: 272 seconds]
karenw has quit [Ping timeout: 248 seconds]
eluks has quit [Remote host closed the connection]
eluks has joined #osdev
parabirb has quit [Quit: WeeChat 4.5.2]
zach has joined #osdev
parabirb has joined #osdev
zach is now known as tuttza
Matt|home has joined #osdev
jedesa has quit [Read error: Connection reset by peer]
jedesa has joined #osdev
ThinkT510 has quit [Quit: ThinkT510]
netbsduser has joined #osdev
GeDaMo has joined #osdev
ThinkT510 has joined #osdev
netbsduser has quit [Ping timeout: 260 seconds]
_whitelogger has joined #osdev
fkrauthan has joined #osdev
fkrauthan has quit [Remote host closed the connection]
fkrauthan has joined #osdev
nitrix_ is now known as nitrix
_whitelogger has joined #osdev
dotexe1337 has joined #osdev
tuttza has quit [Quit: tuttza]
kata has quit [Read error: Connection reset by peer]
kata has joined #osdev
<kof673>
eliminating read-only string data for meta reasons :D (since the location is seemingly either fixed, or the linker and loader handles, don't want either of those) https://0x0.st/s/Cl3614rk5rDX8FOBdsrqnQ/8DtO.c
<araxestroy>
what
<kof673>
i just don't want a separate section for those
<kof673>
a local variable solves that lol
<kof673>
then it is on the stack lol
<kof673>
like any other local variable lol
<araxestroy>
I mean rodata exists for a reason
<araxestroy>
but if your goal is to construct static strings on the stack and tank your cacheability for no reason I guess that one's on you chief
<kof673>
rodata is a property of whatever object format, this is generic
xenos1984 has joined #osdev
<kof673>
ideally, linker would have an option for either behavior, i just will use a define
<kof673>
*toolchain/linker/compiler, wherever
ThinkT510 has quit [Ping timeout: 252 seconds]
ThinkT510 has joined #osdev
_whitelogger has joined #osdev
kata has joined #osdev
dotexe1337 has quit [Remote host closed the connection]
<kof673>
a global variable or static would work too, it is just when you write: puts("foo") does it make a variable? is it just a pointer into some read-only data stored somewhere? linker magic does all this, i imagine the ability it could be rewritten by a script as: puts( get_datum_address("foo_string") ) and be dynamic/meta-tized
<kof673>
i'm not saying it is a good idea, how many of these types of thinsg are there :D
<kof673>
eliminating one class is a win for that
<kof673>
may have to write simple code and forgo some features, etc.
<kof673>
it will actually become something like that :D but have to handle datums too *( (cast_to_foo_function_pointer_type)( get_fn_address("foo") ) )( ...arg_for_puts, meta-tized as well lol... )
<kof673>
sXfooXputsX
jcea has joined #osdev
<\Test_User>
you can make the linker put it in whatever section you want with a linker script. if you just care about as few sections as possible, you *could* make it stuff everything into a single rwx section (not recommending that, but it is an option)
averymt has quit [Read error: Connection reset by peer]
Kryptik has joined #osdev
Kryptik has quit [Remote host closed the connection]
Kryptik has joined #osdev
karenw has joined #osdev
dutch has joined #osdev
<kof673>
it is just a stupid meta experiment, i imagine it will hit some wall, but how much can be meta-tized lol
<kof673>
ideally you would have -fDÿnamic_object -fmagiclink_at_runtime_with_code it is just how much can you get away with without writing a custom compiler dynamic object versus Dÿnamic code /s
<kof673>
an intermediate representation would be the proper place for such things perhaps, something that knows "that's a function call" and can rewrite it. or a bytecode/VM :D
<kof673>
my example pseudocode already has chicken and egg problem if itself uses a string for lookup, so would have to 2nd pass with script if those should be eliminated too, or use an enum, or defined integer values, etc. anyways :D
<kof673>
it is just how much late binding can we do basically :D
jcea has quit [Ping timeout: 252 seconds]
goliath has joined #osdev
karenw has quit [Ping timeout: 276 seconds]
eluks has quit [Remote host closed the connection]
eluks has joined #osdev
sprock has quit [Ping timeout: 260 seconds]
tuttza has joined #osdev
goliath has quit [Quit: SIGSEGV]
netbsduser has joined #osdev
innegatives has quit [Quit: Connection closed for inactivity]
innegatives has joined #osdev
goliath has joined #osdev
tuttza has quit [Quit: tuttza]
Matt|home has quit [Quit: Matt|home]
<geist>
woot, just scored a mac SE/30
<nortti>
:o
<nortti>
what kinda setup?
<nikolar>
geist: very nice
GeDaMo has quit [Quit: 0wt 0f v0w3ls.]
<Kryptik>
epic
<Kryptik>
make a mac68k operating system =0
<nikolar>
that sounds like fun
<Kryptik>
i have a powerbook 180 which has an 030 as well
<Kryptik>
tunnel vision though =<
<nikolar>
an 030, means you can write a proper memory protected os :P
<Kryptik>
yes, the se30 has an 030 too
<nikolar>
oh makes sense
<nikolar>
i forget which one is which
<Kryptik>
all of the other 030 models had "x" suffixed at the end, but they decided calling it the mac SEx wasnt a great idea
<Kryptik>
so that one became the se/30
<Kryptik>
XD
<nikolar>
kek fair enough
<Ermine>
so this week it was the first time i've saw a risc-v board
<nikolar>
they are pretty cheap to get online
<nikolar>
about the price of a raspi
<nikolar>
i mean they suck, but they are cheap
<netbsduser>
nikolar: at the cost of having to deal with the 030 mmu
<bslsk05>
github.com: lk/arch/m68k at master · littlekernel/lk · GitHub
<netbsduser>
i love the 030 mmu but it's frightening
<nortti>
how does it differ from the 040 mmu?
<heat>
nikolar: yeah rpi priced but still far from the value package
<nikolar>
heat: yeah, but if you want riscv, it's affordable
<netbsduser>
i only currently support the 040/060 mmu in my kernel for that reason (also because qemu emulates those but not 030 mmu)
<nikolar>
can't you just use 030 mmu as if it were 040
<nikolar>
i think 040 was a subset of 030
<nikolar>
feature wise
<Kryptik>
heat: all assembly? epic
<Kryptik>
ill take a look at this later
<heat>
not really?
<Kryptik>
ah, most is C except for arch
<nikolar>
also not heat's
<heat>
but this is geist's m68k OS
<Kryptik>
i been up all night soz xD
<netbsduser>
nortti: for instance page size can be any pow2 between 128 byte and 64 kib; there are up to 6 levels of tables (5 true table levels (pick how you want bytes in a vaddr to be split; table size customisable) + indirection (one pte says goto another pte)
<zid`>
that seems fine, the hard part is picking a system to use
<nikolar>
netbsduser: did you mean to ping me
<zid`>
nortti: We love you
<netbsduser>
i think 040 is a *feature* subset but it's more complex
<netbsduser>
nikolar: the both of you
<nikolar>
ah ok
<heat>
Ermine: this riscv board, was it running the nova nvidia driver
<heat>
on the rtx 4050
<nikolar>
no
<heat>
ah ok
<nikolar>
netbsduser: i think geist mentioned that he wrote his 68k mmu code for the 040 because it would work on 030 more or less as is
<heat>
maybe the BSP only supports linux 2.7
<heat>
that's fine
<zid`>
I'd just 512 byte map everything in as few levels as possible
<zid`>
fuck all the complexity
<zid`>
or 4k if lazy
<nikolar>
but your page tables eat up a lot of memory then kek
<netbsduser>
nikolar: it may be true, i haven't looked at it closely enough to say for sure
<heat>
512 byte map will have near the most levels possible i assume
<nikolar>
neither have i
<zid`>
heat: not if they're variable size and have a 'stop'bit
<zid`>
which is how I assume how you implement that thing
<nikolar>
zid`: basically everyone just picked one set of settings and stuck to them
<zid`>
nikolar: yea I figured
<nikolar>
that's why they scaled back on the 040
<zid`>
like ring0/ring3
<zid`>
intel could have removed r1/r2 in 1980
<zid`>
and nobody owuld have noticed :P
<nikolar>
they were officially removed on amd64 iirc, right
<zid`>
no idea
<netbsduser>
they talk a bit about the reasoning for the flexibility in the 68030 manual
<zid`>
I don't remember reading it, but I wouldn't be surprised
<nikolar>
netbsduser: except that in reality, most people didn't need or didn't want to bother
<nikolar>
like most unused hardware features kek
<netbsduser>
for example "if you are doing an AI system then you want small pages and lots of levels because that suits AI languages like lisp" or words to that effect
<nikolar>
i liked ai better when it was lisp
<netbsduser>
i was about to say the same
<nikolar>
now that it's python, it sucks
<heat>
nikolar: yes they don't exist for IA32e
<nikolar>
yeah neato
<netbsduser>
talk about an, as the zoomers say, aura loss
<nikolar>
kek
<nikolar>
zoomer here, can confirm, we talk like that all the time
<zid`>
we're back to good old 80s AI now at least
<nikolar>
right heat
<zid`>
where it's a stack of if() statements, but now they have an LLM underneath