fgetc.s 913 B

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071
  1. .file "fgetc.c"
  2. #NO_APP
  3. .text
  4. tigcc_compiled.:
  5. #APP
  6. .set _A_LINE,0xA000
  7. #NO_APP
  8. .text
  9. .even
  10. .globl fgetc
  11. fgetc:
  12. movm.l #0x1820,-(%sp)
  13. move.l %a0,%a2
  14. move.w 10(%a0),%d1
  15. move.w %d1,%d4
  16. lsr.w #6,%d4
  17. eor.w #1,%d4
  18. and.w #1,%d4
  19. move.w %d1,%d0
  20. and.w #16,%d0
  21. moveq.l #-1,%d2
  22. tst.w %d0
  23. jbne .L1
  24. move.w %d1,%d0
  25. and.w #1,%d0
  26. jbne .L3
  27. or.w #16,%d1
  28. move.w %d1,10(%a0)
  29. jbra .L1
  30. .even
  31. .L3:
  32. move.w 12(%a0),%d3
  33. jbge .L4
  34. clr.w 12(%a0)
  35. move.w %d3,%d2
  36. and.w #255,%d2
  37. jbra .L1
  38. .even
  39. .L4:
  40. and.w #32,%d1
  41. moveq.l #-1,%d2
  42. tst.w %d1
  43. jbne .L1
  44. move.l (%a0),%a1
  45. clr.w %d3
  46. move.b (%a1),%d3
  47. addq.l #1,(%a0)
  48. cmp.w #13,%d3
  49. jbne .L6
  50. tst.w %d4
  51. jbeq .L6
  52. jbsr fgetc
  53. .L6:
  54. move.l 4(%a2),%a0
  55. clr.l %d0
  56. move.w (%a0),%d0
  57. add.l %a0,%d0
  58. move.l (%a2),%d1
  59. tst.w %d4
  60. jbne .L9
  61. addq.l #2,%d0
  62. .L9:
  63. cmp.l %d0,%d1
  64. jbne .L8
  65. or.w #32,10(%a2)
  66. .L8:
  67. move.w %d3,%d2
  68. .L1:
  69. move.w %d2,%d0
  70. movm.l (%sp)+,#0x418
  71. rts