C6805 - Filling Unused ROM


It is possible to fill an area of the 6805's ROM with a particular value and set an interrupt vector to point to the initialization at the start of the program which comes before the main() function. This method can easily be extended to use any value or series of values.

/* Assembler instructions to fill ROM from 0200 to 1FFB */           
#define ROMSTART 0x0200           
#define ROMSIZE  0x1E00           
 opt -l    ; Turn listing off              
 org ROMSTART              
 rept ROMSIZE              
 opt +l    ; Turn listing back on           

#pragma memory ROMPROG  [2]  @ 0x1ffc ;

 fdb __MAIN              

/* Configuration for the rest of the program */           
#pragma mori @ 0x1fdf = 00;
#pragma memory ROMPROG  [ROMSIZE] @ ROMSTART ;
#pragma memory RAMPAGE0 [176]   @ 0x0050 ;
#pragma vector __RESET @ 0x1ffe ;
#pragma vector __SWI   @ 0x1ffc ;
#pragma has STOP ;
#pragma has WAIT ;
#pragma has MUL ;
int i = 12;
void main (void) {           }