	.module sysInit.c
	.area text
;             id -> -2,x
_sysInit::
	pshx
	tfr s,x
	leas -12,sp
; // sysInit.c
; 
; #include <912d60.h>
; #include <stdio.h>
; #include "kernel.h"
; 
; 
; 
; // TASK PROTOTYPES
; int task1(void);
; int task2(void);
; 
; 
; 
; 
; int 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 (create_task("dummy", &task1, 18, IDLE, 0) < 0)
	ldd #0
	std 6,sp
	ldd #0
	std 4,sp
	ldd #18
	std 2,sp
	ldd #_task1
	std 0,sp
	ldd #L6
	jsr _create_task
	cpd #0
	bge L4
; 	 	puts("task1 failure");
	ldd #L7
	jsr _puts
L4:
; 	 
; 	 
; 	 // create task2	
; 	 if (create_task("timer", &task2, 0, STOPPED, 255) < 0)
	ldd #255
	std 6,sp
	ldd #4
	std 4,sp
	ldd #0
	std 2,sp
	ldd #_task2
	std 0,sp
	ldd #L10
	jsr _create_task
	cpd #0
	bge L8
; 	 	puts("task2 failure");
	ldd #L11
	jsr _puts
L8:
; 		
; 		
; 	 
; 	 // remove the sysInit task from memory
; 	 set_task_state(get_task_id(), STOPPED);
	jsr _get_task_id
	std -4,x
	ldd #4
	std 0,sp
	ldd -4,x
	clra
	jsr _set_task_state
; 	 remove_task(get_task_id());
	jsr _get_task_id
	clra
	jsr _remove_task
; 	 
; 	 
; 	 INTR_ON();
		cli

; 	 
; 	 return 0;
	ldd #0
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,'i,'m,'e,'r,0
L7:
	.byte 't,'a,'s,'k,49,32,'f,'a,'i,'l,'u,'r,'e,0
L6:
	.byte 'd,'u,'m,'m,'y,0

