; Run-time startoff module for HI-TECH C for the Microchip PIC 16Cxx (12 and 14 bit) ; ; Copyright (C) 1995-1999 HI-TECH Software ; ; $Header: /hitech/cvsroot/nz/demo/pic/split/extrt.as,v 1.1 2001/03/30 05:12:32 hoa Exp $ ; ; $Log: extrt.as,v $ ; Revision 1.1 2001/03/30 05:12:32 hoa ; Split code example for PIC midrange. ; ; Revision 1.9 2001/02/28 03:36:50 lucky ; Added nvbit psects ; ; Revision 1.8 2001/01/19 03:50:01 jeff ; Added eeprom_data psect for midrange devices ; ; Revision 1.7 1999/05/31 06:01:36 jeff ; Baseline PICs no longer have STATUS cleared to preserve the GPWUF bit ; after reset ; ; Revision 1.6 1999/04/19 04:00:46 clyde ; Improved byte division speed. Declaration fixes in mprnt.c ; ; Revision 1.5 1999/02/04 05:46:54 jeff ; movlr instruction no longer produced when compiling for 17c42 chip ; ; Revision 1.4 1998/10/28 03:13:06 clyde ; Fixed problems with compare and div functions for PIC17 ; ; Revision 1.3 1998/09/25 05:31:46 clyde ; Lots of changes ; ; Revision 1.2 1998/06/25 12:55:30 clyde ; Fixed mprnt to null terminate sprintf; Fixed floating point for PIC17 ; and related stuff. ; ; Revision 1.1 1998/04/02 06:59:34 clyde ; Added assembler files ; ; Revision 1.3 97/12/09 11:48:04 clyde ; V7.73 changes ; ; Revision 1.2 97/09/18 11:03:09 clyde ; Fix 508 stuff ; ; Revision 1.1 97/08/28 09:46:21 clyde ; Initial revision #include "sfr.h" global _ext_main,start,_exit,powerup fnconf rbss_0,?a,? fnroot _ext_main pic16c6x equ 1 psect config,class=CODE,delta=2 psect idloc,class=CODE,delta=2 psect common_ram,class=COMBANK,space=1 psect rbss_0,class=BANK0,space=1 psect rbss_1,class=BANK1,space=1 psect rbss_2,class=BANK2,space=1 psect rbss_3,class=BANK3,space=1 psect rdata_0,class=BANK0,space=1 psect rdata_1,class=BANK1,space=1 psect rdata_2,class=BANK2,space=1 psect rdata_3,class=BANK3,space=1 psect nvram,class=BANK0,space=1 psect nvram_1,class=BANK1,space=1 psect nvram_2,class=BANK2,space=1 psect nvram_3,class=BANK3,space=1 psect nvbit_0,class=BANK0,bit,space=1 psect nvbit_1,class=BANK1,bit,space=1 psect nvbit_2,class=BANK2,bit,space=1 psect nvbit_3,class=BANK3,bit,space=1 psect temp,ovrld,class=BANK0,space=1 psect struct,ovrld,class=BANK0,space=1 psect code,class=CODE,delta=2 psect rbit_0,class=BANK0,bit,space=1 psect rbit_1,class=BANK1,bit,space=1 psect rbit_2,class=BANK2,bit,space=1 psect rbit_3,class=BANK3,bit,space=1 psect strings,class=STRING,delta=2 psect stringtable,class=ENTRY,delta=2 psect vectors,ovrld,class=CODE,delta=2 psect powerup,class=CODE,delta=2 #ifdef _PIC12 psect text,class=ENTRY,delta=2 psect init,class=ENTRY,delta=2 psect end_init,class=ENTRY,delta=2 psect clrtext,class=ENTRY,delta=2 psect jmp_tab,class=STRING,delta=2 psect float_text0,class=ENTRY,delta=2,size=512 psect float_text1,class=ENTRY,delta=2,size=512 psect float_text2,class=ENTRY,delta=2,size=512 psect float_text3,class=ENTRY,delta=2,size=512 psect float_text4,class=ENTRY,delta=2,size=512 psect idata_0,class=CODE,delta=2 psect idata_1,class=CODE,delta=2 psect idata_2,class=CODE,delta=2 psect idata_3,class=CODE,delta=2 #else #ifdef _PIC16 psect idata_0,class=CODE,delta=1 psect idata_1,class=CODE,delta=1 psect idata_2,class=CODE,delta=1 psect idata_3,class=CODE,delta=1 #else psect eeprom_data,class=CODE,delta=2 psect idata_0,class=CODE,delta=2 psect idata_1,class=CODE,delta=2 psect idata_2,class=CODE,delta=2 psect idata_3,class=CODE,delta=2 #endif psect intcode,class=CODE,delta=2 psect intret,class=CODE,delta=2 psect intentry,class=CODE,delta=2 global intlevel0,intlevel1 intlevel0 intlevel1 psect intsave,class=BANK0,space=1 psect intsave_0,class=BANK0,space=1 psect intsave_1,class=BANK1,space=1 psect intsave_2,class=BANK2,space=1 psect intsave_3,class=BANK3,space=1 psect init,class=CODE,delta=2 psect text,class=CODE,delta=2 psect end_init,class=CODE,delta=2 psect clrtext,class=CODE,delta=2 psect float_text0,class=CODE,delta=2,size=2048 psect float_text1,class=CODE,delta=2,size=2048 psect float_text2,class=CODE,delta=2,size=2048 psect float_text3,class=CODE,delta=2,size=2048 psect float_text4,class=CODE,delta=2,size=2048 #endif #if defined(_PIC16) psect cstrings,class=CODE,delta=1 #endif #if defined(_PIC12) psect vectors,ovrld,class=CODE,delta=2 resetloc #if !(defined(_12C508) || defined(_12C509) || defined(_16C505)) goto powerup & 0x1FF | (resetloc & not 0x1FF) #else ds 1 ;leave space for oscillator correction load #endif #endif psect init start #if (defined(_12C508) || defined(_12C509) || defined(_16C505)) movwf 5 ;calibrate oscillator #endif _exit ; Other modules get linked in here to clear bss and copy ; data if necessary psect end_init #if defined(_PIC16) setf STATUS #if !defined _17C42 movlr 0 #endif movlw _ext_main >> 8 movwf PCLATH movlw _ext_main & 0xFF; movwf PCL #else #ifndef _PIC12 clrf STATUS #endif ljmp _ext_main ;go do the ext_main stuff #endif