Detailed Memory Map
#FILE: $RCSfile: memmap.txt $
#DESC: Dragon 32/64 Memory Map (with CoCo refs)
#REV: $Revision: 1.13 $
#DATE: $Date: 1995/08/18 15:37:28 $
#AUTHOR: Graham E. Kinns
#DISCLAIMER: All information provided as is etc.
#ARCHIVE: This file is part of the DRGNINFO collection of Dragon info files
#CONTACT: Comments, bugs, revisions, suggestions to Dragon@grempc.demon.co.uk
#HISTORY: 1.0 19/06/93 - Initial revision started
#RCSID: $Id: memmap.txt 1.13 1995/08/18 15:37:28 Graham Exp $
Format conventions:
$xxxx references a memory address
0xab or 0xabcd are C style hexadecimal constants
%TITLE% shows a 'standard' assembler reference
UPPERCASE words typically refer to Basic keywords or Assembler mneumonics
(0x1234) Numbers in brackets refer to the default value at switch on
{1} Numbers in braces refer to reference sources - see section at end
Abbreviations:
CoCo refers to the Tandy CoCo only
D32 only applicable to Dragon 32
D64 only applicable to Dragon 64
DOS refers to a generic DragonDos compatible unless stated otherwise
lsb least significant byte
msb most significant byte
ptr pointer (or address of)
w/o without
$0000 BREAK message flag - if negative print BREAK
$0001 String delimiting char (0x22 '"')
$0002 Another delimiting char (0x22 '"')
$0003 General counter byte
$0004 Count of IFs looking for ELSE
$0005 DIM flag
$0006 %VALTYP% Variable type flag (0x00 numeric, Non-0x00 string)
$0007 Garbage collection flag
$0008 Subscript allowed flag
$0009 INPUT/READ flag
$000a Arithmetic use
$000b:000c String ptr first free temporary
$000d:000e String ptr last free temporary
$000f-0018 Temporary results
$0019:001a Start address of BASIC program ($1e01, $2401 with DOS)
$001b:001c Start address of simple variables
$001d:001e Start address of array variables
$001f:0020 End of storage, Start of unused mem after BASIC program
$0021:0022 Top of stack, growing down ($7e36)
$0023:0024 Top of free string space ($7ffe)
$0025:0026 Temp Ptr to string in string space
$0027:0028 Top of Ram available to BASIC - returned by DOS HIMEM ($7ffe)
$0029:002a Last/CONT line number
$002b:002c Temp/Input line number store
$002d:002e Ptr to next statement to be executed
$002f:0030 Direct mode command text pointer
$0031:0032 Current DATA statement line number
$0033:0034 Ptr to next item in current DATA statement
$0035:0036 Ptr to keyboard input buffer
$0037:0038 Ptr to variable last in use
$0037:0038 ASCII codes of last variable used {1}
$0039:003a VARPTR address of last variable used
$003b-004e Evaluation variables
$0041:0042 High end destination addr for block
$0043:0044 High end origin addr
$0045:0046 Low end destination addr for block
$0047:0048 Low end origin addr
$004f-0054 Floating Point Accumulator Num 1
$004f Exponent
$0050-0053 Mantissa
$0050:0051 16 bit values in FAC stored here
$0052:0053 VARPTR of variables is stored here {1}
$0054 Mantissa Sign (0x00 positive, 0xff negative)
$0055 Temp sign of FAC
$0056 String variable length
$0057-005b String Descriptor temporaries
$005c-0061 Floating Point Accumulator Num 2
$0062 Sign comparison
$0062-0067 Misc use
$0063 CoCo - Extended precision byte {1} - also Dragon ?
$0068:0069 Current Line number (0xffff in direct mode)
$006a-006e Device Params used in PRINT
$006a Device Comma field width (VDU - 0x10)
$006b Device Last comma field
$006c Device Current column num (VDU - 0x00-0x1f)
$006d Device Line width - num chars per line (VDU 0x20)
$006e Cassette I/O in progress flag - 0xff on input or output
occurring {9}
$006f %DEVNUM% Current device number
0x00 VDU screen
0x01-0x04 DOS - DosPlus only - drive number.
0xfd serial port (Dragon 64 only)
0xfe printer
0xff tape
$0070 Cassette EOF flag - non-zero if EOF - used by EOF(-1) {9}
$0071 Restart flag - if not 0x55 cold start on reset, see $0072
$0072:0073 Restart vector - Following a reset if $0072 pts to a
NOP opcode and $0071 is 0x55 then a warm start is
performed to this vector else a cold start. (0xb44f)
(DOS SuperDosE6 $c706)
$0074:0075 Physical end of Ram minus 1 (0x7ffe)
$0076:0077 Unused
$0078 Cassette status
0x00 closed
0x01 input
0x02 output
$0079 Cassette I/O - Buffer size - bytes in block
$007a:007b Header buffer addr - ptr to filename block
$007c %BLKTYP% Cassette block type
0x00 filename
0x01 data
0xff EOF block
$007d %DBLEN% Cassette block length, number bytes read/to write
$007e:007f %DBADR% Cassette I/O Buffer address
Contains 1 + End address of last program loaded
$0080 Cassette I/O - block checksum used internally
$0081 Cassette I/O - error code
0x00 none
0x01 CRC (checksum) error
0x02 attempt to load into ROM
$0082 Cassette I/O - Pulse width counter
$0083 Cassette I/O - Sync bits counter
$0084 Cassette I/O - Bit phase flag
$0085 Last sine wave value for output to DAC
$0086 Data for low res SET/RESET, POINT routines
$0087 ASCII code of last key pressed (cleared by Break check)
$0088:0089 Current VDU cursor addr (typ 0x0400-0x05ff)
$008a:008b Gen purpose 16bit scratch pad / 16bit zero (0x0000) {2}
$008a:008b CoCo - Motor on delay
$008c Sound pitch frequency
$008d:008e Gen purpose countdown (?sound timer {2})
$008f Cursor flash counter (0x20)
$0090:0091 Cassette leader byte count - number of 0x55 bytes written
as sync leader (D32 - 0x0080, D64 - 0x0100)
$0092 Minimum cycle width of 1200Hz (0x12)
$0092:0093 CoCo - Cassette leader byte count
$0093 Minimum pulse width of 1200Hz (0x0a)
$0094 Maximum pulse width of 1200Hz (0x12)
$0095:0096 Motor on delay (0xda5c = approx 0.5s)
$0095:0096 CoCo - Serial Baud rate constant (0x0057 = 600 baud)
$0097:0098 Keyboard scan debounce delay constant (0x045e)
$0097:0098 CoCo - Serial Line Printer End of Line delay (0x0001)
$0099 Printer comma field width (0x10 = 16)
$009a Printer last comma field (0x74 = 116) (CoCo 0x70 = 112)
$009b Printer line width dflt (0x84 = 132)
$009c Printer head column posn == POS(-2)
Updated by LPOUT ($800f) routine
$009d:009e EXEC default entry address
(D32 - $8b8d = ?FC ERROR; D64 - $bf49 = Boot 64k mode)
$009f-00aa %CHRGET% Self modifying routine to read next char
$009f:00a0 INC <$A7
$00a1:00a2 BNE $00A5
$00a3:00a4 INC <$A6
$00a5-00a7 LDA >xxxx
$00a6:00a7 Ptr to next character to read
$00a8-00aa JMP $BB26
$00ab-00ae Used by RND
$00af TRON/TROFF trace flag - non zero for TRON
$00b0:00b1 Ptr to start of USR table ($0134; DOS - $0683)
$00b2 Current foreground colour (0x03)
$00b3 Current background colour (0x00)
$00b4 Temp/active colour in use
$00b5 Byte value for current colour - ie bit pattern
$00b6 Graphics PMODE number in use (0x00)
$00b7:00b8 Ptr to last byte+1 of current graphics mode ($0c00 w/o Dos)
$00b9 Number of bytes per line in current PMODE (0x10)
$00ba:00bb Ptr to first byte of current graphics mode ($0600)
$00bc Msb of start of graphics pages (0x06 or 0x0c with Dos)
$00bd:00be Current X cursor position (not user available ?{1})
$00bf:00c0 Current Y cursor position (not user available ?{1})
$00c1 Colour set currently in use (0x08 if colorset 1 {1})
$00c2 Plot/Unplot flag: 0x00 reset, non zero set
$00c3:00c4 Current horizontal pixel number
$00c5:00c6 Current vertical pixel number
$00c7:00c8 Current X cursor coord (0x0080)
$00c9:00ca Current Y cursor coord (0x0060)
$00cb:00cc CIRCLE command X coood as if drawn in PMODE 4
$00cd:00ce CIRCLE command Y coord as if drawn in PMODE 4
$00cf:00d0 CIRCLE radius as if drawn in PMODE 4
$00cf:00d0 RENUM increment value
$00d1:00d2 RENUM start line
$00d3:00d4 CLOADM 2's complement load offset
$00d5:00d6 RENUM new start line
$00d7 EDIT line length (not user available)
$00d7 PLAY -
$00d8 PLAY - bytes left in string
$00d9:00da PLAY - ptr to current char in string
$00d8-00dd Graphics use ? {2}
$00de PLAY: Current octave in use (0-4) (0x02)
$00df:00e0 PLAY: Volume data for volume setting (D32 - 0xba42)
(D64 - 0xb844)
$00e1 PLAY: Current note length (0x04)
$00e2 PLAY: Current tempo (0x02)
$00e3:00e4 PLAY: Music duration count
$00e5 PLAY: Music dotted note flag
$00e6-$00ff D32 - Unused in Dragon 32 w/o DOS
$00e6 CoCo - baud rate constant
$00e7 Coco - Input timeout constant
$00e8 Current angle used in DRAW {1} (??)
$00e9 Current scale used in DRAW {1} (??)
$00ea-00f6 DOS - Used by DragonDos
$00f8 DOS - sector currently seeking {SuperDos Rom}
$0100-0102 SWI3 Secondary vector (Uninitialised)
$0103-0105 SWI2 Secondary vector (Uninitialised)
$0106-0108 SWI Secondary vector (Uninitialised)
$0109-010b NMI Secondary vector (Uninitialised)
(CoCo DOS JMP $d7ae; SuperDos E6 JMP $c71e)
$010c-010e IRQ Secondary vector - JMP $9d3d
(CoCo JMP $a9b3 or $894c (extended); CoCo DOS JMP $d7bc;
SuperDos E6 JMP $c727)
$010f-0111 FIRQ Secondary vector - JMP $b469
(CoCo JMP $a0f6; SuperDos E6 JMP $c7da)
$0112:0113 TIMER value
$0114 Unused
$0115-0119 Random number seeds (0x80, 0x4f, 0xc7, 0x52, 0x59)
$011a-011f D32 - Unused
$011a D64 - %FLAG64% checked on Reset from 64K mode
if 0x55 then checksum at $011b is checked against
current contents of Ram, if the same then a warm start
is performed (64 mode) else a cold start (32 mode)
$011a CoCo - Caps lock, 0x00 lower, non-0x00 upper
$011b:011c D64 - %CSUM64% 16bit sum of words of BASIC Rom-in-ram in
64K mode from $c000 to $feff
$011b:011c CoCo - Keyboard Delay constant
$011d-011f CoCo - JMP $8489 ? {1}
$011d D64 - %LSTKEY% Last key code return by keybd poll routine
$011e D64 - %CNTDWN% Auto repeat countdown
$011f D64 - %REPDLY% Auto repeat inter-repeat delay value (0x05)
$0120 %STUB0% Stub 0 - Number of reserved words (0x4e)
$0121:0122 Stub 0 - Ptr to reserved words table ($8033)
$0123:0124 Stub 0 - Ptr to reserved words dispatch table ($8154)
$0125 Stub 0 - Number of functions (0x22)
$0126:0127 Stub 0 - Ptr to reserved function words table ($81ca)
$0128:0129 Stub 0 - Ptr to function words dispatch table ($8250)
$012a %STUB1% Stub 1 - Number of reserved words (0x00)
(DOS 0x1a)
$012b:012c Stub 1 - Ptr to reserved words table (0x0000)
(DOS $ded4; SuperDosE6 $deda)
$012d:012e Stub 1 - Ptr to reserved words token processing routine
($89b4; DOS $c64c; SuperDosE6 $c670)
$012f Stub 1 - Number of functions (0x00)
(DOS 0x07)
$0130:0131 Stub 1 - Ptr to function table (0x0000)
(DOS $debb; SuperDosE6 $dec1)
$0132:0133 Stub 1 - Ptr to function token processing routine
($89b4; DOS $c667; SuperDosE6 $c68b)
$0134 %STUB2% Stub 2 - acts as a stub terminator under DOS
$0134-0147 USR address table, relocated by DOS (10 x 2 bytes) ($8b8d)
$0148 Auto line feed flag on buffer full - setting this to 0x00
causes a EOL sequence to be sent to printer when buffer
reaches length in $009b (0xff)
$0149 Alpha Lock flag - 0x00 Lower case, 0xff Upper case (0xff)
$014a-0150 Line Printer End of line termination sequence
$014a Number of bytes in EOL sequence 1-6 (0x01)
$014b EOL chr 1 (0x0d CR)
$014c EOL chr 2 (0x0a LF)
$014d EOL chr 3 (D64 - 0x00; D32 - 0x20 ' ')
$014e EOL chr 4 (D64 - 0x00; D32 - 0x44 'D' Duncan)
$014f EOL chr 5 (D64 - 0x00; D32 - 0x4e 'N' N.)
$0150 EOL chr 6 (D64 - 0x00; D32 - 0x4f 'S' Smeed)
$0151-0159 Keyboard matrix state table
$0152-0159 CoCo - Keyboard roll-over table
$015a-015d %POTVAL% Joystick values (0-63)
$015a Right Joystick, x value == JOYSTK(0)
$015b Right Joystick, y value == JOYSTK(1)
$015c Left Joystick, x value == JOYSTK(2)
$015d Left Joystick, y value == JOYSTK(3)
$015e-01a8 Ram hooks - each is called from ROM with a JSR before
carrying out the specified function
$015e-0160 Device Open
(DOS JMP $d902; SuperDosE6 $d8f4)
$0161-0163 Verify Device Number
(DOS SuperDosE6 JMP $d8ec)
$0164-0166 Device Init
(DOS SuperDosE6 JMP $c29c)
$0167-0169 Output char in A to DEVN
(DOS JMP $d8fa; SuperDosE6 $d90b)
$0167 Setting to 0xff disables keyboard ?!? {1}
Setting to 0x39 (RTS) allows use of SCREEN 0,1 etc. ??{1}
$016a-016c Input char from DEVN to A
(DOS SuperDosE6 JMP $c29c)
$016d-016f Input from DEVN using INPUT
(DOS SuperDosE6 JMP $c29c)
$0170-0172 Output to DEVN using PRINT
(DOS SuperDosE6 JMP $c29c)
$0173-0175 Close all files
(DOS SuperDosE6 JMP $c29c)
$0176-0178 Close file
(DOS JMP $d917; SuperDosE6 $d6f5)
$0179-017b Command Interpreter - interpret token in A as command
(DOS SuperDosE6 JMP $c29c)
$017c-017e Re-request input from keyboard
(DOS JMP $d960; SuperDosE6 $d954)
$017f-0181 Check keys - scan for BREAK, SHIFT+'@'
(DOS SuperDosE6 JMP $c29c)
$017f Setting this to 0x9e disables LIST/DIR {1}
$0182-0184 Line input from DEVN using LINE INPUT
(DOS JMP $d720; SuperDosE6 $dac5)
$0185-0187 Close BASIC file read in and goto Command mode
(DOS SuperDosE6 JMP $c29c)
$0188-018a Check EOF on DEVN
(DOS JMP $dd4d; SuperDosE6 $dd54)
$018b-018d Evaluate expression
(DOS SuperDosE6 JMP $c29c)
$018e-0190 User error trap, called from $8344
(DOS SuperDosE6 JMP $c29c)
$0191-0193 System error trap, called from $8344
(DOS JMP $c69e; SuperDosE6 $c6c5)
$0194-0196 Run Link - used by DOS to RUN filename
(DOS JMP $d490; SuperDosE6 $d4b7)
$0197-0199 Reset Basic Memory, editing or entering BASIC lines
$019a-019c Get next command - reading in next command to be executed
$019d-019f Assign string variable
$01a0-01a2 Screen access - CLS, GET, PUT
$01a3-01a5 Tokenise line
$01a6-01a8 De-Tokenise line
$01a9-01d0 String buffer area
$01d1 Cassette filename length in range 0-8
$01d2-01d9 Cassette filename to search for or write out
$01da-02d8 Cassette I/O default data buffer - 255 bytes
$01da-0268 D64 - 64K mode bootstrap routine is copied here to run
$01da-01e1 Cassette buffer - filename of file read
$01e2 Cassette buffer - filetype
0x00 BASIC program
0x01 Data
0x02 Machine code
$01e3 Cassette buffer - ASCII flag
0x00 Binary
0xff ASCII flag
$01e4 Cassette buffer - gap flag
0x00 Continous
0xff Gapped file
$01e5:01e6 Cassette buffer - Entry (Exec) addr of m/c file
$01e7:01e8 Cassette buffer - Load address for ungapped m/c file
$02d9-02dc BASIC line input buffer preamble
$02dd-03d8 BASIC line input buffer - used for de-/tokenising data
$02dd-03dc CoCo - 255 byte keyboard buffer {1}
$02e1-033b CoCo - 90 byte screen buffer {1}
$03d9-03ea Buffer space
$03eb-03fc Unused
$03fd-03ff D32 - Unused in Dragon 32
$03fd:03fe D64 - Printer end of line delay in milliseconds (0x0000)
$03ff D64 - %PRNSEL% selects default printer port
0x00 Parallel, non-0x00 Serial (0x00)
$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 PIA 0 A side Data reg.
PA7 i/p Comparator input
PA6 i/p Keyboard Matrix Ent Clr Brk N/c N/c N/c N/c Shift
PA5 i/p Keyboard Matrix X Y Z Up Dwn Lft Rgt Space
i/p CoCo - Keyboard 8 9 : ; , - . /
PA4 i/p Keyboard Matrix P Q R S T U V W
i/p CoCo - Keyboard 0 1 2 3 4 5 6 7
PA3 i/p Keyboard Matrix H I J K L M N O
i/p CoCo - Keyboard X Y Z Up Dwn Lft Rgt Space
PA2 i/p Keyboard Matrix @ A B C D E F G
i/p CoCo - Keyboard P Q R S T U V W
PA1 i/p Keyboard Matrix 8 9 : ; , - . /
i/p CoCo - Keyboard H I J K L M N O
i/p Left Joystick Button
PA0 i/p Keyboard Matrix 0 1 2 3 4 5 6 7
i/p CoCo - Keyboard @ A B C D E F G
i/p Right Joystick Button
$ff01 PIA 0 A side Control reg.
CA1 i/p Horiz Sync Interrupt from VDG (15625Hz; CoCo 15750Hz)
CA2 o/p Analogue Mux channel select line A
Selects Joystick Axis (0 x-axis, 1 y-axis)
$ff02 PIA 0 B side Data reg.
PB7 o/p Keyboard Matrix 7 / G O W Space Shift
o/p Printer Out bit 7
PB6 o/p Keyboard Matrix 6 . F N V Right N/c
o/p Printer Out bit 6
PB5 o/p Keyboard Matrix 5 - E M U Left N/c
o/p Printer Out bit 5
PB4 o/p Keyboard Matrix 4 , D L T Down N/c
o/p Printer Out bit 4
PB3 o/p Keyboard Matrix 3 ; C K S Up N/c
o/p Printer Out bit 3
PB2 o/p Keyboard Matrix 2 : B J R Z Break
o/p Printer Out bit 2
PB1 o/p Keyboard Matrix 1 9 A I Q Y Clear
o/p Printer Out bit 1
PB0 o/p Keyboard Matrix 0 8 @ H P X Enter
o/p Printer Out bit 0
$ff03 PIA 0 B side Control reg.
CB1 i/p Field Sync Interrupt from VDG (50Hz; CoCo 60Hz)
CB2 o/p Analogue Mux channel select line B
Selects Joystick (0 right, 1 left)
$ff04 D64 - ACIA serial port read/write data reg.
$ff05 D64 - ACIA serial port status (R)/ reset (W) reg.
$ff06 D64 - ACIA serial port command reg.
$ff07 D64 - ACIA serial port control reg.
$ff20 PIA 1 A side Data reg.
PA7 o/p DAC bit 5
PA6 o/p DAC bit 4
PA5 o/p DAC bit 3
PA4 o/p DAC bit 2
PA3 o/p DAC bit 1
PA2 o/p DAC bit 0
PA1 o/p Printer Strobe - Active High (i.e. Lo-Hi-Lo to print)
o/p CoCo - RS232 Tx o/p
PA0 i/p Cassette waveform single bit input
$ff21 PIA 1 A side Control reg.
CA1 i/p Printer Acknowledge
i/p CoCo - CD RS232 Carrier Detect input
CA2 o/p Cassette Relay Motor control
$ff22 PIA 1 B side Data reg.
PB7 o/p *A/G VDG control line
PB6 o/p GM2 VDG control line
PB5 o/p GM1 VDG control line
PB4 o/p GM0 or *INT/EXT VDG control line
PB3 o/p CSS VDG control line
PB2 i/p D32 - RAM size (0 8 x 32K bit; 1 16 x 16K bit) {6}
o/p D64 - ROM select (1 32K mode; 0 64K mode)
PB1 i/p Sample audio source
o/p Single bit sound output
PB0 i/p Printer Busy - Active High
i/p CoCo - RS232 Rx input
$ff23 PIA 1 B side Control reg.
CB1 i/p Cartridge CART FIRQ auto-start signal
CB2 o/p Sound Mux enable (1 enable, 0 single bit sound)
$ff40 DOS - Disk Controller command/status reg.
$ff41 DOS - Disk Controller track reg.
$ff42 DOS - Disk Controller sector reg.
$ff43 DOS - Disk Controller data reg.
$ff48 DOS - Disk Controller hardware control reg.
$ffc0-ffdf SAM (Synchronous Address Multiplexer) register bits - use
even address to clear, odd address to set
$ffc0-ffc5 SAM VDG Mode registers V0-V2
$ffc0/ffc1 SAM VDG Reg V0
$ffc2/ffc3 SAM VDG Reg V1
$ffc3/ffc5 SAM VDG Reg V2
$ffc6-ffd3 SAM Display offset in 512 byte pages F0-F6
$ffc6/ffc7 SAM Display Offset bit F0
$ffc8/ffc9 SAM Display Offset bit F1
$ffca/ffcb SAM Display Offset bit F2
$ffcc/ffcd SAM Display Offset bit F3
$ffce/ffcf SAM Display Offset bit F4
$ffd0/ffc1 SAM Display Offset bit F5
$ffd2/ffc3 SAM Display Offset bit F6
$ffd4/ffd5 SAM Page #1 bit - in D64 maps upper 32K Ram to $0000 to $7fff
$ffd6-ffd9 SAM MPU Rate R0-R1
$ffd6/ffd7 SAM MPU Rate bit R0
$ffd8/ffd9 SAM MPU Rate bit R1
$ffda-ffdd SAM Memory Size select M0-M1
$ffda/ffdb SAM Memory Size select bit M0
$ffdc/ffdd SAM Memory Size select bit M1
$ffde/ffdf SAM Map Type - in D64 switches in upper 32K RAM $8000-$feff
$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
$fff0:fff1 Reserved ($0000; D64 64K mode 0x3634 '64')
$fff2:fff3 SWI3 ($0100)
$fff4:fff5 SWI2 ($0103)
$fff6:fff7 FIRQ ($010f)
$fff8:fff9 IRQ ($010c)
$fffa:fffb SWI ($0106)
$fffc:fffd NMI ($0109)
$fffe:ffff RESET ($b3b4; D64 64K mode $c000 - never accessed)
ROM routines
============
This section is now contained in the file romref.txt
Dragon DOS ROM routines
=======================
This is now part of drgndos.txt
References
==========
{1} 'The Dragon Notebook', Ray Smith, NDUG.
{2} 'Inside the Dragon', Duncan Smeed and Ian Sommerville,
Addison-Wesley, 1983.
{3} 'TRS-80 Color Computer Tech Ref Manual', Tandy Corp, 1981.
{4} WD2797 Floppy Disc Driver Controller Data Sheet (RS #6991).
{5} Dragon Disc Controller Circuit Diagram, ex Dragon Data Ltd, now NDUG.
{6} Dragon 32/64 Upgrade Manual, R. Hall, NDUG, 1985.
Various Articles appearing in Dragon User magazine:
{7} 'Inside the 32', Dave Barnish, p13, Jan 1987.
{8} 'BREAKing the '64', Martyn Armitage, p8-9, Feb 1988.
{9} 'Firmware - Part 1', Brian Cadge, p19, Sep 1985.
{10} 'Dragon Answers', Brian Cadge, p31, Sep 1985.
Acknowledgements
================
PC CoCo Emulator (coco2-13.zip) by Jeff Vavasour, without the excellent
debugger / monitor included with the package checking some of the above
would have been a lot harder.
Ray Smith for the Dragon Notebook which was a major source and inspiration.
Back to Index