(
    set -x
    ./6809dasm.pl org=0x8000 \
	comment=0x0,"BREAK message flag - if negative print BREAK" \
	comment=0x1,"String delimiting char (0x22 '\"')" \
	comment=0x2,"Another delimiting char (0x22 '\"')" \
	comment=0x3,"General counter byte" \
	comment=0x4,"Count of IFs looking for ELSE" \
	comment=0x5,"DIM flag" \
	comment=0x6,"%VALTYP% Variable type flag (0x00 numeric, Non-0x00 string)" \
	comment=0x7,"Garbage collection flag" \
	comment=0x8,"Subscript allowed flag" \
	comment=0x9,"INPUT/READ flag" \
	comment=0xa,"Arithmetic use" \
	comment=0xb,"String ptr first free temporary" \
	comment=0xd,"String ptr last free temporary" \
	comment=0xf,"Temporary results" \
	comment=0x19,"Start address of BASIC program (\$1e01, \$2401 with DOS)" \
	comment=0x1b,"Start address of simple variables" \
	comment=0x1d,"Start address of array variables" \
	comment=0x1f,"End of storage, Start of unused mem after BASIC program" \
	comment=0x21,"Top of stack, growing down (\$7e36)" \
	comment=0x23,"Top of free string space (\$7ffe)" \
	comment=0x25,"Temp Ptr to string in string space" \
	comment=0x27,"Top of Ram available to BASIC - returned by DOS HIMEM (\$7ffe)" \
	comment=0x29,"Last/CONT line number" \
	comment=0x2b,"Temp/Input line number store" \
	comment=0x2d,"Ptr to next statement to be executed" \
	comment=0x2f,"Direct mode command text pointer" \
	comment=0x31,"Current DATA statement line number" \
	comment=0x33,"Ptr to next item in current DATA statement" \
	comment=0x35,"Ptr to keyboard input buffer" \
	comment=0x37,"Ptr to variable last in use" \
	comment=0x37,"ASCII codes of last variable used {1}" \
	comment=0x39,"VARPTR address of last variable used" \
	comment=0x3b,"Evaluation variables" \
	comment=0x41,"High end destination addr for block" \
	comment=0x43,"High end origin addr" \
	comment=0x45,"Low end destination addr for block" \
	comment=0x47,"Low end origin addr" \
	comment=0x4f,"Floating Point Accumulator Num 1" \
	comment=0x4f,"Exponent" \
	comment=0x50,"Mantissa" \
	comment=0x50,"16 bit values in FAC stored here" \
	comment=0x52,"VARPTR of variables is stored here {1}" \
	comment=0x54,"Mantissa Sign (0x00 positive, 0xff negative)" \
	comment=0x55,"Temp sign of FAC" \
	comment=0x56,"String variable length" \
	comment=0x57,"String Descriptor temporaries" \
	comment=0x5c,"Floating Point Accumulator Num 2" \
	comment=0x62,"Sign comparison" \
	comment=0x62,"Misc use" \
	comment=0x63,"CoCo - Extended precision byte {1} - also Dragon ?" \
	comment=0x68,"Current Line number (0xffff in direct mode)" \
	comment=0x6a,"Device Params used in PRINT" \
	comment=0x6a,"Device Comma field width (VDU - 0x10)" \
	comment=0x6b,"Device Last comma field" \
	comment=0x6c,"Device Current column num (VDU - 0x00-0x1f)" \
	comment=0x6d,"Device Line width - num chars per line (VDU 0x20)" \
	comment=0x6e,"Cassette I/O in progress flag - 0xff on input or output occurring  {9}" \
	comment=0x6f,"%DEVNUM% Current device number 0x00 VDU screen 0x01-0x04 DOS - DosPlus only - drive number. 0xfd serial port (Dragon 64 only) 0xfe printer 0xff tape" \
	comment=0x70,"Cassette EOF flag - non-zero if EOF - used by EOF(-1) {9}" \
	comment=0x71,"Restart flag - if not 0x55 cold start on reset, see \$0072" \
	comment=0x72,"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)" \
	comment=0x74,"Physical end of Ram minus 1 (0x7ffe)" \
	comment=0x76,"Unused" \
	comment=0x78,"Cassette status 0x00 closed 0x01 input 0x02 output" \
	comment=0x79,"Cassette I/O - Buffer size - bytes in block" \
	comment=0x7a,"Header buffer addr - ptr to filename block" \
	comment=0x7c,"%BLKTYP% Cassette block type 0x00 filename 0x01 data 0xff EOF block" \
	comment=0x7d,"%DBLEN% Cassette block length, number bytes read/to write" \
	comment=0x7e,"%DBADR% Cassette I/O Buffer address Contains 1 + End address of last program loaded" \
	comment=0x80,"Cassette I/O - block checksum used internally" \
	comment=0x81,"Cassette I/O - error code 0x00 none 0x01 CRC (checksum) error 0x02 attempt to load into ROM" \
	comment=0x82,"Cassette I/O - Pulse width counter" \
	comment=0x83,"Cassette I/O - Sync bits counter" \
	comment=0x84,"Cassette I/O - Bit phase flag" \
	comment=0x85,"Last sine wave value for output to DAC" \
	comment=0x86,"Data for low res SET/RESET, POINT routines" \
	comment=0x87,"ASCII code of last key pressed (cleared by Break check)" \
	comment=0x88,"Current VDU cursor addr (typ 0x0400-0x05ff)" \
	comment=0x8a,"Gen purpose 16bit scratch pad / 16bit zero (0x0000) {2}" \
	comment=0x8a,"CoCo - Motor on delay" \
	comment=0x8c,"Sound pitch frequency" \
	comment=0x8d,"Gen purpose countdown (?sound timer {2})" \
	comment=0x8f,"Cursor flash counter (0x20)" \
	comment=0x90,"Cassette leader byte count - number of 0x55 bytes written as sync leader (D32 - 0x0080, D64 - 0x0100)" \
	comment=0x92,"Minimum cycle width of 1200Hz (0x12)" \
	comment=0x92,"CoCo - Cassette leader byte count" \
	comment=0x93,"Minimum pulse width of 1200Hz (0x0a)" \
	comment=0x94,"Maximum pulse width of 1200Hz (0x12)" \
	comment=0x95,"Motor on delay (0xda5c = approx 0.5s)" \
	comment=0x95,"CoCo - Serial Baud rate constant (0x0057 = 600 baud)" \
	comment=0x97,"Keyboard scan debounce delay constant (0x045e)" \
	comment=0x97,"CoCo - Serial Line Printer End of Line delay (0x0001)" \
	comment=0x99,"Printer comma field width (0x10 = 16)" \
	comment=0x9a,"Printer last comma field (0x74 = 116) (CoCo 0x70 = 112)" \
	comment=0x9b,"Printer line width dflt (0x84 = 132)" \
	comment=0x9c,"Printer head column posn == POS(-2) Updated by LPOUT (\$800f) routine" \
	comment=0x9d,"EXEC default entry address (D32 - \$8b8d = ?FC ERROR; D64 - \$bf49 = Boot 64k mode)" \
	comment=0x9f,"%CHRGET% Self modifying routine to read next char" \
	comment=0x9f,"INC <\$A7" \
	comment=0xa1,"BNE \$00A5" \
	comment=0xa3,"INC <\$A6" \
	comment=0xa5,"LDA >xxxx" \
	comment=0xa6,"Ptr to next character to read" \
	comment=0xa8,"JMP \$BB26" \
	comment=0xab,"Used by RND" \
	comment=0xaf,"TRON/TROFF trace flag - non zero for TRON" \
	comment=0xb0,"Ptr to start of USR table (\$0134; DOS - \$0683)" \
	comment=0xb2,"Current foreground colour (0x03)" \
	comment=0xb3,"Current background colour (0x00)" \
	comment=0xb4,"Temp/active colour in use" \
	comment=0xb5,"Byte value for current colour - ie bit pattern" \
	comment=0xb6,"Graphics PMODE number in use (0x00)" \
	comment=0xb7,"Ptr to last byte+1 of current graphics mode (\$0c00 w/o Dos)" \
	comment=0xb9,"Number of bytes per line in current PMODE (0x10)" \
	comment=0xba,"Ptr to first byte of current graphics mode (\$0600)" \
	comment=0xbc,"Msb of start of graphics pages (0x06 or 0x0c with Dos)" \
	comment=0xbd,"Current X cursor position (not user available ?{1})" \
	comment=0xbf,"Current Y cursor position (not user available ?{1})" \
	comment=0xc1,"Colour set currently in use (0x08 if colorset 1 {1})" \
	comment=0xc2,"Plot/Unplot flag: 0x00 reset, non zero set" \
	comment=0xc3,"Current horizontal pixel number" \
	comment=0xc5,"Current vertical pixel number" \
	comment=0xc7,"Current X cursor coord (0x0080)" \
	comment=0xc9,"Current Y cursor coord (0x0060)" \
	comment=0xcb,"CIRCLE command X coood as if drawn in PMODE 4" \
	comment=0xcd,"CIRCLE command Y coord as if drawn in PMODE 4" \
	comment=0xcf,"CIRCLE radius as if drawn in PMODE 4" \
	comment=0xcf,"RENUM increment value" \
	comment=0xd1,"RENUM start line" \
	comment=0xd3,"CLOADM 2's complement load offset" \
	comment=0xd5,"RENUM new start line" \
	comment=0xd7,"EDIT line length (not user available)" \
	comment=0xd7,"PLAY -" \
	comment=0xd8,"PLAY - bytes left in string" \
	comment=0xd9,"PLAY - ptr to current char in string" \
	comment=0xd8,"Graphics use ? {2}" \
	comment=0xde,"PLAY: Current octave in use (0-4) (0x02)" \
	comment=0xdf,"PLAY: Volume data for volume setting (D32 - 0xba42) (D64 - 0xb844)" \
	comment=0xe1,"PLAY: Current note length (0x04)" \
	comment=0xe2,"PLAY: Current tempo (0x02)" \
	comment=0xe3,"PLAY: Music duration count" \
	comment=0xe5,"PLAY: Music dotted note flag" \
	comment=0xe6,"D32 - Unused in Dragon 32 w/o DOS" \
	comment=0xe6,"CoCo - baud rate constant" \
	comment=0xe7,"Coco - Input timeout constant" \
	comment=0xe8,"Current angle used in DRAW {1} (??)" \
	comment=0xe9,"Current scale used in DRAW {1} (??)" \
	comment=0xea,"DOS - Used by DragonDos" \
	comment=0xf8,"DOS - sector currently seeking {SuperDos Rom}" \
	comment=0x100,"SWI3 Secondary vector (Uninitialised)" \
	comment=0x103,"SWI2 Secondary vector (Uninitialised)" \
	comment=0x106,"SWI Secondary vector (Uninitialised)" \
	comment=0x109,"NMI Secondary vector (Uninitialised) (CoCo DOS JMP \$d7ae; SuperDos E6 JMP \$c71e)" \
	comment=0x10c,"IRQ Secondary vector - JMP \$9d3d (CoCo JMP \$a9b3 or \$894c (extended); CoCo DOS JMP \$d7bc; SuperDos E6 JMP \$c727)" \
	comment=0x10f,"FIRQ Secondary vector - JMP \$b469 (CoCo JMP \$a0f6; SuperDos E6 JMP \$c7da)" \
	comment=0x112,"TIMER value" \
	comment=0x114,"Unused" \
	comment=0x115,"Random number seeds (0x80, 0x4f, 0xc7, 0x52, 0x59)" \
	comment=0x11a,"D32 - Unused" \
	comment=0x11a,"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)" \
	comment=0x11a,"CoCo - Caps lock, 0x00 lower, non-0x00 upper" \
	comment=0x11b,"D64 - %CSUM64% 16bit sum of words of BASIC Rom-in-ram in 64K mode from \$c000 to \$feff" \
	comment=0x11b,"CoCo - Keyboard Delay constant" \
	comment=0x11d,"CoCo - JMP \$8489 ? {1}" \
	comment=0x11d,"D64 - %LSTKEY% Last key code return by keybd poll routine" \
	comment=0x11e,"D64 - %CNTDWN% Auto repeat countdown" \
	comment=0x11f,"D64 - %REPDLY% Auto repeat inter-repeat delay value (0x05)" \
	comment=0x120,"%STUB0% Stub 0 - Number of reserved words (0x4e)" \
	comment=0x121,"Stub 0 - Ptr to reserved words table (\$8033)" \
	comment=0x123,"Stub 0 - Ptr to reserved words dispatch table (\$8154)" \
	comment=0x125,"Stub 0 - Number of functions (0x22)" \
	comment=0x126,"Stub 0 - Ptr to reserved function words table (\$81ca)" \
	comment=0x128,"Stub 0 - Ptr to function words dispatch table (\$8250)" \
	comment=0x12a,"%STUB1% Stub 1 - Number of reserved words (0x00) (DOS 0x1a)" \
	comment=0x12b,"Stub 1 - Ptr to reserved words table (0x0000) (DOS \$ded4; SuperDosE6 \$deda)" \
	comment=0x12d,"Stub 1 - Ptr to reserved words token processing routine (\$89b4; DOS \$c64c; SuperDosE6 \$c670)" \
	comment=0x12f,"Stub 1 - Number of functions (0x00) (DOS 0x07)" \
	comment=0x130,"Stub 1 - Ptr to function table (0x0000) (DOS \$debb; SuperDosE6 \$dec1)" \
	comment=0x132,"Stub 1 - Ptr to function token processing routine (\$89b4; DOS \$c667; SuperDosE6 \$c68b)" \
	comment=0x134,"%STUB2% Stub 2 - acts as a stub terminator under DOS" \
	comment=0x134,"USR address table, relocated by DOS (10 x 2 bytes) (\$8b8d)" \
	comment=0x148,"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)" \
	comment=0x149,"Alpha Lock flag - 0x00 Lower case, 0xff Upper case (0xff)" \
	comment=0x14a,"Line Printer End of line termination sequence" \
	comment=0x14a,"Number of bytes in EOL sequence 1-6 (0x01)" \
	comment=0x14b,"EOL chr 1 (0x0d CR)" \
	comment=0x14c,"EOL chr 2 (0x0a LF)" \
	comment=0x14d,"EOL chr 3 (D64 - 0x00; D32 - 0x20 ' ')" \
	comment=0x14e,"EOL chr 4 (D64 - 0x00; D32 - 0x44 'D' Duncan)" \
	comment=0x14f,"EOL chr 5 (D64 - 0x00; D32 - 0x4e 'N' N.)" \
	comment=0x150,"EOL chr 6 (D64 - 0x00; D32 - 0x4f 'S' Smeed)" \
	comment=0x151,"Keyboard matrix state table" \
	comment=0x152,"CoCo - Keyboard roll-over table" \
	comment=0x15a,"%POTVAL% Joystick values (0-63)" \
	comment=0x15a,"Right Joystick, x value == JOYSTK(0)" \
	comment=0x15b,"Right Joystick, y value == JOYSTK(1)" \
	comment=0x15c,"Left Joystick, x value == JOYSTK(2)" \
	comment=0x15d,"Left Joystick, y value == JOYSTK(3)" \
	comment=0x15e,"Ram hooks - each is called from ROM with a JSR before carrying out the specified function" \
	comment=0x15e,"Device Open (DOS JMP \$d902; SuperDosE6 \$d8f4)" \
	comment=0x161,"Verify Device Number (DOS SuperDosE6 JMP \$d8ec)" \
	comment=0x164,"Device Init (DOS SuperDosE6 JMP \$c29c)" \
	comment=0x167,"Output char in A to DEVN (DOS JMP \$d8fa; SuperDosE6 \$d90b)" \
	comment=0x167,"Setting to 0xff disables keyboard ?!? {1} Setting to 0x39 (RTS) allows use of SCREEN 0,1 etc. ??{1}" \
	comment=0x16a,"Input char from DEVN to A (DOS SuperDosE6 JMP \$c29c)" \
	comment=0x16d,"Input from DEVN using INPUT (DOS SuperDosE6 JMP \$c29c)" \
	comment=0x170,"Output to DEVN using PRINT (DOS SuperDosE6 JMP \$c29c)" \
	comment=0x173,"Close all files (DOS SuperDosE6 JMP \$c29c)" \
	comment=0x176,"Close file (DOS JMP \$d917; SuperDosE6 \$d6f5)" \
	comment=0x179,"Command Interpreter - interpret token in A as command (DOS SuperDosE6 JMP \$c29c)" \
	comment=0x17c,"Re-request input from keyboard (DOS JMP \$d960; SuperDosE6 \$d954)" \
	comment=0x17f,"Check keys - scan for BREAK, SHIFT+'@' (DOS SuperDosE6 JMP \$c29c)" \
	comment=0x17f,"Setting this to 0x9e disables LIST/DIR {1}" \
	comment=0x182,"Line input from DEVN using LINE INPUT (DOS JMP \$d720; SuperDosE6 \$dac5)" \
	comment=0x185,"Close BASIC file read in and goto Command mode (DOS SuperDosE6 JMP \$c29c)" \
	comment=0x188,"Check EOF on DEVN (DOS JMP \$dd4d; SuperDosE6 \$dd54)" \
	comment=0x18b,"Evaluate expression (DOS SuperDosE6 JMP \$c29c)" \
	comment=0x18e,"User error trap, called from \$8344 (DOS SuperDosE6 JMP \$c29c)" \
	comment=0x191,"System error trap, called from \$8344 (DOS JMP \$c69e; SuperDosE6 \$c6c5)" \
	comment=0x194,"Run Link - used by DOS to RUN filename (DOS JMP \$d490; SuperDosE6 \$d4b7)" \
	comment=0x197,"Reset Basic Memory, editing or entering BASIC lines" \
	comment=0x19a,"Get next command - reading in next command to be executed" \
	comment=0x19d,"Assign string variable" \
	comment=0x1a0,"Screen access - CLS, GET, PUT" \
	comment=0x1a3,"Tokenise line" \
	comment=0x1a6,"De-Tokenise line" \
	comment=0x1a9,"String buffer area" \
	comment=0x1d1,"Cassette filename length in range 0-8" \
	comment=0x1d2,"Cassette filename to search for or write out" \
	comment=0x1da,"Cassette I/O default data buffer - 255 bytes" \
	comment=0x1da,"D64 - 64K mode bootstrap routine is copied here to run" \
	comment=0x1da,"Cassette buffer - filename of file read" \
	comment=0x1e2,"Cassette buffer - filetype 0x00 BASIC program 0x01 Data 0x02 Machine code" \
	comment=0x1e3,"Cassette buffer - ASCII flag 0x00 Binary 0xff ASCII flag" \
	comment=0x1e4,"Cassette buffer - gap flag 0x00 Continous 0xff Gapped file" \
	comment=0x1e5,"Cassette buffer - Entry (Exec) addr of m/c file" \
	comment=0x1e7,"Cassette buffer - Load address for ungapped m/c file" \
	comment=0x2d9,"BASIC line input buffer preamble" \
	comment=0x2dd,"BASIC line input buffer - used for de-/tokenising data" \
	comment=0x2dd,"CoCo - 255 byte keyboard buffer {1}" \
	comment=0x2e1,"CoCo - 90 byte screen buffer {1}" \
	comment=0x3d9,"Buffer space" \
	comment=0x3eb,"Unused" \
	comment=0x3fd,"D32 - Unused in Dragon 32" \
	comment=0x3fd,"D64 - Printer end of line delay in milliseconds (0x0000)" \
	comment=0x3ff,"D64 - %PRNSEL% selects default printer port 0x00 Parallel, non-0x00 Serial (0x00)" \
	comment=0x400,"Default Text screen" \
	comment=0x600,"Available graphics pages w/o DOS" \
	comment=0x600,"DOS - workspace area see also \$00ea-\$00f6" \
	comment=0x600,"CoCo DOS workspace area (no more info)" \
	comment=0xc00,"DOS - Available graphics pages" \
	comment=0x8000,"BASIC ROM in 32K mode" \
	comment=0x8000,"CoCo - Extended Color BASIC ROM" \
	comment=0xa000,"CoCo - Color BASIC ROM" \
	comment=0xbff0,"These addresses mapped from ROM to \$fff0-\$ffff by the SAM" \
	comment=0xc000,"DOS - Dos ROM" \
	comment=0xc000,"DOS - Cumana DOS ROM only" \
	comment=0xc000,"Available address range to cartridge expansion port 32K mode" \
	comment=0xc000,"D64 - 64K mode - copy of BASIC ROM 2 exists in RAM here" \
	comment=0xff00,"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" \
	comment=0xff01,"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)" \
	comment=0xff02,"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" \
	comment=0xff03,"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)" \
	comment=0xff04,"D64 - ACIA serial port read/write data reg." \
	comment=0xff05,"D64 - ACIA serial port status (R)/ reset (W) reg." \
	comment=0xff06,"D64 - ACIA serial port command reg." \
	comment=0xff07,"D64 - ACIA serial port control reg." \
	comment=0xff20,"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" \
	comment=0xff21,"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" \
	comment=0xff22,"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" \
	comment=0xff23,"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)" \
	comment=0xff40,"DOS - Disk Controller command/status reg." \
	comment=0xff41,"DOS - Disk Controller track reg." \
	comment=0xff42,"DOS - Disk Controller sector reg." \
	comment=0xff43,"DOS - Disk Controller data reg." \
	comment=0xff48,"DOS - Disk Controller hardware control reg." \
	comment=0xffc0,"SAM (Synchronous Address Multiplexer) register bits - use even address to clear, odd address to set" \
	comment=0xffc0,"SAM VDG Mode registers V0-V2" \
	comment=0xffc0,"SAM VDG Reg V0" \
	comment=0xffc2,"SAM VDG Reg V1" \
	comment=0xffc3,"SAM VDG Reg V2" \
	comment=0xffc6,"SAM Display offset in 512 byte pages F0-F6" \
	comment=0xffc6,"SAM Display Offset bit F0" \
	comment=0xffc8,"SAM Display Offset bit F1" \
	comment=0xffca,"SAM Display Offset bit F2" \
	comment=0xffcc,"SAM Display Offset bit F3" \
	comment=0xffce,"SAM Display Offset bit F4" \
	comment=0xffd0,"SAM Display Offset bit F5" \
	comment=0xffd2,"SAM Display Offset bit F6" \
	comment=0xffd4,"SAM Page #1 bit - in D64 maps upper 32K Ram to \$0000 to \$7fff" \
	comment=0xffd6,"SAM MPU Rate R0-R1" \
	comment=0xffd6,"SAM MPU Rate bit R0" \
	comment=0xffd8,"SAM MPU Rate bit R1" \
	comment=0xffda,"SAM Memory Size select M0-M1" \
	comment=0xffda,"SAM Memory Size select bit M0" \
	comment=0xffdc,"SAM Memory Size select bit M1" \
	comment=0xffde,"SAM Map Type - in D64 switches in upper 32K RAM \$8000-\$feff" \
	comment=0xffec,"PC-Dragon - Used by Paul Burgin's emulator to provide enhanced services" \
	comment=0xfff0,"6809 interrupt vectors mapped from \$bff0-\$bfff by SAM" \
	comment=0xfff0,"Reserved (\$0000; D64 64K mode 0x3634 '64')" \
	comment=0xfff2,"SWI3  (\$0100)" \
	comment=0xfff4,"SWI2  (\$0103)" \
	comment=0xfff6,"FIRQ  (\$010f)" \
	comment=0xfff8,"IRQ  (\$010c)" \
	comment=0xfffa,"SWI  (\$0106)" \
	comment=0xfffc,"NMI  (\$0109)" \
	comment=0xfffe,"RESET  (\$b3b4; D64 64K mode \$c000 - never accessed)" \
	comment=0x8000,"Hardware Initialisation (JMP \$bb40; D64 JMP \$bb3c)" \
	comment=0x8003,"Software Initialisation (JMP \$bb88)" \
	comment=0x8006,"%POLCAT% Scans keyboard, rets value in A (JMP \$bbe5) Called indirectly from [\$a000]" \
	comment=0x8009,"%CBLINK% Cursor Blink (JMP \$bbb5)" \
	comment=0x800c,"%CHROUT% Write chr in A to screen (JMP \$bcab)" \
	comment=0x800f,"%LPOUT% Line printer character output in A reg., forces end-of-line  sequences, outputs extra spaces to cause LFs etc. See: \$0099-009c, \$0148 (JMP \$bd1a)" \
	comment=0x8012,"Reads Joystick (JMP \$bd52) Called indirectly from [\$a00a]" \
	comment=0x8015,"Cassette relay on (JMP \$bdcf)" \
	comment=0x8018,"Cassette relay off (JMP \$bddc)" \
	comment=0x801b,"Write leader to cassette (JMP \$be68) Called indirectly from [\$a00c]" \
	comment=0x801e,"Output byte in A to cassette (JMP \$be12)" \
	comment=0x8021,"Cassette on, init for reading (JMP \$bde7) Called indirectly from [\$a004]" \
	comment=0x8024,"Input byte from cassette into A (JMP \$bdad)" \
	comment=0x8027,"Get one bit from cassette to CC.C (JMP \$bda5)" \
	comment=0x802a,"Reads a byte from serial port (JMP \$be7b)" \
	comment=0x802d,"Sends a byte to serial port (D32 JMP \$be7c; D64 JMP \$be98)" \
	comment=0x8030,"Set serial port baud rate (D32 JMP \$be7d; D64 JMP \$bea6)" \
	comment=0x8033,"Reserved words table" \
	comment=0x8154,"Reserved words dispatch table (Tokens 0x80-0xba only)" \
	comment=0x81ca,"Function words table" \
	comment=0x8250,"Function words dispatch table" \
	comment=0x8294,"Another dispatch table: 0x79, \$910e   + 0x79, \$9105 - 0x7b, \$9275 * 0x7b, \$933c / 0x7f, \$96a0 ^ 0x50, \$8a12 AND 0x46, \$8a11 OR The related functions come from {2, p.347}" \
	comment=0x82a9,"Error code table" \
	comment=0x82df,"' ERROR', 0x00" \
	comment=0x82e6,"' IN ', 0x00" \
	comment=0x82eb,"0x0d, 'OK', 0x0d, 0x00" \
	comment=0x82f0,"0x0d, 'BREAK', 0x00" \
	comment=0x8344,"System Error - generates error message according to B (CoCo \$ac46)" \
	comment=0x8371,"Prints OK prompt and returns to Command mode (CoCo \$ac73)" \
	comment=0x83ed,"BasVect2 - completes init once BASIC program loaded (CoCo \$acef)" \
	comment=0x8415,"NEW token dispatch address" \
	comment=0x8417,"Erases program in memory same as NEW (CoCo \$ad19) {1} Called from BASIC init routine (\$b3ba)" \
	comment=0x841f,"BasVect1 - sets up various vectors after a BASIC program loaded (CoCo \$ad21)" \
	comment=0x8434,"Resets stack - all entries are lost (CoCo \$ad33)" \
	comment=0x8448,"FOR token dispatch address" \
	comment=0x849f,"RUN BASIC - runs BASIC program in mem used by Autorun programs (CoCo \$ad9e)" \
	comment=0x8514,"RESTORE token dispatch address" \
	comment=0x852b,"Waits for key press, returns key in A (CoCo \$adfb)" \
	comment=0x8532,"END token dispatch address" \
	comment=0x8539,"STOP token dispatch address" \
	comment=0x8560,"CONT token dispatch address" \
	comment=0x8571,"CLEAR token dispatch address" \
	comment=0x85a5,"RUN token dispatch address" \
	comment=0x85b9,"GO token dispatch address" \
	comment=0x85f3,"RETURN token dispatch address" \
	comment=0x8613,"DATA token dispatch address" \
	comment=0x8616,"REM, ', ELSE token dispatch address" \
	comment=0x8647,"IF token dispatch address" \
	comment=0x8675,"ON token dispatch address" \
	comment=0x86bc,"LET token dispatch address" \
	comment=0x8705,"'?REDO', 0x0d, 0x00" \
	comment=0x872b,"INPUT token dispatch address" \
	comment=0x8777,"READ token dispatch address" \
	comment=0x8829,"NEXT token dispatch address" \
	comment=0x8877,"Get expression: evaluates next expression and puts VARPTR addr in \$0052:0053 (CoCo \$b146)" \
	comment=0x8887,"Get string: compiles a string and puts it in free string space (CoCo \$b156)" \
	comment=0x89a4,"CkClBrak: checks cmd line for closed bracket (CoCo \$b267)" \
	comment=0x89a7,"CkOpBrak: checks cmd line for open bracket (CoCo \$b26a)" \
	comment=0x89aa,"CkComa: checks next cmd line chr for a comma, if not a Syntax error is generated (CoCo \$b26d)" \
	comment=0x89ac,"CkChar: as for CkComa but checks for chr in B (CoCo \$b26f)" \
	comment=0x89b4,"Both reserved word and function dispatch tables of Stub 1 at \$012a point here" \
	comment=0x8a11,"OR operator dispatch address (see \$8294)" \
	comment=0x8a12,"AND operator dispatch address (see \$8294)" \
	comment=0x8a8b,"DIM token dispatch address" \
	comment=0x8a94,"%GETVAR% gets VARPTR addr of following variables name (CoCo \$b357)" \
	comment=0x8b29,"%GETUSR% returns value of arg in USR fn in D (CoCo \$b3e9)" \
	comment=0x8b2d,"%INTCNV%" \
	comment=0x8b30,"Passes parameters to machine code routine {1}" \
	comment=0x8b39,"Used to pass back values from m/c to BASIC {1}" \
	comment=0x8b8d,"Jump to this causes ?FC ERROR" \
	comment=0x8c31,"MEM function token dispatch address" \
	comment=0x8c35,"Assign16Bit: assigns D to numeric variable (CoCo \$b4f2) ?? 8c35:8c36 is a BRN" \
	comment=0x8c36,"Assign8Bit: assigns B to numeric variable (CoCo \$b4f3) clears A, stores D in FAC" \
	comment=0x8c37,"%GIVABF% returns D as 16bit val in FAC" \
	comment=0x8c40,"STR\$ function token dispatch address" \
	comment=0x8cd7,"Forces String space Garbage collection (CoCo \$b591)" \
	comment=0x8d9a,"Sub -" \
	comment=0x8d9f,"%DELVAR% frees space taken by variable (CoCo \$b659)" \
	comment=0x8dc7,"LEN function token dispatch address" \
	comment=0x8dd2,"CHR\$ function token dispatch address" \
	comment=0x8de6,"ASC function token dispatch address" \
	comment=0x8df1,"LEFT\$ function token dispatch address" \
	comment=0x8e0e,"RIGHT\$ function token dispatch address" \
	comment=0x8e15,"MID\$ function token dispatch address" \
	comment=0x8e51,"Get8Bit: returns value of following number in B (CoCo \$b70b)" \
	comment=0x8e5c,"VAL function token dispatch address" \
	comment=0x8e83,"Get16Bit: returns value of following number in X (CoCo \$b73d)" \
	comment=0x8e96,"PEEK function token dispatch address" \
	comment=0x8e9d,"POKE token dispatch address" \
	comment=0x8ea4,"LLIST token dispatch address" \
	comment=0x8eaa,"LIST token dispatch address, List Basic to DEVN (CoCo \$b764)" \
	comment=0x903d,"PRINT token dispatch address" \
	comment=0x90a1,"Print CR/LF: moves cursor posn to start of new line (CoCo \$b958)" \
	comment=0x90e5,"Out String: Prints ASCIIZ string ptd to by X to DEVN (CoCo \$b99c)" \
	comment=0x9105,"- operator dispatch address (see \$8294)" \
	comment=0x910e,"+ operator dispatch address (see \$8294)" \
	comment=0x9165,"clear temporary exponent accumulator FAC0" \
	comment=0x9166,"test FAC0 msb of mantissa" \
	comment=0x9168,"branch if FAC0 exponent is not 0" \
	comment=0x916a,"If FAC0 MSB ==0: Shift FAC0 mantissa a whole byte at a time." \
	comment=0x917a,"Replace FAC0 mantissa LSB" \
	comment=0x917c,"shifting one byte = 8 bit shifts; add 8 to exponent" \
	comment=0x917e,"check for 5 shifts" \
	comment=0x9180,"branch if < 5 shifts, if > 5, then FAC0 mantissa = 0" \
	comment=0x9182,"zero FAC0 exponent" \
	comment=0x9185,"zero FAC0 mantissa sign" \
	comment=0x9188,"Shift FAC0 mantissa to right" \
	comment=0x918d,"add one to FAC0 exponent" \
	comment=0x918e,"\$63: shift left floating point sub byte (fifth byte)" \
	comment=0x9190,"\$53: shift left FAC0 MANTISSA LS Least Significant Byte" \
	comment=0x9192,"\$52: shift left FAC0 MANTISSA NLS Next Least Significant Byte" \
	comment=0x9194,"\$51: shift left FAC0 MANTISSA NMS Next Most Significant Byte" \
	comment=0x9196,"\$50: shift left FAC0 MANTISSA MS Most Significant Byte" \
	comment=0x9198,"branch if FAC0 not yet normalized" \
	comment=0x919a,"get current FAC0 exponent" \
	comment=0x919c,"save FAC0 exponent modifier caused by normalization" \
	comment=0x919e,"subtract accumulated FAC0 exponent modifier" \
	comment=0x91a0,"save as new FAC0 exponent" \
	comment=0x91a2,"set FAC0 = 0 if the normalization caused" \
	comment=0x91a7,"sub byte bit 7 to carry - use as round-off flag (truncate the rest of sub byte)" \
	comment=0x91a9,"clear, but do not change carry flag" \
	comment=0x91ab,"clear the sub byte (fifth byte)" \
	comment=0x91ad,"go round-off result" \
	comment=0x923c,"LOG function token dispatch address" \
	comment=0x9275,"* operator dispatch address (see \$8294)" \
	comment=0x933c,"/ operator dispatch address (see \$8294)" \
	comment=0x93bf,"%MOVFM% Converts a 5-byte BASIC Real variable structure pointed to by X to FAC at \$004f {2}" \
	comment=0x9425,"SGN function token dispatch address" \
	comment=0x942d,"Jumped to from GIVABF routine at 8c37-8c3f - returns 16 bit value in FAC to BASIC ??" \
	comment=0x943e,"ABS function token dispatch address" \
	comment=0x9499,"INT function token dispatch address" \
	comment=0x9564,"5 byte floating point number" \
	comment=0x9569,"5 byte floating point number" \
	comment=0x956e,"5 byte floating point number" \
	comment=0x957a,"Print Number: outputs D as number to DEVN (CoCo \$bdcc)" \
	comment=0x9697,"SQR function token dispatch address" \
	comment=0x96a0,"^ operator dispatch address (see \$8294)" \
	comment=0x9713,"EXP function token dispatch address" \
	comment=0x9772,"RND function token dispatch address" \
	comment=0x978e,"Random Number: generates 8bit random number in \$0116" \
	comment=0x97cb,"COS function token dispatch address" \
	comment=0x97d1,"SIN function token dispatch address" \
	comment=0x9816,"TAN function token dispatch address" \
	comment=0x9877,"ATN function token dispatch address" \
	comment=0x98e3,"Called from BASIC init routine (\$b3ba-)" \
	comment=0x9956,"FIX function token dispatch address" \
	comment=0x9965,"EDIT token dispatch address" \
	comment=0x9ad9,"TRON token dispatch address" \
	comment=0x9ada,"TROFF token dispatch address" \
	comment=0x9ade,"POS function token dispatch address" \
	comment=0x9af4,"VARPTR function token dispatch address" \
	comment=0x9b84,"STRING\$ function token dispatch address" \
	comment=0x9bb4,"INSTR function token dispatch address" \
	comment=0x9c3e,"Assign16BitB: assigns value in \$0052:0053 to a variable (CoCo \$880e)" \
	comment=0x9c81,"DEF token dispatch address" \
	comment=0x9d00,"Sub" \
	comment=0x9d0d,"Sub which returns a ptr in X to the address in the USR table (ref'd by \$00b0:00b1) of the USR function to be called" \
	comment=0x9d1d,"USR function token dispatch address" \
	comment=0x9d35,"Sub which checks for '=' token, then gets value of next expression by JMPing to \$8e83" \
	comment=0x9d3d,"IRQ interrupt service routine" \
	comment=0x9d59,"TIMER function token dispatch address" \
	comment=0x9d61,"DEL token dispatch address" \
	comment=0x9dfa,"RENUM token dispatch address" \
	comment=0x9fca,"3 bytes Unused ? 'UL '" \
	comment=0x9fce,"D32 - Unused 0x00" \
	comment=0x9fd0,"D64 - Patch to support VARPTRs >32K" \
	comment=0x9fd9,"D64 - Unused 0x00" \
	comment=0xa000,"Indirect jump table" \
	comment=0xa000,"Keyboard input (\$8006)" \
	comment=0xa002,"Character output in A to DEVNUM (\$b54a)" \
	comment=0xa004,"Cassette on for reading (\$8021)" \
	comment=0xa006,"Block input from tape (\$b93e)" \
	comment=0xa008,"Block output to tape (\$b999)" \
	comment=0xa00a,"Joystick input (\$8012)" \
	comment=0xa00c,"Write leader to cassette (\$801b)" \
	comment=0xa00e,"HEX\$ function token dispatch address" \
	comment=0xa049,"DLOAD token dispatch address" \
	comment=0xa0e0,"Can be used to wait for 2 keypresses {1}" \
	comment=0xa0ea,"Waits for keypress with flashing cursor (CoCo \$8cc6)" \
	comment=0xa0f4,"Sub: called from DLOAD routine" \
	comment=0xa438,"Sub - returns CC.C set if A is not char '0'-'9'" \
	comment=0xa6ef,"PSET token dispatch address" \
	comment=0xa6f3,"PRESET token dispatch address" \
	comment=0xa6c7,"PPOINT function token dispatch address" \
	comment=0xa749,"LINE token dispatch address" \
	comment=0xa8c0,"PCLS token dispatch address" \
	comment=0xa8c7,"Clear Graphics: Clears current graphics screen with data in B (CoCo \$9539)" \
	comment=0xa8d4,"COLOR token dispatch address" \
	comment=0xa928,"Set Colours: sets up locations \$00b4, \$00b5 (CoCo \$959a)" \
	comment=0xa938,"Select Display: Selects Text (CC.Z=1) or Graphics (CC.Z=0) mode (CoCo \$95aa)" \
	comment=0xa93a,"Reset VDU: resets default VDU mode (CoCo \$95ac)" \
	comment=0xa989,"Set VDG Mode given in A (CoCo \$95fb)" \
	comment=0xa99d,"Set VDG Offset for graphics mode (CoCo \$960f)" \
	comment=0xa9a4,"Set VDG Colour set from \$00c1 (CoCo \$9616)" \
	comment=0xa9af,"PMODE token dispatch address" \
	comment=0xa9e1,"Set Page to B (CoCo \$9653)" \
	comment=0xa9fe,"SCREEN token dispatch address" \
	comment=0xaa10,"Select Colour set 0 or 1 from B (CoCo \$9682)" \
	comment=0xaa19,"PCLEAR token dispatch address" \
	comment=0xaa23,"Reserve HiRes Graphics RAM, moves BASIC if nec. (CoCo \$9695)" \
	comment=0xaa81,"Called from BASIC init routine (\$b3ba-)" \
	comment=0xaabe,"PCOPY token dispatch address" \
	comment=0xaada,"Sub - reads and checks PCOPY page numbers" \
	comment=0xaaf0,"GET token dispatch address" \
	comment=0xaaf3,"PUT token dispatch address" \
	comment=0xabd4,"5 entry table of form Word, Word, Token for matching PUT mode" \
	comment=0xac87,"PAINT token dispatch address" \
	comment=0xadbd,"PLAY token dispatch address" \
	comment=0xae9a,"Play Note: A contains ASCII code (CoCo \$9ad7)" \
	comment=0xaf33,"Sub - gets next PLAY cmd in A" \
	comment=0xafd9,"PLAY IRQ routine - branches to \$bb02 if \$00e3 == 0x0000" \
	comment=0xaff6,"Table maps PLAY notes A-G to tone number" \
	comment=0xaffd,"Table" \
	comment=0xb015,"Table" \
	comment=0xb051,"DRAW token dispatch address (CoCo \$9cb6)" \
	comment=0xb238,"CIRCLE token dispatch address" \
	comment=0xb39b,"Called after Hardware init routine, following a RESET Inits stack, checks for Cold/warm start.  If \$0071 contains 0x55 and \$0072:0073 points to NOP then execution is passed to [\$0072:0073] otherwise branches to \$b3ba" \
	comment=0xb3b4,"RESET interrupt service routine (CoCo \$a027) Loads Y with \$b39b and JMPs \$8000" \
	comment=0xb3ba,"Cold start routine - clears lo mem, inits BASIC" \
	comment=0xb400,"Boot Basic: Restarts BASIC interpreter (CoCo \$a0b6)" \
	comment=0xb432,"Checks for \$c000:c001 = 0x444b ('DK') and branches to \$c002 if found" \
	comment=0xb44f,"Warm start RESET jumps here" \
	comment=0xb469,"FIRQ interrupt service routine - branches to \$b46f if source was cartridge else RTI" \
	comment=0xb46f,"Calls \$b480 twice, then JMPs to \$8000 with Y = \$b47b" \
	comment=0xb47b,"CLRs \$0071, then JMPs \$c000 to start cartridge" \
	comment=0xb480,"Loads X from \$008a (0x0000) and decrements to 0x0000 Gives 524,298 cycle, approx. 590ms delay" \
	comment=0xb487,"14 bytes copied to \$009d-\$00aa at startup" \
	comment=0xb495,"30 bytes copied to \$010c-\$0129 at startup" \
	comment=0xb4b3,"'(C) 1982 DRAGON DATA LTD ', 0x0d" \
	comment=0xb4cd,"'16K BASIC INTERPRETER 1.0      ', 0x0d" \
	comment=0xb4ed,"'(C) 1982 BY MICROSOFT', 0x0d, 0x0d, 0x00" \
	comment=0xb505,"Waits for key with cursor ? Called from SuperDos E6 ROM" \
	comment=0xb54a,"%OUTCHR% Sends char in A to DEVN (CoCo \$a282) Called indirectly from [\$a002]" \
	comment=0xb64c,"CLOSE token dispatch address" \
	comment=0xb65f,"Close files: closes an open tape stream (CoCo \$a42d)" \
	comment=0xb682,"CSAVE token dispatch address" \
	comment=0xb6d4,"CLOAD token dispatch address" \
	comment=0xb6a5,"Write BASIC: writes BASIC program to cassette (CoCo \$a469)" \
	comment=0xb714,"Loads a headerless program from cassette {10}" \
	comment=0xb748,"Read Binary file from tape (CoCo \$a511)" \
	comment=0xb770,"EXEC token dispatch address" \
	comment=0xb796,"INKEY\$ function token dispatch address" \
	comment=0xb7cc,"Copy B bytes from X to U" \
	comment=0xb800,"EOF function token dispatch address" \
	comment=0xb81e,"SKIPF token dispatch address" \
	comment=0xb828,"OPEN token dispatch address" \
	comment=0xb8b3,"Find File: searches tape for matching filename (CoCo \$a681)" \
	comment=0xb933,"Read 1st Block: reads filename block to cas. buf (CoCo \$a701)" \
	comment=0xb93e,"%BLKIN% reads a block of data into cas. buffer (CoCo \$a70b) Called indirectly from [\$a006]" \
	comment=0xb981,"MOTOR token dispatch address" \
	comment=0xb991,"Write 1st Block (CoCo \$a7e5)" \
	comment=0xb999,"%BLKOUT% writes a block of data to cassette (CoCo \$a7f4) Called indirectly from [\$a008]" \
	comment=0xb9cd,"Write byte 0x55 to cassette by JMPing to \$801e" \
	comment=0xb9cf,"JMPs to \$801e to write byte in A" \
	comment=0xb9d2,"SET token dispatch address" \
	comment=0xb9df,"Set LoRes Pixel: X contains screen addr, B the colour and \$00b8 the OR data (CoCo \$a88d)" \
	comment=0xba03,"RESET token dispatch address" \
	comment=0xba07,"Reset LoRes Pixel: X contains screen addr, \$00b8 OR data (CoCo \$a8b5)" \
	comment=0xba28,"Calc LoRes Pixel Pos: Stack contains vert and horiz coords (CoCo \$a8d9)" \
	comment=0xba44,"POINT function token dispatch address" \
	comment=0xba5f,"CLS token dispatch address" \
	comment=0xba77,"Clears text screen (CoCo \$a928)" \
	comment=0xba79,"Clears text screen with value in B (CoCo \$a92a)" \
	comment=0xba86,"Clears screen, prints '(C) 1982 BY MICROSOFT' msg at \$b4ec" \
	comment=0xba9a,"SOUND token dispatch address" \
	comment=0xbaa0,"Produces Beep of length B, pitch in \$008c (CoCo \$a951)" \
	comment=0xbac3,"Audio off: Disables sound (CoCo \$a974)" \
	comment=0xbac5,"Enables sound (CoCo \$a976)" \
	comment=0xbad4,"Reset DAC - writes (D32 0x7e; D64 0x7c) to D/A (CoCo \$a985)" \
	comment=0xbad6,"Writes A to DAC - bits 0,1 of A must be 0 (CoCo \$a987)" \
	comment=0xbadf,"AUDIO token dispatch address" \
	comment=0xbaec,"AUDIO ON: B must be 0x00 on entry (CoCo \$a99d)" \
	comment=0xbaf1,"Sub to init PIA for sound source output specified by the lower 2 bits of B - 00 = DAC, 01 = Tape input, 10 = External Cart source, 11 = none This code duplicates the function of \$bd41-bd51, the only dif being an ASRB replacing a RORB" \
	comment=0xbb02,"Interrupt service subroutine to decrement \$008d:008e, returns with RTI" \
	comment=0xbb0d,"JOYSTK function token dispatch address" \
	comment=0xbb26,"Jumped to from selfmodifying CHRGET routine at \$009f" \
	comment=0xbb3c,"D64 - Hardware init, JMPd to from \$8000, Y should contain return address" \
	comment=0xbb40,"D32 - Hardware init, JMPd to from \$8000, Y should contain return address" \
	comment=0xbb80,"D64 - Boots 64K mode with JMP \$bf49" \
	comment=0xbb88,"Software init, JMPd to from \$8003, inits \$008f-009b, \$0148-0150 with ROM defaults" \
	comment=0xbb92,"D64 - patched to JSR \$BEFF (CLR \$03fd-03ff; LDU #\$0148)" \
	comment=0xbb97,"CopyXtoU - copies B bytes from X to U" \
	comment=0xbb9f,"default values for \$008f-009b" \
	comment=0xbbac,"default values for \$0148-0150" \
	comment=0xbbb5,"Flashes cursor, JMPd to from \$8009 (CoCo \$a199)" \
	comment=0xbbc5,"Decrements X from 0x045e, gives 1ms delay" \
	comment=0xbbc8,"Decrements X until 0 then returns" \
	comment=0xbbcd,"subroutine" \
	comment=0xbbe5,"%INCH% Scans keyboard, returns char in A, JMPd to from \$8006 (CoCo \$a1c1)" \
	comment=0xbbec,"Keyboard polling sub, returns key code in A" \
	comment=0xbca0,"Clear VDU line from cursor posn (CoCo \$a323)" \
	comment=0xbcab,"%OUTCH% Put char in A to screen, JMPd to from \$800c (CoCo \$a30a)" \
	comment=0xbcf5,"%TXLPCH%  Low level routine to print char in A (CoCo \$)" \
	comment=0xbd0a,"PCRLF: moves print head to next line" \
	comment=0xbd1a,"Send char in A to printer, JMPd to from \$800f (CoCo \$a2bf) D64 - This routine uses Y as well and is source of a bug in the Clear-J fn of Visitext Word-Pro." \
	comment=0xbd41,"%SNDSEL%  Selects Analogue Mux channel from B.  Used to read Joysticks or set sound channel (CoCo \$a9a2) 0x00 DAC       / Right Joystick, x-axis 0x01 Cassette  / Right Joystick, y-axis 0x02 Cartridge / Left Joystick, x-axis 0x03 Unused    / Left Joystick, y-axis See also \$baf1-bb01" \
	comment=0xbd52,"%JOYIN% Reads Joysticks updates \$015a-015d, JMPd to from \$8012 (CoCo \$a9de)" \
	comment=0xbd8a,"Increments \$0082, samples Cassette input bit into CC.C" \
	comment=0xbd91,"Sub" \
	comment=0xbd97,"Sub" \
	comment=0xbd99,"Sub" \
	comment=0xbd9e,"Sub" \
	comment=0xbda0,"Sub" \
	comment=0xbda5,"%BITIN% Get one bit from cassette to CC.C, JMPd to from \$8027 (CoCo \$a755)" \
	comment=0xbdad,"%CBIN% Input byte from cassette into A, JMPd to from \$8024 (CoCo \$a749)" \
	comment=0xbdb9,"Sub" \
	comment=0xbdbf,"Sub" \
	comment=0xbdcf,"%CASON% Motor on - Turns on relay, loads X with delay value from \$0095:0096 (0xda5c) then LBRAs to \$bbc8, JMPd to from \$8015 (CoCo \$a7ca)" \
	comment=0xbddc,"%CASOFF% Motor off - turns relay off, re-enables FIRQ, IRQ, JMPd to from \$8018 (CoCo \$a7eb)" \
	comment=0xbde7,"%CSRDON% Read Leader - Disables FIRQ, IRQ, Cassette on, init for reading, JMPd to from \$8021 (CoCo \$a77c)" \
	comment=0xbe12,"%CBOUT% Output byte in A to cassette, JMPd to from \$801e (CoCo \$a82a)" \
	comment=0xbe44,"36 bytes of Sine Wave data in upper 5 bits of each byte." \
	comment=0xbe68,"%WRTLDR% disables FIRQ, IRQ, turns on cassette, writes number of leader bytes = 0x55 according to \$0090:0091 (d32 0x0080), JMPd to from \$801b Pre: B,Y Des: CC,A,X Ret: X=0x0000,A=0x55" \
	comment=0xbe7b,"D32 - JMPd to from \$802a (RTS)" \
	comment=0xbe7b,"D64 - Read byte from serial port to A, JMPd to from \$802a" \
	comment=0xbe7c,"D32 - JMPd to from \$802d (RTS)" \
	comment=0xbe7d,"D32 - JMPd to from \$8030 (COMB; RTS)" \
	comment=0xbe7f,"D32 - Unused area, all 0x00" \
	comment=0xbe98,"D64 - Output byte in A to serial port, JMPd to from \$802d" \
	comment=0xbea6,"D64 - Set baud rate in B, JMPd to from \$8030" \
	comment=0xbebe,"D64 - Lookup table to map B to ACIA baud rate constant" \
	comment=0xbec5,"D64 - Key scan which pauses printer during printing {8}" \
	comment=0xbeff,"D64 - Patched into Software init to CLR \$03fd-03ff" \
	comment=0xbf0c,"D64 - handles serial printer end of line delay" \
	comment=0xbf20,"D64 - IRQ routine which can be hooked in D32 mode to provide 64 mode style auto-repeat and serial support" \
	comment=0xbf49,"D64 - Copies 64 mode bootstrap code to \$01da and JMPs EXEC points here at startup." \
	comment=0xbf5a,"D64 - Bootstrap routine code copied to \$01da-0268" \
	comment=0xbf9c,"D64 - '64' Can be used to check for D64 32k mode ROM" \
	comment=0xbfe9,"D64 - Unused 0x00" \
	comment=0xbff0,"6809 interrupt vectors mapped to \$fff0-\$ffff by SAM" \
	comment=0xbff0,"Reserved     (\$0000)" \
	comment=0xbff2,"SWI3 vector  (\$0100)" \
	comment=0xbff4,"SWI2 vector  (\$0103)" \
	comment=0xbff6,"FIRQ vector  (\$010f)" \
	comment=0xbff8,"IRQ vector   (\$010c)" \
	comment=0xbffa,"SWI vector   (\$0106)" \
	comment=0xbffc,"NMI vector   (\$0109)" \
	comment=0xbffe,"RESET vector (\$b3b4)" \
        d32.rom | tee d32.asm

    ./asm6809.pl --output=d32_asm6809.rom --listing=d32_asm6809.lst d32.asm
    #~ rm d32.asm
)