license
The cross compiler


include ./xcom.html  \ link

	

Change these flags to get what you want all cards are support under one source tree. Its too hard maintaining seperate version.



	HEX 

	TRUE     EQU #BCM550

	FALSE    EQU #BVP5502

	FALSE    EQU #BVP5501



	TRUE  EQU #USE_MAC



\ assumes SDRAM starts at $10000000 

#BCM550 #BVP5502 + #BVP5501 + [IF]

	include ./setup_xcom.html \ link

[THEN]



		

We can now add code to image





include ./constants.html



#BCM550 [IF]

	include ./bcm550_constants.html \ link

[THEN]



#BVP5502 [IF]

	include ./bvp5502_constants.html \ link

[THEN]



#BVP5501 [IF]

	include ./bvp5501_constants.html \ link

[THEN]







	

	\ target dictionary pointer, see dictionary_here

	_#dictionary_start 'dictionary !

	\ base address of the dictioanry image area

	\ used in XCOM

	_#dictionary_start _dictionary0 !

    

    

		

Run time action for various words.



	include ./_do_code.html \ link

	include ./ansi_code_words.html \ link

	include ./code_words.html \ link

     

		

load rest of cross compiler

The cross compiler needs to know where some of the words are in the kernel. There are two ways of dealing with this, allow forward referencing in the cross compiler, or define the words and load the rest of the cross compiler. This version uses the latter approach. Can't argue in favour of either solution.



	include ./xcomp2.4th \ link

	include ./ansi_code_strict_html.html \ link

	include ./start_application_dict.html \ link

	include ./colon_words_used_by_ansi.html \ link

	include ./ansi_colon_words.html \ link

	include ./colon_words.html \ link

	include ./word_head.html \ link

	include ./initial_abort.html \ link

	include ./link_lists.html \ link

	include ./user_variables.html \ link



#BCM550 [IF]

	fast_here CONSTANT _%system_stack HOST _#system_stack_length fast_allot

	fast_here EQU _%system_stack_end 

	ram_variable _%fault_lp

	ram_variable _%fault_u

	ram_variable _%fault_stack _#system_stack_length ram_allot







[THEN]



\ MMOV on static memory not working at moment.

\ use dynamic memory for system stack

#BVP5502 #BVP5501 + [IF]

	ram_here CONSTANT _%system_stack HOST _#system_stack_length ram_allot

	ram_here EQU _%system_stack_end 

    static_variable _%fault_lp

	static_variable _%fault_u

	static_variable _%fault_stack _#system_stack_length ram_allot



[THEN]



		

Fast memory defined before this is not cleared on startup.



	fast_here CONSTANT _%fast_clear_start

	 

dynamic ram memory defined before this is not cleared on startup.

 

	ram_here  CONSTANT _%ram_clear_start



#BVP5502 #BVP5501 + [IF]

	 

Static memory defined before this is not cleared on startup.

 

	static_here CONSTANT _%static_clear_start

[THEN]





   

	 

The kernel checksum is contained in prom, the application in flash. The application will only run if it was compiled on the same kernel. To this end the kernel checksum is saved with the application. Before the application is loaded the current kernel checksum is compare with the saved checksum and tha application loaded if the two checksums are the same.

An offset is used to find the checksum in the flashed application image.

 

    dictionary_here _#dictionary_start  - CONSTANT _#kernel_checksum_offset   

    dictionary_variable _%kernel_checksum ( value copied when promming)





	include ./user_using_words.html \ link

	include ./real_numbers.html \ link

	include ./memory_allocation.html \ link

	include ./vocabulary.html \ link

	include ./checksum.html \ link

	include ./find.html \ link

	include ./xwords.html \ link

	include ./task_loops.html \ link



#BCM550 [IF]

	include ./panic0.html \ link

[THEN]



#BVP5502 #BVP5501 + [IF]

	include ./panic1.html \ link

[THEN]



	include ./heap_control.html \ link

	include ./words_using_heap.html \ link

	include ./wordlists.html \ link

	 

sort out the root voacubulary. The minimum search order is SET-ORDER and FORTH-WORDLIST. To get into forth the code would be FORTH-WORDLIST 1 SET-ORDER We will add the word FORTH.

 

	target_also &root 

	target_definitions



	: FORTH  FORTH ;

	: FORTH-WORDLIST FORTH-WORDLIST ;

	: SET-ORDER SET-ORDER ;	



	target_previous_definitions

	target_previous



    

  

 

  

	include ./cache_managment.html \ link

	include ./basic_io.html \ link

	include ./number_output.html \ link

	include ./abort.html \ link

	include ./ass.html \ link

	include ./word.html \ link

	include ./more_ansi_colon_words.html \ link

	include ./compile.html \ link

	include ./string_literals.html \ link

	include ./number.html \ link

	include ./version.html \ link        

	include ./more_forth.html \ link    

	include ./struct.html \ link

	include ./objects.html \ link

	include ./terminal_class.html \ link

	include ./linked_object.html \ link

	include ./parented_object.html \ link

	include ./io_common.html \ link

	include ./root.html \ link

	include ./inode.html \ link

	include ./file_class.html \ link

	include ./input_output.html \ link

	include ./ws60.html \ link

	include ./prompt.html \ link

	include ./if_then_else.html \ link

	include ./htmltags.4th \ difficult to display; defines HTML tags. 

	include ./quit_interpret_etc.html \ link

	include ./queue.html \ link

	include ./flash.html \ link

	include ./local_variables.html \ link

	include ./system_rte.html \ link

	include ./interrupt_colon.html \ link

	include ./tyx.html \ link





	include ./config.html \ link

	include ./real_time_clock.html \ link

	include ./editor.html \ link

	include ./date1900.html \ link

	include ./form.html \ link

