@@ -24,5 +24,5 @@
.extern EODDZ
.extern .trp
mov ax,EODDZ
- push ax
+ push bx
jmp .trp
@@ -35,5 +35,5 @@
@@ -1,5 +1,6 @@
.sect .text; .sect .rom; .sect .data; .sect .bss
.define .error
+.define .Xtrp
! ax is trap number
! all registers must be saved
@@ -31,3 +32,11 @@
pop si
pop bp
ret
+
+.Xtrp:
+ cmp ax,16
+ jge 1f
+ call .error
+ ret
+1:
+ jmp .trp
@@ -35,5 +35,4 @@
.cmf4:
.cmf8:
mov ax,18 ! illegal instruction EILLINS
- call .trp
- ret
@@ -38,5 +38,5 @@
@@ -26,5 +26,5 @@
@@ -32,5 +32,5 @@
+ push dx
@@ -33,5 +33,5 @@
@@ -35,7 +35,6 @@
pop di
mov ax,ESET
.sect .data
@@ -31,5 +31,5 @@
@@ -12,14 +12,16 @@
add ax,02000
and ax,~0777
mov (.limhp),ax
push ax
call _brk
- or ax,ax
- jne 2f
+ pop cx
+ pop bx
+ cmp ax,-1
+ je 2f
1:
jmp bx
2:
mov ax,EHEAP
- jmp bx