The code is pretty much unreadable, there isn't even whitespace between command and operands. But my SMSQ/E AY code is based on the QSound code, just developed much further and IIRC also debugged a lot. It's written in a device independent way, making a new QSound compatible ROM out of that should be fairly easy (would also include QSOUND device then).aalea wrote:Can you share the source code?, I think will be very interesting, very didactic, to have the source code (hopefully with comments)
QSound and QPrint Interface
- mk79
- QL Wafer Drive
- Posts: 1349
- Joined: Sun Feb 02, 2014 10:54 am
- Location: Esslingen/Germany
- Contact:
Re: QSound and QPrint Interface
Re: QSound and QPrint Interface
(I deleted this message, because i don't know why, I posted it twice, please check the next one)
Last edited by aalea on Thu Sep 29, 2022 6:40 pm, edited 2 times in total.
Re: QSound and QPrint Interface
aalea wrote:My idea is a bit diferent, more important thing:Silvester wrote:Yes, I used simple inverter (74HC14) with 1K from output to one side of crystal and 33pF to 0V, other side of crystal to input, with 4M7 across crystal. To switch between clocks I would have used 74HC00 with spare PB output controlling clock source with something like this:aalea wrote:I think that a second 2Mhz clock can be easy done with 1 74LS03 and a 2Mhz crystal, I will try to find one an check if work, anyway...Code: Select all
__ 2MHz clock-------------| ) __ | )o--------| ) +5v --<5K>-- --|__) | )o---------AY clock | __ | ------|__) control----+--| ) | | (PB?) | | )o--- | +--|__) | | __ | -----------| ) | | )o---- E clock---------------|__)
I understant that PB pins are low by default, and should provide E clock in this situation (for compatibility with old software X'D) and when the pin go 1, enable de 2Mhz.
I was thinking in the unused gates already in the board, perhaps with a smd oscilator, and use the Open colector output of the 74LS03 (one gate less), to be something like this:
Code: Select all
+5v--+-------------------------<5K>---- _|__ | | | 2Mhz __ | | |----------------| ) | |__| | )o---------+-------AY clock gnd -+ -------------|__) | | __ | control----+--| ) | (PB?) +--| )o-- | +--|__) | | | __ | ---| ) | | )o----------- E clock----------------|__)
Aps-- and should be possible to make a simple superbasic program that open a pipe a fetch the PSG via AY_POKE command from the ouput of your player (register change dump) on a second task?Silvester wrote:No, the QSOUND device is specific to QPC2v5. The real hardware will need to be written to explicitly.aalea wrote:I'I can't test your player yet, but reading the instructions won't it be enough for this card to use something like EX AYplayer tunefile, QSOUND1T0F75000P0V255 ?
- NormanDunbar
- Forum Moderator
- Posts: 2426
- Joined: Tue Dec 14, 2010 9:04 am
- Location: Leeds, West Yorkshire, UK
- Contact:
Re: QSound and QPrint Interface
No, definitely AY-3-8910. I soldered the damned thing in back to front (!) and had no way of extracting it. The local CB radio doctor did the necessary for me, and after fitting it correctly, it worked. It didn't have any computing power as I remember, but there were a lot of tiny pots to fiddle with to change the sound effects.Silvester wrote:Is it possible it was SN76477 chip you played with (at 9V) ? It was versatile and wasn't computer controlled like AY.
Cheers,
Norm.
Why do they put lightning conductors on churches?
Author of Arduino Software Internals
Author of Arduino Interrupts
No longer on Twitter, find me on https://mastodon.scot/@NormanDunbar.
Author of Arduino Software Internals
Author of Arduino Interrupts
No longer on Twitter, find me on https://mastodon.scot/@NormanDunbar.
Re: QSound and QPrint Interface
Yes, even better using the spare gatesaalea wrote:My idea is a bit diferent, more important thing:
I understant that PB pins are low by default, and should provide E clock in this situation (for compatibility with old software X'D) and when the pin go 1, enable de 2Mhz.
I was thinking in the unused gates already in the board, perhaps with a smd oscilator, and use the Open colector output of the 74LS03, to be something like this:
Code: Select all
+5v--+-------------------------<5K>---- _|__ | | | 2Mhz __ | | |----------------| ) | |__| | )o---------+-------AY clock gnd -+ -------------|__) | | __ | control----+--| ) | (PB?) +--| )o-- | +--|__) | | | __ | ---| ) | | )o----------- E clock----------------|__)