\	include ./message.html  

	include ./_cvs_decode.html \ link

	include ./pipe.html \ link



#BCM550 #BVP5502 + [IF]

	include ./dual_port_memory.html \ link

[THEN]



#BVP5502 #BVP5501 + [IF]

	include ./bank_memory.html \ link

[THEN]



	include ./tube.html \ link



#BCM550 #BVP5502 + [IF] 

	include ./port_tube.html \ link     

[THEN]



	include ./task_stuff.html \ link

	include ./marker.html \ link  

	include ./print_system_data.html \ link  

	include ./words.html \ link

	include ./operator_task_table.html \ link    

	include ./show.html \ link

	include ./fault_data.html \ link



\ #### when processor is fixed up something has to be done for BVP500



#BCM550 [IF]

	include ./watchdog.html \ link    

[THEN]



	include ./traps.html \ link	



#BCM550 [IF]    

    include ./cards.html \ link

[THEN]



	include ./printing.html \ link

	

#BCM550 [IF]

    include ./rlogon.html \ link

[THEN]



	include ./ilan_temp.html \ link    

    

#BCM550 [IF]

 	include ./rti1000_interrupt.html \ link

[THEN]



#BCM550 [IF]

	include ./digital_interrupt.html \ link

[THEN]



#BCM550 #BVP5502 + [IF]

	include ./rti.html \ link

[THEN]



\ getting file services through the bank memory between CPUI and CPUII

#BVP5501 [IF]

	include ./bank.html \ link

	include ./bank_tube.html \ link

[THEN]





\ #BCM550 [IF]

\    include ./file_server.html \ link

\ [THEN]



#BVP5502 [IF]

    include ./bank_bvp5502_code.html \ link

    include ./bank_logon.html \ link

[THEN]



	include ./bye_restart_etc.html \ link



	include ./dma.html \ link



	.S .( start tcpset)

	include ./tcp/temp.html \ link

	include ./tcp/pep_h.html \ link

	include ./tcp/icmp_h.html \ link

	include ./tcp/routing_h.html \ link

	include ./tcp/tcp_h.html \ link

	include ./tcp/print_pep.html \ link



	\ must be defined now as used in icmp_demux

	include ./tcp/interface_common.html \ link

	include ./tcp/ip_setup.html \ link

	include ./tcp/io_protocol_common.html \ link



	\ these have to be defined before the interface classes derived because

	\ the :!ip words and :!netmask words have to

	\ add and remove routes.

	include ./tcp/routing.html \ link

	include ./tcp/interface_local.html \ link

	\ defined before proto.html as used there

	include ./tcp/demux.html \ link

	include ./tcp/demux_socket.html \ link

	\ defined before interface_loopback as interface_loopback

	\ has to call the :proto_checksum method

	include ./tcp/proto.html \ link

	include ./tcp/interface_loopback.html \ link



#BCM550 [IF]

	include ./tcp/ethernet_h.html

	include ./tcp/interface_nice.html

[THEN]



	include ./tcp/udp_demux.html \ link

	include ./tcp/tcp_demux.html \ link

	include ./tcp/icmp_demux.html \ link

	include ./tcp/udp.html \ link

	include ./tcp/icmp_echo.html \ link

	include ./tcp/timestamp.html \ link

	include ./tcp/tcp.html      \ link

	include ./tcp/telnet_server.html \ link

	include ./tcp/html.html \ link



	include ./kernel_tasks.html \ link

	include ./mcf5307_init.html \ link



#BCM550 [IF]

	include ./bcm550_boot_to_ram.html \ link

[THEN]



#BVP5502 [IF]

	include ./bvp5502_boot_to_ram.html \ link

[THEN]



#BVP5501 [IF]

	include ./bvp5501_boot_to_ram.html \ link

[THEN]



	include ./locate.html \ link

	include ./glossary.html \ link



\	include ./print_source.html



	include ./op_function_vectors.html \ link

	include ./environment.html \ link



#BCM550 [IF] 

	include ./bcm550_vectors.html \ link

[THEN]



#BVP5502 [IF]

	include ./bvp5502_vectors.html \ link

[THEN]



#BVP5501 [IF]

	include ./bvp5501_vectors.html \ link

[THEN]



	DECIMAL

	include ./end.4TH \ link

	forth

	include ./bcm550_save.html \ link

	

.S .( ABOUT TO FLASH)

	new>flash

.S .( ABOUT TO TEST FOR SAME)

	?same_image

.S  .( finished)