|
@@ -229,23 +229,23 @@ Apply: test %ax,%ax # Apply(fn:ax,x:si:a:dx):ax
|
|
mov (%bx,%si),%si # si = Cdr(x)
|
|
mov (%bx,%si),%si # si = Cdr(x)
|
|
lodsw # si = Cadr(x)
|
|
lodsw # si = Cadr(x)
|
|
je Cons
|
|
je Cons
|
|
-.isEq: cmp %di,%ax # we know for certain it's eq
|
|
|
|
|
|
+.isEq: xor %di,%ax # we know for certain it's eq
|
|
jne .retF
|
|
jne .retF
|
|
-.retT: mov $kT,%ax
|
|
|
|
|
|
+.retT: mov $kT,%al
|
|
ret
|
|
ret
|
|
|
|
|
|
|
|
+Assoc: mov %dx,%si # Assoc(x:ax,y:dx):ax
|
|
|
|
+1: mov (%si),%di
|
|
|
|
+ mov (%bx,%si),%si
|
|
|
|
+ scasw
|
|
|
|
+ jne 1b
|
|
|
|
+ .byte 0xF6 # test §mov/cmp (nop next bytes)
|
|
Cadr: mov (%bx,%di),%di # contents of decrement register
|
|
Cadr: mov (%bx,%di),%di # contents of decrement register
|
|
.byte 0x3C # cmp §scasw,%al (nop next byte)
|
|
.byte 0x3C # cmp §scasw,%al (nop next byte)
|
|
Cdr: scasw # increments our data index by 2
|
|
Cdr: scasw # increments our data index by 2
|
|
Car: mov (%di),%ax # contents of address register!!
|
|
Car: mov (%di),%ax # contents of address register!!
|
|
2: ret
|
|
2: ret
|
|
|
|
|
|
-Assoc: mov %dx,%si # Assoc(x:ax,y:dx):ax
|
|
|
|
-1: mov (%si),%di
|
|
|
|
- mov (%bx,%si),%si
|
|
|
|
- scasw
|
|
|
|
- jne 1b
|
|
|
|
- jmp Car
|
|
|
|
|
|
|
|
1: mov (%bx,%di),%di # di = Cdr(c)
|
|
1: mov (%bx,%di),%di # di = Cdr(c)
|
|
Evcon: push %di # save c
|
|
Evcon: push %di # save c
|