Selaa lähdekoodia

only depend on MON implementation for system calls

ceriel 33 vuotta sitten
vanhempi
commit
8b8045504b
3 muutettua tiedostoa jossa 29 lisäystä ja 8 poistoa
  1. 0 1
      mach/z8000/libem/LIST
  2. 9 4
      mach/z8000/libem/printf.s
  3. 20 3
      mach/z8000/libem/trp.s

+ 0 - 1
mach/z8000/libem/LIST

@@ -18,7 +18,6 @@ gto.s
 inn.s
 lar.s
 los2.s
-mon.s
 noop.s
 prf.s
 rck.s

+ 9 - 4
mach/z8000/libem/printf.s

@@ -58,10 +58,15 @@ ready:	    !now really print the string we built in the buffer
 	ldb	0(R3), RL0	!end string with '\0'
 	sub	R3, $buff-1	!R3 contains the number of characters
 	ld	R1, $buff
-7:	ldb	RL0, 0(R1)
-	inc	R1
-	sc	$4
-	djnz	R3, 7b
+
+	push	*RR14, R3	!count
+	push	*RR14, R1	!buffer
+	push	*RR14, $2	!file descriptor
+	push	*RR14, $4	! write
+	calr	mon
+	pop	R1, *RR14
+	pop	R1, *RR14	! ignore result
+
 	ldm	R4, savereg, $10
 	pushl	*RR14, saveret
 	ret

+ 20 - 3
mach/z8000/libem/trp.s

@@ -6,8 +6,20 @@
 .sect .text
 
 fatal:
+	push	*RR14, R1
+	inc	R15, $2
+	popl	saveret, *RR14
+	pop	R1, *RR14	!trap number in R1
+	push	*RR14, R1
+	push	*RR14, R1
+	dec	R15, $4
+	pop	R1, *RR14	!restore R1
+	inc	R15, $2
+	pushl	*RR14, saveret
 	calr	trp
-	sc	$EXIT
+	push	*RR14, $1
+	calr	mon
+	!NOTREACHED
 
 trp:
 	push	*RR14, R1
@@ -36,8 +48,13 @@ trp:
 2:	pop	R1, *RR14
 	pop	R0, *RR14
 	ret
-3:	push	*RR14, $err
+3:	pop	R1, *RR14
+	push	*RR14, R1
+	push	*RR14, R1
+	push	*RR14, $err
 	calr	printf
-	sc	$EXIT
+	push	*RR14, $1
+	calr	mon
+	!NOTREACHED
 .sect .data
 err:	.asciz	"trap error %d\n"