ChanServ changed the topic of ##yamahasynths to: Channel dedicated to questions and discussion of Yamaha FM Synthesizer internals and corresponding REing. Discussion of synthesis methods similar to the Yamaha line of chips, Sound Blasters + clones, PCM chips like RF5C68, and CD theory of operation are also on-topic. Channel logs: https://freenode.irclog.whitequark.org/~h~yamahasynths
futarisIRCcloud has quit [Quit: Connection closed for inactivity]
<andlabs> also I may try cowgol
<andlabs> and maybe also the zmac assembler
<andlabs> asxxxx is proving to be a bit too quirky for my tastes
<andlabs> but doing this thing in assembler is starting to seem like a mistake
<Foone> andlabs: I'm indirectly mentioned in at least two LGR videos, but I can't remember which one I'm actually mentioned in
<Foone> there's a weird connection, though: I'm actually from the town LGR lives in
<whitequark> is that a 'technology connection'?
<TD-Linux> brown
<TD-Linux> I finally got a yamaha mu2000ex so my midi excursions can be technically on topic
<andlabs> Foone: brand new tandy 1000 unboxing
<andlabs> s/brand new//
brezza_dsa has joined ##yamahasynths
<brezza_dsa> sorry that I did not noticed the topic last month. I have salvaged old emu2413 source here: https://github.com/digital-sound-antiques/emu2413-legacy/releases
<brezza_dsa> v0.50, 0.51 and 0.55 is available but unfortunately I lost emu2413 v0.54 source which required by hoot.
<brezza_dsa> BTW does anyone use JT51 (YM2151 FPGA clone)? I would like to know its' accuracy.
<brezza_dsa> my friend is just implementing X68000 FPGA emulator and he is looking a 2151 core.
<superctr> i think it's quite accurate
<brezza_dsa> thanks!!
Patater has joined ##yamahasynths
l_oliveira has joined ##yamahasynths
<cr1901_modern> brezza_dsa: JT51 is pretty accurate, and the maintainer is pretty responsive to adding fixes
andlabs has quit [Quit: My MacBook has gone to sleep. ZZZzzz…]
andlabs has joined ##yamahasynths
<brezza_dsa> cr1901_modern: Thank you. we'll try to use it.
<andlabs> brezza_dsa: hi yes I'm the one that was looking at old versions of emu2413 =P I didn't realize it was the same emu2413 that was part of libkss, but I eventually gave up when I realized it was the hoot source code archive that was too old to be of much use
brezza_dsa has quit [Remote host closed the connection]
<cr1901_modern> andlabs: You can reach brezza_dsa at @ym2413 on hellsite
<andlabs> lol
sorear has joined ##yamahasynths
<cr1901_modern> Sarayan: When you're around, we started discussing 68000 in another room I idle in #j-core. The state the 68k saves on the stack inevitably came up. What do you know about the state saved from studying the die?
<cr1901_modern> state the 68k saves on the stack on exception*
<cr1901_modern> Since kevtris created that Genesis FPGA core for Analogue, I'm guessing that the state is at least _partially_ known
<TD-Linux> the 68000 exception frame is in the 68000 reference manual
<cr1901_modern> Including the processor-specific state saved that allows the 68k to continue mid-insn?
<superctr> the 68010 yeah
<superctr> all is in the M68000PRM
<TD-Linux> iirc that is 68010+
<cr1901_modern> I thought the 68k allowed this too, it just didn't save enough state to _restart_ an insn
<superctr> 68k couldn't interrupt in the middle of an instruction, apparently some computers did virtual memory on regular 68000 by having two of them running in parallel though with a small
<superctr> if one interrupted, the second one could be halted in time to set up the memory map
<cr1901_modern> Yes, that's the "standard" way to do it. But I thought the 68000, specifically, _could_ interrupt in the middle of an instruction, and most exceptions would work fine after returning.
<cr1901_modern> But page fault didn't.
<superctr> they solved it on the 68010 by making the address error and bus error exception dump more state to the stack
<superctr> that is documented in the M68000PRM as i mentioned
<cr1901_modern> >all is in the M68000PRM
<cr1901_modern> Oh, I somehow substitured M680*1*0PRM
<cr1901_modern> it appears I can't reafd
<cr1901_modern> or type
<superctr> the format of this stack frame is slightly different on later versions
<superctr> there is only one PRM and it covers the whole family
<cr1901_modern> Then I guess I'm confusing with something else... I vaguely recall that for a long time there was something about exception processing that nobody working on emulators knew.
<cr1901_modern> And it was only via REing the die and bus signals that ppl started learning.
<cr1901_modern> If the exception info is completely documented in the manual (which I didn't know), I must be thinking of something else
<superctr> well, maybe i'm pushing it a bit
<superctr> in fact it isn't fully documented
<superctr> just says "internal information, 16 words"
<superctr> :P
<cr1901_modern> 16 words... 1 word = 32 bits?
<superctr> 16 bits
<cr1901_modern> ahh right... dword == 32 bits
<sorear> this is 68k, not mips
<superctr> so 32 bytes or 256 bits
<sorear> ADD.W
<sorear> 32 bits = long
<cr1901_modern> Yes, I forgot lmao
<cr1901_modern> From what I've been told, saving this much state was notoriously slow. I can see why ._.
<cr1901_modern> Most CPUs finish the curr insn (interrupts and most exceptions) or just completely discard it's state and try again (some exceptions)
<superctr> i'd say the 68k is notoriously slow in general
<sorear> the 68000 is a fully pre-RISC design with multiple levels of microcode that I do not understand at all
<cr1901_modern> superctr: But the ISA is beautiful (read as: I actually like reading and writing it) :o
<superctr> beautiful to an assembly programmer
<cr1901_modern> opcode encoding is utterly horrific tho
<superctr> not so fun when you count cycles though, because there's a million different way to optimize your code
<superctr> it's better on RISC architectures when all instructions just complete in one or two cycles :)
<cr1901_modern> I have a book on compilers (Appel)... in one section it goes out of its way to say "68k's autoincr insns are too f***ed to be worth generating code for"
<cr1901_modern> not in that language of course
<cr1901_modern> Made me sad :(
<sorear> must be really old book because that's one of the few features that has largely survived
<superctr> at least the 68k isn't that terrible for high level programming languages
<cr1901_modern> sorear: 1998 I think?
<superctr> unlike, say, the Z80 which was invented in a time when nobody knew what a compiler was
<cr1901_modern> superctr: Did you see this? http://cowlark.com/2018-03-18-z80-arithmetic/index.html
<sorear> A64 and ppc both have postinc addressing modes
<superctr> you could probably write and get accepted a PhD paper on Z80 register allocation for C
<superctr> that is how fucked it is
* sorear has the opposite problem with a Z80 and doesn't really know how you're supposed to use one without a million spills
<cr1901_modern> My own experience is that "you concede register pressure is too high and be thankful the memory/cpu bandwidth isn't too horrible on systems where you'd use a z80"
<cr1901_modern> bandwidth ratio*
<superctr> of course
<superctr> but z80 also doesn't have a convenient way to access ram like the 6502 zeropage
<cr1901_modern> Which is also probably why it's not an accident that z80 and 65xx emulate stack machines well
<superctr> you have to go in with a 16-bit memory address or use the 16-bit registers or the slow index registers
<cr1901_modern> hmmm
<cr1901_modern> sorear: Oh it's A64 only? TIL
<sorear> A32 has it as wel
<cr1901_modern> ahhh
<sorear> but A32 isn't something you can point to when arguing that something is modern good practice
<superctr> oh, there is _one_ convenient memory access method
<superctr> the stack :P
<sorear> if A64 has a feature, people thought that feature was a good idea as recently as 2014
<sorear> and it looks like clang can generate ldr x1, [x2], #8
<cr1901_modern> Well, I'm happy postincr survived, b/c I think it's a cool type of insn :).
<sorear> at a high level, I'd just like to understand the design principles of the 68000 as well as I do more modern chips…
<cr1901_modern> I would bet it was probably the most complex CPU design (in terms of number of transistors) existing at the time, until iapx 432 came out.
<sorear> do you mean the 4320[1-5] individually or in combination
<cr1901_modern> in combination
<whitequark> superctr: i thought sdcc had a few such papers
brezza_dsa has joined ##yamahasynths
* cr1901_modern adds to the todo list to check those out
<brezza_dsa> andlabs: hi i thought hoot's emu2413 was primary copy from MSXplug around 2002. I have never tried to build hoot - it seems hard to get proper dependencies...
Xyz39808 has joined ##yamahasynths
Xyz_39809 has joined ##yamahasynths
Xyz_39808 has quit [Ping timeout: 252 seconds]
Xyz39808 has quit [Ping timeout: 260 seconds]
<brezza_dsa> i've also salvaged fmgen007a... but its newer than hoot's requirement https://www.dropbox.com/s/vjkpo629cf990rp/fmgen007a.zip?dl=0
<brezza_dsa> The fmgen author's site had been moved http://retropc.net/cisc/m88/ since 2003.
brezza_dsa has quit [Quit: Leaving...]
Nerionaya has quit [Quit: ZNC - http://znc.in]
Nerionaya has joined ##yamahasynths
<l_oliveira> on a side comment, plenty of interesting stuff disappeared from the internet when geocities.jp went offline a few years ago and a lot of of it is lost forever D:
<l_oliveira> a lot of it (sorry about the poor edit of the text line)