Spectrum QL

From SizeCoding
Revision as of 07:00, 8 April 2024 by Superogue (talk | contribs) (Video display)

Jump to: navigation, search

Spectrum QL

The Sinclair QL (for Quantum Leap) is a personal computer launched by Sinclair Research in 1984, as an upper-end counterpart to the ZX Spectrum. It was aimed at the serious home user and professional and executive users markets from small to medium-sized businesses and higher educational establishments, but failed to achieve commercial success. The Sinclair QL uses a Motorola 68008.CPU with 32-bit internal data registers, but an 8-bit external data bus.

Setting up

  • Hardware:

In order to test the final result one can use a floppy-disk replace replacement or Qubide interface to load files from SD card.

Memory map

$00000 	Onboard 48k Rom 	
$0C000 	16K Rom Cartridge 	
$10000 	Onboard I/O 	
$18000 	(R) RTC byte 0 / (W) RTC Reset
$18001 	(R) RTC byte 1 / (W) RTC Step
$18002 	(R) RTC byte 2 / (W) Transmit control
$18003 	(R) RTC byte 3 / (W) IPC link control
$18020 	(R) Microdrive/RS232c status / (W) Microdrive control
$18021 	(R) Interrupt/IPC status / (W) Interrupt control
$18022 	(R) Microdrive Track 1 / (W) Microdrive / RS232C data
$18023 	(R) Microdrive Track 2 / (W) Display control
$18063 	Screen Mode S---C-O- On Colordepth Screenpage
$20000 	Screen 1 	Screen Ram
$28000 	Screen 2 /
System 	system (systemvars*)
$2847C 	System stack pointer*
$28E00 	Base of Common Heap*
$2BC00 	Free area*
$30000 	Running Programs 	Free area
$37200 	Basic area*
$38000 	User Stack pointer*
$38000 	Prog data*
$40000 	Add on ram (up to 512k) 	
$C0000 	Add on peripherals 	
$E0000 	Add on Rom (up to 128k) 	
$FFFFF 	End of address space

Video display

There are two possible screen modes, configured by bit 3 of port $18063

setting a 0 give 4 colors at 512x256 with Black,Red,Green and White setting a 1 give 8 colors at 256x256 with Black, R, G B, C, M, Y and White

The Screen is memory mapped from $20000-$28000, There is no palette - the colors are fixed.

Vsync

Port $18021 bit 3 will go high (1) when Vsync starts, then we need to write a 1 to that same bit at the same port to clear the Vsync event. Therefore, in effect we can write 255 to port $18021, then read from $18021 until it's nonzero to get the Vsync event.

  move.b #%11111111, $18021     ; Clear interrupt bits
waitvbl:
    move.b $18021,d0            ; Read in interrupt state
    tst.b d0                    ; Wait for an interrupt
    beq waitvbl

Plotting to screen

To be added

Sound

The Spectrum QL has 2 channels of internal beeped sound, or AY support via the

Additional Resources