Yes, though don't know if it could keep up with data rate.aalea wrote:Aps-- and should be possible to make a simple superbasic program that open a pipe a fetch the PSG via AY_POKE command from the ouput of your player (register change dump) on a second task?
I think I already have all the bits to quickly make QSound compatible (apart from 74266, I'll use a 7485). The only thing that may be problem is reliable way of finding slot where QSound resides, it pokes two system variables with addresses, but they are also used by other software (Turbo, Taskmaster, AFAIK).
David
Re: QSound and QPrint Interface
Something to do with QSound posted elsewhere (?). Difference between v1.31 and v1.40 is only banner text and changing name of printer device from 'PAR' to CEN'.aalea wrote:Thanks, I burn it, and works, very similar to 1.31 (apart from banner only change 3 bytes between both roms), so continue to have errors with the sample of the manual.mk79 wrote:Bingo. Never used that one before, but it assembled the file without a hitch. Not sure if this ROM works or if it was ever released in this version, but it's probably worth a try.tofro wrote:Isn't the extension a strong hint to the Metacomco Assembler?
Can you share the source code?, I think will be very interesting, very didactic, to have the source code (hopefully with comments)
David
Re: QSound and QPrint Interface
Makes me wonder. As far as I know, Jochen always used the GST (Macro) Assembler. Perhaps in early days he used MetaComCo, perhaps also in GigaChrome. But changing the PAR device to a different name doesn't look as it has been his work.
7000 4E75
Re: QSound and QPrint Interface
Well, I will try to get information about that, frankly speaking, my design knowledge is only up to simple boole algebra, I put the resistor mostly at azar.Silvester wrote: Yes, even better using the spare gatesBut I'm unsure whether o/c LS03 gates pulled up will provide slew rate/level for fast clock, which is why I thought about HC00. I haven't looked closely at QSound code yet but PB4 is used as printer BUSY input, PB0,2,3 as outputs so was unsure how remaining port B bits were configured, also assumed unused output / input bits would be high. BTW the 100K pull up you use for LS266/LS03 seems too high, original used 1K, but 5K is usual for LS (IMHO).
Yes, though don't know if it could keep up with data rate.aalea wrote:Aps-- and should be possible to make a simple superbasic program that open a pipe a fetch the PSG via AY_POKE command from the ouput of your player (register change dump) on a second task?
I think I already have all the bits to quickly make QSound compatible (apart from 74266, I'll use a 7485). The only thing that may be problem is reliable way of finding slot where QSound resides, it pokes two system variables with addresses, but they are also used by other software (Turbo, Taskmaster, AFAIK).
the 74266 stuff and the address of the card related to pin SP0...SP4 was a very good idea in the QL with a very poor execution, I think that nobody design a passthrough card that respect this, so at end everybody have the card at address 0xC0000 with is a pity because limit the QL ram to 640kB.
the best solution shall be search for a fingerprint like "Qsound" at start of each of the 10 slots available, thinking that someone can do a version that can co-exist with other interfaces, or allow to overwrite the direction as a parameter, in case other software overwrite this system variables.
P.D.: I see the .bas files in the last zip, I will check asap to see if they work or not, thanks
- mk79
- QL Wafer Drive
- Posts: 1349
- Joined: Sun Feb 02, 2014 10:54 am
- Location: Esslingen/Germany
- Contact:
Re: QSound and QPrint Interface
When I compare 1.31 and 1.40 they are completely different, almost no bytes sharedaalea wrote:Thanks, I burn it, and works, very similar to 1.31 (apart from banner only change 3 bytes between both roms), so continue to have errors with the sample of the manual.mk79 wrote:Bingo. Never used that one before, but it assembled the file without a hitch. Not sure if this ROM works or if it was ever released in this version, but it's probably worth a try.tofro wrote:Isn't the extension a strong hint to the Metacomco Assembler?

I created a (hopefully) QSound compatible ROM out of my extended code and named it v1.90 (once it works I would name it v2). You can try that if you want, I couldn't test it of course except throw it in QEmuLator and make sure that it doesn't just crash everything. There's also the preliminary source if anybody wants to debug it. Oh, it doesn't include QPrint for now and it doesn't have the rest of the crap commands. But it should be fairly debugged compared to the official ROMs.
It also includes the QSOUND device, so my AY player should work out of the box, too. Hopefully...
- Attachments
-
- qsound190_src.zip
- (21.63 KiB) Downloaded 100 times
Last edited by mk79 on Sun Oct 02, 2022 2:23 pm, edited 1 time in total.
Re: QSound and QPrint Interface
No idea, I convert to "ascii" with hexdump and them check de diferences, and get the change in the banner at the begin of rom and the PAR/CEN change, see:mk79 wrote:When I compare 1.31 and 1.40 they are completely different, almost no bytes sharedaalea wrote:Thanks, I burn it, and works, very similar to 1.31 (apart from banner only change 3 bytes between both roms), so continue to have errors with the sample of the manual.![]()
Code: Select all
alvaro@lametones3:~/Descargas/QL/interfaces/QSound$ diff rom131.txt rom140.txt
1,3c1,3
< 0000000 fb4a 0100 4816 2e00 2400 6f4a 6863 6e65
< 0000010 4d20 7265 207a 2020 5351 756f 646e 2020
< 0000020 3156 332e 2031 7f20 3120 3839 0a37 e748
---
> 0000000 fb4a 0100 4816 2e00 2400 2e4a 654d 7a72
> 0000010 2020 5351 756f 646e 512f 7250 6e69 2074
> 0000020 5620 2e31 3034 7f20 3120 3839 0a37 e748
40c40
< 0000270 f060 1460 0300 4150 2052 0300 0100 0043
---
> 0000270 f060 1460 0300 4543 204e 0300 0100 0043
alvaro@lametones3:~/Descargas/QL/interfaces/QSound$ md5sum Qsound_V1.*.rom
7c557ccde14813b847e224e4888846d1 Qsound_V1.10.rom
3c334bec3d4735ae186be6ddf77c76ac Qsound_V1.31.rom
5d294790ef49fd078a1d1faea819c7e7 Qsound_V1.3S.rom
1ed92e2974b449d58383f2dba758952e Qsound_V1.40.rom
1a7a3aa67f6445035f45340e96d4d5d6 Qsound_V1.90.rom
I burn and test, but no lucky, it hang after show the banner of the version (there is no "ding" at boot). I test on sqlux and happend the same (I know is not the best emulator) original rom work in sqlinux (no sound of course, but I can see the comands, etc...)mk79 wrote: I created a (hopefully) QSound compatible ROM out of my extended code and named it v1.90 (once it works I would name it v2). You can try that if you want, I couldn't test it of course except throw it in QEmuLator and make sure that it doesn't just crash everything. There's also the preliminary source if anybody wants to debug it. Oh, it doesn't include QPrint for now and it doesn't have the rest of the crap commands. But it should be fairly debugged compared to the official ROMs.
It also includes the QSOUND device, so my AY player should work out of the box, too. Hopefully...
Anyway, my board seem to no like by qubide interface, and in the emulator with the original rom there is no "out of range" error, so I start to think there are some problem in my design.