	.module sysInit.c
	.area text
;             id -> -2,x
_sysInit::
	pshx
	tfr s,x
	leas -14,sp
; // sysInit.c
; 
; #include <912d60.h>
; #include <stdio.h>
; #include "kernel.h"
; 
; 
; 
; 
; // TASK PROTOTYPES
; void shell(void);
; void sysTime(void);
; void task1(void);
; void task2(void);
; 
; 
; 
; 
; 
; 
; void sysInit(void) {
; 
; 	 // LOCAL VARIABLES
; 	 int id;
; 	 
; 	 
; 	 /* must create all the tasks without interrupt, because this task
; 	 	will die when it finishes.   */
; 	 INTR_OFF();
		sei

; 	 
; 	 
; 	 // set up the serial port
; 	 setbaud(BAUD38K);	 	  // actually running at 19K baud due to xtal speed
	ldd #13
	jsr _setbaud
; 	 
; 	 // any additional user setup goes here
; 	 
; 		
; 		
; 	 // create task1	
; 	 if ((id = create_task("task1", &task1, 100, IDLE)) < 0)
	ldd #0
	std 4,sp
	ldd #100
	std 2,sp
	ldd #_task1
	std 0,sp
	ldd #L6
	jsr _create_task
	std -4,x
	std -2,x
	ldd -4,x
	bge L4
; 	 	puts("task1 failure");
	ldd #L7
	jsr _puts
L4:
; 	 
; 	 
; 	 // create task2	
; 	 if ((id = create_task("task2", &task2, 20, PENDING)) < 0)
	ldd #1
	std 4,sp
	ldd #20
	std 2,sp
	ldd #_task2
	std 0,sp
	ldd #L10
	jsr _create_task
	std -6,x
	std -2,x
	ldd -6,x
	bge L8
; 	 	puts("task2 failure");
	ldd #L11
	jsr _puts
L8:
; 		
; 		
; 	 
; 	 // stop this sysInit task
; 	 set_task_state(get_task_id(), STOPPED);
	jsr _get_task_id
	std -8,x
	ldd #4
	std 0,sp
	ldd -8,x
	clra
	jsr _set_task_state
; 
; }
L3:
	tfr x,s
	pulx
	.dbline 0 ; func end
	rts
L11:
	.byte 't,'a,'s,'k,50,32,'f,'a,'i,'l,'u,'r,'e,0
L10:
	.byte 't,'a,'s,'k,50,0
L7:
	.byte 't,'a,'s,'k,49,32,'f,'a,'i,'l,'u,'r,'e,0
L6:
	.byte 't,'a,'s,'k,49,0

