Chapter 4 Software Developmentpage 4-22(4) #asm and #endasmThese two directives enclose an in-line assembly language block, which the compiler simplypasses to the assembler. The sample firmware uses them in read_fifo() and write_fifo(), thefunctions for reading from and writing to USB controller buffers, and in extint1(), extint4(), andextint5(), the functions for switching register banks in response to an external interrupt from theUSB controller.For further details on this assembly language code, refer to the nX-8/500S Instruction Manual(Nx8_500s.pdf).(5) __accpassThis modifier changes the function calling sequence to pass one parameter in the accumulator.Note that the compiler's /REG command line option makes this the default for all functionswithout an overt __noacc modifier.(6) __noaccThis modifier overrides __accpass and the compiler's /REG command line option to pass allparameters on the stack. This is required for standard library functions, so always include theheader files containing the function prototypes. It also applies to the low-level I/O functionsread() and write() called by the standard library functions.Note that incompatible __accpass and __noacc specifications between compile units produces aprogram that runs out of control.4-3-9. Limitations(1) As of August 1999, sample firmware operation has been confirmed only for the MSM66Q573plus ML60851C combination. The ARM code is a preliminary version that does not compile.(2) The sample firmware has been compiled and tested only with the cc665s compiler only in thesmall models. Other memory models have not been tested.