enter_ghost_space.s 694 B

123456789101112131415161718192021222324252627282930313233343536
  1. .data
  2. .xdef enter_ghost_space
  3. .even
  4. enter_ghost_space:
  5. bsr.w .L__ghost_space_0
  6. .L__ghost_space_0:
  7. move.l (%sp)+,%d0
  8. cmpi.l #0x40000,%d0
  9. bcc.s .L__ghost_space_2
  10. movea.l 0xC8,%a0
  11. cmpi.l #1000,(%a0,-4)
  12. bcs.s .L__ghost_space_2
  13. movem.l %a2-%a6/%d3-%d7,-(%sp)
  14. lea (%sp,-20),%sp
  15. move.l #0x3E000,%a3
  16. move.l %a0,%d0
  17. andi.l #0x600000,%d0
  18. addi.l #0x20000,%d0
  19. move.l %d0,(%sp,12)
  20. move.l %d0,(%sp,16)
  21. trap #0xC
  22. move.w #0x2700,%sr
  23. move.l #0xF,%d3
  24. pea .L__ghost_space_1(%pc)
  25. bset.b #2,(%sp,1)
  26. clr.w -(%sp)
  27. move.l 0xAC,%a0
  28. jmp (%a0)
  29. .L__ghost_space_1:
  30. lea (%sp,20),%sp
  31. movem.l (%sp)+,%a2-%a6/%d3-%d7
  32. .L__ghost_space_2:
  33. move.l (%sp)+,%d0
  34. bset.l #18,%d0
  35. movea.l %d0,%a0
  36. jmp (%a0)