123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425 |
- PROGRAM CSTARTUP
- PUBLIC __program_start
- EXTERN ?B0
- EXTERNS_FOR_ALL_DPTR_SYMBOLS()
- REQUIRE ?B0
- REQUIRE __call_main
- REQUIRE ?RESET_DPS
- REQUIRE __call_init_extended1
- ; Uncomment this when rom-monitor requires 3 NOPS between statements.
- ; REQUIRE ?ROM_MONITOR_NOPS
- RSEG REGISTERS:NOROOT:DATA
- PUBLIC ?REGISTERS
- ?REGISTERS:
- RSEG ISTACK:NOROOT:IDATA
- PUBLIC ?ISTACK_START
- ?ISTACK_START:
- RSEG PSTACK:NOROOT:XDATA
- PUBLIC ?PSTACK_START
- ?PSTACK_START:
- RSEG XSTACK:NOROOT:XDATA
- PUBLIC ?XSTACK_START
- ?XSTACK_START:
- RSEG EXT_STACK:NOROOT:XDATA
- PUBLIC ?EXT_STACK_START
- ?EXT_STACK_START:
- COMMON INTVEC:CODE:ROOT(0)
- ?reset_vector:
- DB 0x02 ; LJMP
- DB BYTE3(__program_start)
- DB high(__program_start)
- DB low(__program_start)
- RSEG CSTART:CODE:ROOT
- EXTERN ?REGISTER_BANK
- REQUIRE ?ISTACK_START
- REQUIRE ?REGISTERS
- REQUIRE ?reset_vector
- __program_start:
- MOV PSW,
- PUBLIC ?RESET_ESP
- REQUIRE ?EXT_STACK_START
- EXTERN ?ESP
- ?RESET_ESP:
- MOV SP,
- MOV ?ESP,
- PUBLIC ?RESET_SP
- REQUIRE ?ISTACK_START
- ?RESET_SP:
- MOV SP,
- RSEG CSTART:CODE:NOROOT
- PUBLIC ?RESET_PSP
- EXTERN ?PSP
- REQUIRE ?PSTACK_START
- REQUIRE ?RESET_PDATA_BANK
- EXTERN ?PSTACK
- ?RESET_PSP:
- MOV ?PSP,
- RSEG CSTART:CODE:NOROOT
- PUBLIC ?RESET_XSP
- EXTERN ?XSP
- REQUIRE ?XSTACK_START
- EXTERN ?XSTACK
- ?RESET_XSP:
- MOV ?XSP,
- MOV ?XSP+1,
- RSEG CSTART:CODE:NOROOT
- PUBLIC ?RESET_CODE_BANK
- EXTERN ?CBANK
- ?RESET_CODE_BANK:
- NOP
- RSEG CSTART:CODE:NOROOT
- PUBLIC ?RESET_PDATA_BANK
- EXTERN ?PBANK
- EXTERN ?PBANK_NUMBER
- ?RESET_PDATA_BANK:
- MOV ?PBANK,
- EXTERN ?PBANK_EXT
- ?RESET_PDATA_BANK_EXT:
- MOV ?PBANK_EXT,
- RSEG CSTART:CODE:NOROOT
- PUBLIC ?RESET_DPS
- EXTERN ?DPS
- ?RESET_DPS:
- MOV ?DPS,
- REQUIRE __call_init_extended1
- RSEG CSTART:CODE:NOROOT
- PUBLIC __call_init_extended1
- EXTERN __init_extended1
- __call_init_extended1:
- DB 0x12 ; LCALL
- DB BYTE3(__init_extended1)
- DB high(__init_extended1)
- DB low(__init_extended1)
- RSEG CSTART:CODE:NOROOT
- EXTERN ?cmain
- __call_main:
- LJMP ?cmain
- ENDMOD
- ;----------------------------------------------------------------;
- ; Virtual registers ;
- ; ================= ;
- ; Below is some segment needed for the IAR ICC C/EC++ compiler ;
- ; ;
- ; BREG : A segment for 8 bit registers for use by the compiler. ;
- ; ?B0 is the first register. ;
- ; VREG : Segement that holds up to 32 virtual registers for ;
- ; use by the compiler. ?V0 is the first register. ;
- ; PSP : Segment containing the PDATA stack pointer (?PSP) ;
- ; XSP : Segment containing the XDATA stack pointer (?XSP) ;
- ; ;
- ;----------------------------------------------------------------;
- ; NOTE: The XLINK varialbe _NR_OF_VIRTUAL_REGISTERS must be ;
- ; defined to set the size for the VREG segment. ;
- ;----------------------------------------------------------------;
- MODULE VIRTUAL_REGISTERS
- PUBLIC ?B0
- PUBLIC ?V0
- PUBLIC ?PSP
- PUBLIC ?XSP
- RSEG BREG:BIT:NOROOT
- ?B0:
- DS 8
- RSEG VREG:DATA:NOROOT
- EXTERN _NR_OF_VIRTUAL_REGISTERS
- ?V0:
- DS 0
- RSEG PSP:DATA:NOROOT
- EXTERN ?RESET_PSP
- REQUIRE ?RESET_PSP
- ?PSP:
- DS 1
- RSEG XSP:DATA:NOROOT
- EXTERN ?RESET_XSP
- REQUIRE ?RESET_XSP
- ?XSP:
- DS 2
- ENDMOD ; VIRTUAL_REGISTERS
- ;----------------------------------------------------------------;
- ; Register banks ;
- ; ================= ;
- ; Below is some segment needed for the IAR ICC C/EC++ compiler ;
- ; ;
- ; The register banks will only be included if the
- ; register_bank is used for the corresponding register bank ;
- ; ;
- ;----------------------------------------------------------------;
- MODULE REGISTER_BANK0
- PUBLIC __REG_BANK_0
- ASEGN __REG_BANK0:DATA,0x00
- __REG_BANK_0:
- DS 8
- ENDMOD
- MODULE REGISTER_BANK1
- PUBLIC __REG_BANK_1
- ASEGN __REG_BANK1:DATA,0x08
- __REG_BANK_1:
- DS 8
- ENDMOD
- MODULE REGISTER_BANK2
- PUBLIC __REG_BANK_2
- ASEGN __REG_BANK2:DATA,0x10
- __REG_BANK_2:
- DS 8
- ENDMOD
- MODULE REGISTER_BANK3
- PUBLIC __REG_BANK_3
- ASEGN __REG_BANK3:DATA,0x18
- __REG_BANK_3:
- DS 8
- ENDMOD ; REGISTER_BANK3
- END
|