Added csa4.s and csb4.s
authorceriel <none@none>
Wed, 25 Oct 1989 17:08:45 +0000 (17:08 +0000)
committerceriel <none@none>
Wed, 25 Oct 1989 17:08:45 +0000 (17:08 +0000)
mach/i86/libem/LIST
mach/i86/libem/csa4.s [new file with mode: 0644]
mach/i86/libem/csb4.s [new file with mode: 0644]

index 79c3641..42f99f0 100644 (file)
@@ -8,6 +8,8 @@ cmu4.s
 com.s
 csa2.s
 csb2.s
+csa4.s
+csb4.s
 cuu.s
 dup.s
 dvi.s
diff --git a/mach/i86/libem/csa4.s b/mach/i86/libem/csa4.s
new file mode 100644 (file)
index 0000000..43157fc
--- /dev/null
@@ -0,0 +1,30 @@
+.sect .text; .sect .rom; .sect .data; .sect .bss
+.define .csa4
+
+.sect .text
+.csa4:
+                               ! bx, descriptor address
+                               ! ax, dx: index
+       mov     cx,(bx)         ! default
+       sub     ax,2(bx)
+                               ! ignore high order word; if non-zero, the
+                               ! case descriptor would not fit anyway
+       cmp     ax,6(bx)
+       ja      1f
+2:
+       sal     ax,1
+       add     bx,ax
+       mov     bx,10(bx)
+       test    bx,bx
+       jnz     2f
+1:
+       mov     bx,cx
+       test    bx,bx
+       jnz     2f
+.extern ECASE
+.extern .fat
+       mov     ax,ECASE
+       push    ax
+       jmp     .fat
+2:
+       jmp     bx
diff --git a/mach/i86/libem/csb4.s b/mach/i86/libem/csb4.s
new file mode 100644 (file)
index 0000000..bdb812f
--- /dev/null
@@ -0,0 +1,33 @@
+.sect .text; .sect .rom; .sect .data; .sect .bss
+.define .csb4
+
+.sect .text
+.csb4:
+                               !bx: descriptor address
+                               !ax, dx:  index
+       push    (bx)            ! default
+       mov     cx,2(bx)        ! count (ignore high order word, the descriptor
+                               ! would not fit anyway)
+1:
+       add     bx,6
+       dec     cx
+       jl      4f
+       cmp     ax,(bx)
+       jne     1b
+       cmp     dx,2(bx)
+       jne     1b
+       pop     bx
+       mov     bx,4(bx)
+2:
+       test    bx,bx
+       jnz     3f
+.extern ECASE
+.extern .fat
+       mov     ax,ECASE
+       push    ax
+       jmp     .fat
+3:
+       jmp     bx
+4:
+       pop     bx
+       jmp     2b