|
|
1.1 ! root 1: " ! 2: | ! 3: | Lisp startup program. ! 4: | insert two new parameters on the argv[] list and re-exec lisp ! 5: | ! 6: .globl exece ! 7: start: ! 8: movl sp@, d1 | get argc (# of parameters on stack) ! 9: lea sp@(4),a3 | save the address of argv[] ! 10: asll #2,d1 | multiply argc by 4 to get # of bytes of argv ptrs on stack ! 11: lea a3@(4,d1:l),a4 | save the address of arge[] (it's after all of the argv's) ! 12: movl #flag,a3@- | insert (push) the address of the flag string on to top of argv stack ! 13: movl #lisp,a3@- | insert (push) the address of the lisp string on to top of argv stack ! 14: movl a3,sp | set the stack to point to the new stack head. ! 15: | ! 16: | Set up a call to exece ! 17: pea a4@ | push the address of arge on the stack ! 18: pea a3@ | push the address of argv on the stack ! 19: movl #lisp,sp@- | push the name of the program on the stack ! 20: jsr exece | now call exece, you've got the right parameters ! 21: exece: ! 22: moveq #0x3b,d0 ! 23: movl a7@(4),d1 ! 24: movl a7@(8),a0 ! 25: movl a7@(12),a1 ! 26: trap #0 ! 27: movl #0,d0 ! 28: movl d0,d1 ! 29: trap #0 | exit if exec fails ! 30: | ! 31: | call exit on a exec failure without losing the return code. ! 32: | we should NEVER return from _exit ! 33: | ! 34: flag: .asciz \"-f\" ! 35: lisp: .asciz \"/usr/ucb/lisp\" ! 36: .even ! 37: "
This archive runs on limited infrastructure. Preserving old code on modern bandwidth. Automated agents are requested to crawl responsibly.