home *** CD-ROM | disk | FTP | other *** search
/ GEMini Atari / GEMini_Atari_CD-ROM_Walnut_Creek_December_1993.iso / files / gnu / libsrc87 / main.s < prev    next >
Encoding:
Text File  |  1993-07-30  |  4.9 KB  |  380 lines

  1. #NO_APP
  2. gcc2_compiled.:
  3. .text
  4.     .even
  5. _getMiNT:
  6.     movel 1440:w,a0
  7.     cmpw #0,a0
  8.     jne L15
  9.     clrw a4@(___mint:W)
  10.     jra L16
  11. L21:
  12.     movew a0@(6),a4@(___mint:W)
  13.     rts
  14. L15:
  15.     tstl a0@
  16.     jeq L16
  17.     movel #1298746964,d0
  18. L20:
  19.     cmpl a0@,d0
  20.     jeq L21
  21.     addqw #8,a0
  22.     tstl a0@
  23.     jne L20
  24. L16:
  25.     clrw a4@(___mint:W)
  26.     rts
  27.     nop
  28. LC0:
  29.     .ascii "UNIXMODE\0"
  30. LC1:
  31.     .ascii "TTY\0"
  32. LC2:
  33.     .ascii "AUX:\0"
  34. LC3:
  35.     .ascii "aux:\0"
  36. LC4:
  37.     .ascii "/dev/console\0"
  38. LC5:
  39.     .ascii "/dev/tty1\0"
  40.     .even
  41. .globl __main
  42. __main:
  43.     link a6,#-4
  44.     moveml #0x3c34,sp@-
  45.     movel a6@(16),a3
  46.     lea a4@(__start_time:W),a2
  47.     clrl a2@
  48.     jbsr _clock
  49.     movel d0,a2@
  50.     clrl a4@(__sys_runtime:W)
  51.     clrl a4@(__child_runtime:W)
  52.     clrw a4@(_num_at_exit:W)
  53.     lea _getMiNT,a5
  54. #APP
  55.             movl    a5,sp@-;         movw    #38,sp@-;         trap    #14;            addqw   #6,sp 
  56. #NO_APP
  57.     pea pc@(LC0)
  58.     lea _getenv,a2
  59.     jbsr a2@
  60.     movel d0,sp@
  61.     jbsr __set_unixmode
  62.     movel #LC1,sp@
  63.     jbsr a2@
  64.     addqw #4,sp
  65.     movel d0,d2
  66.     jeq L23
  67.     pea pc@(LC2)
  68.     movel d2,sp@-
  69.     lea _strcmp,a2
  70.     jbsr a2@
  71.     addqw #8,sp
  72.     tstw d0
  73.     jeq L25
  74.     pea pc@(LC3)
  75.     movel d2,sp@-
  76.     jbsr a2@
  77.     addqw #8,sp
  78.     tstw d0
  79.     jne L24
  80. L25:
  81.     movew #1,a4@(__console_dev:W)
  82.     jra L27
  83. L24:
  84. L23:
  85.     movew #2,a4@(__console_dev:W)
  86. L27:
  87.     movel a6@(12),a5
  88.     movel a5@,a0
  89.     tstb a0@
  90.     jne L28
  91.     movew #2,sp@-
  92.     jbsr _isatty
  93.     addqw #2,sp
  94.     tstw d0
  95.     jeq L28
  96.     movew a4@(__console_dev:W),d3
  97.     subqw #3,d3
  98.     moveq #2,d4
  99. #APP
  100.             movw    d3,sp@-;         movw    d4,sp@-;         movw    #70,sp@-;         trap    #1;            addqw   #6,sp 
  101. #NO_APP
  102. L28:
  103.     lea a4@(__iob:W),a1
  104.     lea a4@(___default_mode__:W),a0
  105.     movew a0@,d4
  106.     orw #257,d4
  107.     movew d4,a1@(12)
  108.     movew a0@,d4
  109.     orw #514,d4
  110.     movew d4,a1@(34)
  111.     movew a0@,d4
  112.     orw #1152,d4
  113.     movew d4,a1@(56)
  114.     clrw d3
  115.     movel a1,a2
  116.     moveq #12,d5
  117.     addl a2,d5
  118. L35:
  119.     movew d3,a2@(14)
  120.     movew d3,sp@-
  121.     jbsr _isatty
  122.     addqw #2,sp
  123.     tstw d0
  124.     jeq L32
  125.     movel d5,a5
  126.     orw #8,a5@
  127.     jra L33
  128. L32:
  129.     lea a4@(__iob:W),a0
  130.     moveq #22,d0
  131.     addl a0,d0
  132.     cmpl a2,d0
  133.     jne L33
  134.     andw #63999,a0@(34)
  135.     orw #256,a0@(34)
  136. L33:
  137.     movel a2,sp@-
  138.     jbsr __getbuf
  139.     addqw #4,sp
  140.     addqw #1,d3
  141.     moveq #22,d4
  142.     addl d4,d5
  143.     addw #22,a2
  144.     cmpw #2,d3
  145.     jle L35
  146.     clrw d3
  147. L43:
  148.     movew d3,d0
  149.     addqw #3,d0
  150.     extl d0
  151.     lea a4@(___open_stat:W),a5
  152.     movel a5,a6@(-4)
  153.     movel d0,d2
  154.     addl d2,d2
  155.     addl d0,d2
  156.     addl d2,d2
  157.     movew d3,sp@-
  158.     jbsr _isatty
  159.     addqw #2,sp
  160.     tstw d0
  161.     jeq L39
  162.     movel #LC5,d0
  163.     cmpw #2,a4@(__console_dev:W)
  164.     jne L40
  165.     movel #LC4,d0
  166.     jra L40
  167. L39:
  168.     moveq #0,d0
  169. L40:
  170.     movel a6@(-4),a5
  171.     movel d0,a5@(2,d2:l)
  172.     addqw #1,d3
  173.     cmpw #2,d3
  174.     jle L43
  175.     moveq #3,d3
  176. L47:
  177.     clrw a2@(12)
  178.     addqw #1,d3
  179.     addw #22,a2
  180.     cmpw #19,d3
  181.     jle L47
  182.     clrw d3
  183.     movel a3@,a2
  184.     cmpw #0,a2
  185.     jeq L49
  186. L63:
  187.     cmpb #80,a2@
  188.     jne L50
  189.     cmpb #65,a2@(1)
  190.     jne L50
  191.     cmpb #84,a2@(2)
  192.     jne L50
  193.     cmpb #72,a2@(3)
  194.     jne L50
  195.     cmpb #61,a2@(4)
  196.     jne L50
  197.     movel a2,a0
  198.     movel a2,d0
  199.     addql #1,d0
  200. L53:
  201.     tstb a0@+
  202.     jne L53
  203.     subl a0,d0
  204.     negl d0
  205.     asll #2,d0
  206.     subl d0,sp
  207.     movel sp,d2
  208.     pea 5:w
  209.     movel a2,sp@-
  210.     movel d2,sp@-
  211.     jbsr _strncpy
  212.     addw #12,sp
  213.     movel d2,a0
  214.     addqw #5,a0
  215.     addqw #5,a2
  216. L64:
  217.     tstb a2@
  218.     jeq L56
  219.     cmpb #58,a2@(1)
  220.     jne L57
  221.     moveb #47,a0@+
  222.     moveb #100,a0@+
  223.     moveb #101,a0@+
  224.     moveb #118,a0@+
  225.     moveb #47,a0@+
  226.     moveb a2@+,a0@+
  227.     addqw #1,a2
  228.     jra L64
  229. L57:
  230.     cmpb #59,a2@
  231.     jeq L60
  232.     cmpb #44,a2@
  233.     jne L59
  234. L60:
  235.     moveb #58,a0@+
  236.     addqw #1,a2
  237.     jra L64
  238. L59:
  239.     moveb a2@+,a0@+
  240.     jra L64
  241. L56:
  242.     clrb a0@
  243.     movel d2,sp@-
  244.     jbsr _strdup
  245.     addqw #4,sp
  246.     movew d3,d1
  247.     extl d1
  248.     asll #2,d1
  249.     movel d0,a3@(d1:l)
  250.     jra L49
  251. L50:
  252.     addqw #1,d3
  253.     movew d3,d0
  254.     extl d0
  255.     asll #2,d0
  256.     movel a3@(d0:l),a2
  257.     cmpw #0,a2
  258.     jne L63
  259. L49:
  260.     clrw a4@(_errno:W)
  261.     movel a3,sp@-
  262.     movel a6@(12),sp@-
  263.     movew a6@(10),sp@-
  264.     jbsr _main
  265.     addw #10,sp
  266.     movew d0,sp@-
  267.     jbsr _exit
  268.     addqw #2,sp
  269.     nop
  270.     .even
  271. .globl __exit
  272. __exit:
  273.     movel a6,sp@-
  274.     movew sp@(8),a0
  275.     movel a0,sp@-
  276.     jbsr ___exit
  277.     addqw #4,sp
  278.     nop
  279.     .even
  280. .globl _exit
  281. _exit:
  282.     movel a6,sp@-
  283.     movel d2,sp@-
  284.     clrw d2
  285. L73:
  286.     movew d2,d0
  287.     extl d0
  288.     lea a4@(__iob:W),a0
  289.     movel d0,d1
  290.     addl d1,d1
  291.     addl d0,d1
  292.     asll #2,d1
  293.     subl d0,d1
  294.     addl d1,d1
  295.     moveb a0@(13,d1:l),d0
  296.     andb #131,d0
  297.     jeq L69
  298.     cmpw #2,a0@(14,d1:l)
  299.     jgt L71
  300.     movew d2,d0
  301.     muls #22,d0
  302.     pea a0@(d0:l)
  303.     jbsr _fflush
  304.     jra L78
  305. L71:
  306.     movew d2,d0
  307.     muls #22,d0
  308.     pea a0@(d0:l)
  309.     jbsr _fclose
  310. L78:
  311.     addqw #4,sp
  312. L69:
  313.     addqw #1,d2
  314.     cmpw #19,d2
  315.     jle L73
  316.     movew a4@(_num_at_exit:W),d2
  317.     subqw #1,d2
  318.     jmi L75
  319. L77:
  320.     movew d2,d0
  321.     extl d0
  322.     movel a4@(__at_exit:W),a0
  323.     asll #2,d0
  324.     movel a0@(d0:l),a0
  325.     jbsr a0@
  326.     dbra d2,L77
  327. L75:
  328.     movew sp@(12),sp@-
  329.     jbsr __exit
  330.     addqw #2,sp
  331.     nop
  332.     .even
  333. .globl _atexit
  334. _atexit:
  335.     movel a6,sp@-
  336.     movel a2,sp@-
  337.     movel a4@(__at_exit:W),a1
  338.     lea a4@(_num_at_exit:W),a0
  339.     tstw a0@
  340.     jne L80
  341.     pea 4:w
  342.     jbsr _malloc
  343.     addqw #4,sp
  344.     jra L84
  345. L80:
  346.     movew a0@,d0
  347.     addqw #1,d0
  348.     extl d0
  349.     asll #2,d0
  350.     movel d0,sp@-
  351.     movel a1,sp@-
  352.     jbsr _realloc
  353.     addqw #8,sp
  354. L84:
  355.     movel d0,a1
  356.     cmpw #0,a1
  357.     jeq L82
  358.     movel a1,a4@(__at_exit:W)
  359.     lea a4@(_num_at_exit:W),a0
  360.     movew a0@,a2
  361.     movel a2,d0
  362.     asll #2,d0
  363.     movel sp@(12),a1@(d0:l)
  364.     addqw #1,a0@
  365.     clrw d0
  366.     jra L83
  367. L82:
  368.     moveq #-1,d0
  369. L83:
  370.     movel sp@+,a2
  371.     movel sp@+,a6
  372.     rts
  373. .comm __iob,440
  374. .comm __mchunk_free_list,12
  375. .comm _errno,2
  376. .comm ___mint,2
  377. .comm __console_dev,2
  378. .lcomm __at_exit,4
  379. .lcomm _num_at_exit,2
  380.