Difference between revisions of "Dragon 32/64"
(→Sync with frame) |
(→Sync with frame) |
||
Line 50: | Line 50: | ||
</syntaxhighlight> | </syntaxhighlight> | ||
− | + | If you really want to save the bytes, it can be done with just one instruction. However it will not only wait for VSYNC but also other system interrupts that may be going on, so don't expect 100% reliability. It will also do the acknowledgement for you. | |
<syntaxhighlight lang="6502"> | <syntaxhighlight lang="6502"> | ||
sync | sync |
Revision as of 07:31, 13 April 2024
Contents
Dragon32 / Dragon64
The Dragon 32 and Dragon 64 are home computers that were built in the 1980s. The Dragons are very similar to the TRS-80 Color Computer, and were produced for the European market by Dragon Data, Ltd., initially in Swansea, Wales before moving to Port Talbot, Wales (until 1984) and by Eurohard S.A. in Casar de Cáceres, Spain (from 1984 to 1987), and for the US market by Tano Corporation of New Orleans, Louisiana. The model numbers reflect the primary difference between the two machines, which have 32 and 64 kilobytes of RAM, respectively.
Setting up
To set up your , first get the following tools:
- Assembler: asm6809 ( https://www.6809.org.uk/asm6809/ )
- Emulator(s): xroar ( https://www.6809.org.uk/xroar/ )
Memory map
$0000-03ff System variables
$0400-05ff Default Text screen
$0600-1dff Available graphics pages w/o DOS
$0600-0bff DOS - workspace area see also $00ea-$00f6
$0600-0dff CoCo DOS workspace area (no more info)
$0c00-23ff DOS - Available graphics pages
$8000-bfff BASIC ROM in 32K mode
$8000-9fff CoCo - Extended Color BASIC ROM
$a000-bfff CoCo - Color BASIC ROM
$bff0-bfff These addresses mapped from ROM to $fff0-$ffff by the SAM
$c000-dfff DOS - Dos ROM
$c000-feff DOS - Cumana DOS ROM only
$c000-feff Available address range to cartridge expansion port 32K mode
$c000-feff D64 - 64K mode - copy of BASIC ROM 2 exists in RAM here
$ff00-ff48 PIA / D64 / DOS Control and Data registers
$ffc0-ffdf SAM (Synchronous Address Multiplexer) register bits - use
even address to clear, odd address to set
$ffec-ffef PC-Dragon - Used by Paul Burgin's emulator to provide enhanced
services
$fff0-ffff 6809 interrupt vectors mapped from $bff0-$bfff by SAM
Check out http://dragon32.info/info/memmap.html for a complete memory map
Video display
The Dragon 32 / Dragon 64 have the following native video modes:
- Standard text modes
- Bitmap modes
Sync with frame
Syncing with VSYNC can be done in a few ways, the most common being:
vskip
lda $ff03 ;polling vsync
bpl vskip
lda $ff02 ;acknowledge vsync
;rest of your code...
If you really want to save the bytes, it can be done with just one instruction. However it will not only wait for VSYNC but also other system interrupts that may be going on, so don't expect 100% reliability. It will also do the acknowledgement for you.
sync
;rest of your code...
Plot in Bitmap modes
Here is a routine that will allow you to plot a single point in bitmap mode.
To be added
Text mode
To be added
To be added
Sound
To be added soon.
Make some noise
To be added soon.
Additional Resources
- Dragon32 Info page - http://dragon32.info/
- World of Dragon forums - https://archive.worldofdragon.org/phpBB3/
- 6809.org.uk Website - https://www.6809.org.uk/
- CoCoCoding - https://sites.google.com/a/aaronwolfe.com/cococoding/home