Re: 8302 pinout help request...
Posted: Mon Jul 03, 2017 4:32 pm
Jan, are you sure the 8302 serial transmit has independent baud rates for the two outputs? I'm not sure they can actually really transmit at the same time...
RIP Sir Clive Sinclair 1940 - 2021
https://theqlforum.com/
They never transmit both at the same time, there is always interleave between bytes (there's probably only one shift register which might also be used for MDV since serial output has to wait for the MDV's to stop). However Minerva allows for different baud rates for SER1 and SER2 when Hermes is present (because Hermes does not rely on the BAUDX4 line). This is documented in the Minerva source (MT.BAUD call and iser.asm). This feature was added somewhere in the 1.9x versions and hence not yet documented in the user guide.Nasta wrote:Jan, are you sure the 8302 serial transmit has independent baud rates for the two outputs? I'm not sure they can actually really transmit at the same time...
No, the network is a simple 'bit banging' port. Actually, you can use the same bit (7 of PC.TCTRL) to bit-bang the serial output line in software, which was used in the Qterm software supplied with the Miracle modem to achieve 1200/75 split baud rate (this was the 1200S75 mode).Nasta wrote:That means Minerva might well change the baud rate field in the register as it services interrupts for serial transmit, to get different baud rates. To be honest, this looks like one more reason to keep one non-multiplexed serial port.
Do you perhaps know if the same shift register is used for the QL net?
Code: Select all
*************** pc_tctrl transmit control register values
* The values set in bits 4..3 of the transmit control register select the
* device to which data written to pc_tdata applies.
* At boot, zero is written here. A zero was also written to pc_tdata, but this
* has been removed. It had the effect of sending a spurious null to the ser1
* port, which should not have been done.
pc..diro equ 7 direct output (e.g. to network)
* ? equ 6 0
* ? equ 5 0
pc..serb equ 4 0=serial io
pc..sern equ 3 serial port number
*baud2 equ 2 \
*baud1 equ 1 > three bit baud rate
*baud0 equ 0 /
pc.bmask equ %00000111 baud rate mask
pc.notmd equ %11100111 all bits except mode control
pc.mdvmd equ %00010000 microdrive mode
pc.netmd equ %00011000 network mode
These are the standard QL baud rates in reverse order. 000 = 19200, 001 = 9600 etc, down to 75 for 111.Dave wrote:Do you happen to know the baud rates indicated by the three bits?
Interesting, I was under the impression the net port was a real shift register and only the various protocol timings were implemented in software.janbredenbeek wrote: No, the network is a simple 'bit banging' port. Actually, you can use the same bit (7 of PC.TCTRL) to bit-bang the serial output line in software, which was used in the Qterm software supplied with the Miracle modem to achieve 1200/75 split baud rate (this was the 1200S75 mode).
An explanation in the Minerva source code:Jan.Code: Select all
...
150 baud doesn't exist. It jumps from 300 to 75.Nasta wrote: 110 = 300
111 = 150
??? = 75?
Yes, but that's probably handled by the electronics on the MDV boards.Also, it probably can't go much faster without a serious baud rate error accruing.
If it uses a 4x oversample for baud rate (visible at BAUDX4), and the base is the 7.5MHZ clock, ideally for 19200 the divisor would be 97.65625.
Does it not use some sort of FM modulation for microdrives?
The good old Sinclair adagium: "Never do it in hardware if it can be done in software"Nasta wrote: Interesting, I was under the impression the net port was a real shift register and only the various protocol timings were implemented in software.
I stand corrected