home *** CD-ROM | disk | FTP | other *** search
/ Atari Mega Archive 1 / Atari Mega Archive - Volume 1.iso / lists / mint / l_0399 / 325 / diff15.zoo / diffs15
Encoding:
Text File  |  1993-06-23  |  46.0 KB  |  1,575 lines

  1. *** 1.5    1993/04/15 00:31:22
  2. --- makefile.lcc    1993/05/25 16:59:14
  3. ***************
  4. *** 36,44 ****
  5.   
  6.   # add -DMULTITOS for a MultiTOS kernel
  7.   # add -DONLY030 for a version of MiNT that needs a 680x0, x>=3
  8.   
  9. ! DEFS =
  10. ! DEFS030 = -DONLY030
  11.   
  12.   SYMS = -Hmint.sym
  13.   
  14. --- 36,45 ----
  15.   
  16.   # add -DMULTITOS for a MultiTOS kernel
  17.   # add -DONLY030 for a version of MiNT that needs a 680x0, x>=3
  18. + # add -DDEBUG_INFO for debugging information
  19.   
  20. ! DEFS = -DDEBUG_INFO
  21. ! DEFS030 = -DONLY030 -DDEBUG_INFO
  22.   
  23.   SYMS = -Hmint.sym
  24.   
  25. ***************
  26. *** 56,62 ****
  27.   COPTS = $(OPTS) $(MODEL) $(ERRORS) $(DEFS)
  28.   CFLAGS = $(COPTS) $(SYMS)
  29.   ASFLAGS = $(ASOPTS) $(DEFS)
  30. ! CFLAGS030 = $(OPTS) $(MODEL030) $(ERRORS) $(DEFS030)
  31.   ASFLAGS030 = -m3 $(ASOPTS) $(DEFS030)
  32.   
  33.   LDFLAGS = -t=
  34. --- 57,64 ----
  35.   COPTS = $(OPTS) $(MODEL) $(ERRORS) $(DEFS)
  36.   CFLAGS = $(COPTS) $(SYMS)
  37.   ASFLAGS = $(ASOPTS) $(DEFS)
  38. ! COPTS030 = $(OPTS) $(MODEL030) $(ERRORS) $(DEFS030)
  39. ! CFLAGS030 = $(COPTS030) $(SYMS)
  40.   ASFLAGS030 = -m3 $(ASOPTS) $(DEFS030)
  41.   
  42.   LDFLAGS = -t=
  43. *** 1.5    1993/04/15 00:31:22
  44. --- asm.y    1993/05/25 16:40:10
  45. ***************
  46. *** 73,78 ****
  47. --- 73,90 ----
  48.                   free($1); free($3); free($5); }
  49.       | basic '{' basic ':' basic '}' {$$ = bitfield($1, $3, $5);
  50.               free($1); free($3); free($5); }
  51. +     | '(' '[' basic ',' basic ']' ',' basic ',' basic ')'
  52. +        { $$=postindex($3,$5,$8,$10); 
  53. +          free($3); free($5); free($8); free($10); }        
  54. +     | '(' '[' basic ',' basic ',' basic ']' ',' basic ')'
  55. +        { $$=preindex($3,$5,$7,$10); 
  56. +          free($3); free($5); free($7); free($10); }        
  57. +     | '(' '[' basic ']' ')'
  58. +        { $$=postindex0($3); 
  59. +          free($3); }
  60. +     | '(' '[' basic ']' ','  basic ')'
  61. +        { $$=postindex1($3,$6); 
  62. +          free($3); free($6); }                          
  63.   ;
  64.   
  65.   basic: basexpr { $$ = $1; }
  66. *** 1.5    1993/04/15 00:31:22
  67. --- asmtab.c    1993/05/25 17:16:14
  68. ***************
  69. *** 47,71 ****
  70.   
  71.   
  72.   
  73. ! #define    YYFINAL        87
  74.   #define    YYFLAG        -32768
  75. ! #define    YYNTBASE    25
  76.   
  77. ! #define YYTRANSLATE(x) ((unsigned)(x) <= 267 ? yytranslate[x] : 35)
  78.   
  79.   static const char yytranslate[] = {     0,
  80.        2,     2,     2,     2,     2,     2,     2,     2,     2,     2,
  81.        2,     2,     2,     2,     2,     2,     2,     2,     2,     2,
  82.        2,     2,     2,     2,     2,     2,     2,     2,     2,     2,
  83. !      2,     2,     2,     2,    15,    22,     2,     2,     2,    16,
  84. !     17,    23,    18,    13,    19,     2,    24,     2,     2,     2,
  85.        2,     2,     2,     2,     2,     2,     2,    14,     2,     2,
  86.        2,     2,     2,     2,     2,     2,     2,     2,     2,     2,
  87.        2,     2,     2,     2,     2,     2,     2,     2,     2,     2,
  88.        2,     2,     2,     2,     2,     2,     2,     2,     2,     2,
  89.        2,     2,     2,     2,     2,     2,     2,     2,     2,     2,
  90.        2,     2,     2,     2,     2,     2,     2,     2,     2,     2,
  91. -      2,     2,     2,     2,     2,     2,     2,     2,     2,     2,
  92.        2,     2,    20,     2,    21,     2,     2,     2,     2,     2,
  93.        2,     2,     2,     2,     2,     2,     2,     2,     2,     2,
  94.        2,     2,     2,     2,     2,     2,     2,     2,     2,     2,
  95. --- 47,71 ----
  96.   
  97.   
  98.   
  99. ! #define    YYFINAL        108
  100.   #define    YYFLAG        -32768
  101. ! #define    YYNTBASE    27
  102.   
  103. ! #define YYTRANSLATE(x) ((unsigned)(x) <= 267 ? yytranslate[x] : 37)
  104.   
  105.   static const char yytranslate[] = {     0,
  106.        2,     2,     2,     2,     2,     2,     2,     2,     2,     2,
  107.        2,     2,     2,     2,     2,     2,     2,     2,     2,     2,
  108.        2,     2,     2,     2,     2,     2,     2,     2,     2,     2,
  109. !      2,     2,     2,     2,    15,    24,     2,     2,     2,    16,
  110. !     17,    25,    18,    13,    19,     2,    26,     2,     2,     2,
  111.        2,     2,     2,     2,     2,     2,     2,    14,     2,     2,
  112.        2,     2,     2,     2,     2,     2,     2,     2,     2,     2,
  113.        2,     2,     2,     2,     2,     2,     2,     2,     2,     2,
  114.        2,     2,     2,     2,     2,     2,     2,     2,     2,     2,
  115. +     22,     2,    23,     2,     2,     2,     2,     2,     2,     2,
  116.        2,     2,     2,     2,     2,     2,     2,     2,     2,     2,
  117.        2,     2,     2,     2,     2,     2,     2,     2,     2,     2,
  118.        2,     2,    20,     2,    21,     2,     2,     2,     2,     2,
  119.        2,     2,     2,     2,     2,     2,     2,     2,     2,     2,
  120.        2,     2,     2,     2,     2,     2,     2,     2,     2,     2,
  121. ***************
  122. *** 88,114 ****
  123.        0,     1,     4,     6,     9,    12,    16,    21,    26,    33,
  124.       40,    45,    50,    53,    56,    59,    64,    68,    74,    76,
  125.       80,    82,    85,    87,    90,    94,    99,   104,   109,   114,
  126. !    121,   128,   130,   134,   137,   139,   142,   144,   146,   148
  127.   };
  128.   
  129.   #endif
  130.   
  131.   static const short yyrhs[] = {    -1,
  132. !     25,    26,     0,     5,     0,    30,     5,     0,    27,     5,
  133. !      0,    30,    27,     5,     0,     8,     4,     6,     5,     0,
  134.        8,     4,     3,     5,     0,     7,     4,     3,     4,     6,
  135. !      5,     0,     7,     4,     3,     4,    31,     5,     0,     9,
  136.        4,     3,     5,     0,    10,     4,     3,     5,     0,    11,
  137. !      5,     0,    12,     5,     0,     4,    29,     0,     4,    29,
  138. !      4,    28,     0,     3,     4,    29,     0,     3,     4,    29,
  139. !      4,    28,     0,    31,     0,    31,    13,    28,     0,     3,
  140. !      0,     3,    14,     0,    32,     0,    15,    32,     0,    16,
  141. !     32,    17,     0,    16,    32,    17,    18,     0,    19,    16,
  142. !     32,    17,     0,    32,    16,    32,    17,     0,    16,    32,
  143. !     17,     3,     0,    32,    16,    32,    13,    32,    17,     0,
  144. !     32,    20,    32,    14,    32,    21,     0,    33,     0,    33,
  145. !     34,    32,     0,    19,    32,     0,     3,     0,    22,     3,
  146. !      0,    18,     0,    19,     0,    23,     0,    24,     0
  147.   };
  148.   
  149.   #if YYDEBUG != 0
  150. --- 88,119 ----
  151.        0,     1,     4,     6,     9,    12,    16,    21,    26,    33,
  152.       40,    45,    50,    53,    56,    59,    64,    68,    74,    76,
  153.       80,    82,    85,    87,    90,    94,    99,   104,   109,   114,
  154. !    121,   128,   140,   152,   158,   166,   168,   172,   175,   177,
  155. !    180,   182,   184,   186
  156.   };
  157.   
  158.   #endif
  159.   
  160.   static const short yyrhs[] = {    -1,
  161. !     27,    28,     0,     5,     0,    32,     5,     0,    29,     5,
  162. !      0,    32,    29,     5,     0,     8,     4,     6,     5,     0,
  163.        8,     4,     3,     5,     0,     7,     4,     3,     4,     6,
  164. !      5,     0,     7,     4,     3,     4,    33,     5,     0,     9,
  165.        4,     3,     5,     0,    10,     4,     3,     5,     0,    11,
  166. !      5,     0,    12,     5,     0,     4,    31,     0,     4,    31,
  167. !      4,    30,     0,     3,     4,    31,     0,     3,     4,    31,
  168. !      4,    30,     0,    33,     0,    33,    13,    30,     0,     3,
  169. !      0,     3,    14,     0,    34,     0,    15,    34,     0,    16,
  170. !     34,    17,     0,    16,    34,    17,    18,     0,    19,    16,
  171. !     34,    17,     0,    34,    16,    34,    17,     0,    16,    34,
  172. !     17,     3,     0,    34,    16,    34,    13,    34,    17,     0,
  173. !     34,    20,    34,    14,    34,    21,     0,    16,    22,    34,
  174. !     13,    34,    23,    13,    34,    13,    34,    17,     0,    16,
  175. !     22,    34,    13,    34,    13,    34,    23,    13,    34,    17,
  176. !      0,    16,    22,    34,    23,    17,     0,    16,    22,    34,
  177. !     23,    13,    34,    17,     0,    35,     0,    35,    36,    34,
  178. !      0,    19,    34,     0,     3,     0,    24,     3,     0,    18,
  179. !      0,    19,     0,    25,     0,    26,     0
  180.   };
  181.   
  182.   #if YYDEBUG != 0
  183. ***************
  184. *** 116,136 ****
  185.       22,    23,    26,    29,    30,    31,    33,    34,    35,    37,
  186.       39,    40,    41,    42,    45,    46,    49,    50,    55,    56,
  187.       60,    63,    65,    66,    67,    68,    69,    70,    71,    72,
  188. !     74,    78,    79,    80,    82,    83,    86,    87,    88,    89
  189.   };
  190.   
  191.   static const char * const yytname[] = {   "$","error","$illegal.","WORD","WHITESP",
  192.   "EOLN","STRING","DEFINECMD","INCLUDECMD","IFDEFCMD","IFNDEFCMD","ELSECMD","ENDIFCMD",
  193. ! "','","':'","'#'","'('","')'","'+'","'-'","'{'","'}'","'$'","'*'","'/'","input",
  194. ! "line","opline","ops","opcode","label","operand","basic","basexpr","op",""
  195.   };
  196.   #endif
  197.   
  198.   static const short yyr1[] = {     0,
  199. !     25,    25,    26,    26,    26,    26,    26,    26,    26,    26,
  200. !     26,    26,    26,    26,    27,    27,    27,    27,    28,    28,
  201. !     29,    30,    31,    31,    31,    31,    31,    31,    31,    31,
  202. !     31,    32,    32,    32,    33,    33,    34,    34,    34,    34
  203.   };
  204.   
  205.   static const short yyr2[] = {     0,
  206. --- 121,144 ----
  207.       22,    23,    26,    29,    30,    31,    33,    34,    35,    37,
  208.       39,    40,    41,    42,    45,    46,    49,    50,    55,    56,
  209.       60,    63,    65,    66,    67,    68,    69,    70,    71,    72,
  210. !     74,    76,    79,    82,    85,    90,    91,    92,    94,    95,
  211. !     98,    99,   100,   101
  212.   };
  213.   
  214.   static const char * const yytname[] = {   "$","error","$illegal.","WORD","WHITESP",
  215.   "EOLN","STRING","DEFINECMD","INCLUDECMD","IFDEFCMD","IFNDEFCMD","ELSECMD","ENDIFCMD",
  216. ! "','","':'","'#'","'('","')'","'+'","'-'","'{'","'}'","'['","']'","'$'","'*'",
  217. ! "'/'","input","line","opline","ops","opcode","label","operand","basic","basexpr",
  218. ! "op",""
  219.   };
  220.   #endif
  221.   
  222.   static const short yyr1[] = {     0,
  223. !     27,    27,    28,    28,    28,    28,    28,    28,    28,    28,
  224. !     28,    28,    28,    28,    29,    29,    29,    29,    30,    30,
  225. !     31,    32,    33,    33,    33,    33,    33,    33,    33,    33,
  226. !     33,    33,    33,    33,    33,    34,    34,    34,    35,    35,
  227. !     36,    36,    36,    36
  228.   };
  229.   
  230.   static const short yyr2[] = {     0,
  231. ***************
  232. *** 137,143 ****
  233.        0,     2,     1,     2,     2,     3,     4,     4,     6,     6,
  234.        4,     4,     2,     2,     2,     4,     3,     5,     1,     3,
  235.        1,     2,     1,     2,     3,     4,     4,     4,     4,     6,
  236. !      6,     1,     3,     2,     1,     2,     1,     1,     1,     1
  237.   };
  238.   
  239.   static const short yydefact[] = {     1,
  240. --- 145,152 ----
  241.        0,     2,     1,     2,     2,     3,     4,     4,     6,     6,
  242.        4,     4,     2,     2,     2,     4,     3,     5,     1,     3,
  243.        1,     2,     1,     2,     3,     4,     4,     4,     4,     6,
  244. !      6,    11,    11,     5,     7,     1,     3,     2,     1,     2,
  245. !      1,     1,     1,     1
  246.   };
  247.   
  248.   static const short yydefact[] = {     1,
  249. ***************
  250. *** 144,207 ****
  251.        0,     0,     0,     3,     0,     0,     0,     0,     0,     0,
  252.        2,     0,     0,     0,    22,    21,    15,     0,     0,     0,
  253.        0,    13,    14,     5,     0,     4,     0,    17,     0,     0,
  254. !      0,     0,     0,     0,     6,     0,    35,     0,     0,     0,
  255. !      0,    16,    19,    23,    32,     0,     8,     7,    11,    12,
  256. !     18,     0,    24,     0,     0,    34,    36,     0,     0,     0,
  257. !     37,    38,    39,    40,     0,     0,     0,    25,     0,    20,
  258. !      0,     0,    33,     9,    10,    29,    26,    27,     0,    28,
  259. !      0,     0,     0,    30,    31,     0,     0
  260.   };
  261.   
  262.   static const short yydefgoto[] = {     1,
  263. !     11,    12,    42,    17,    13,    43,    44,    45,    65
  264.   };
  265.   
  266.   static const short yypact[] = {-32768,
  267. !     47,     1,     3,-32768,    44,    49,    56,    57,    58,    59,
  268. ! -32768,    60,     8,     3,-32768,-32768,    62,    64,    30,    65,
  269. !     66,-32768,-32768,-32768,    67,-32768,    68,    70,    13,    71,
  270. !     72,    73,    74,    75,-32768,    13,-32768,    27,    27,    15,
  271. !     69,-32768,    63,   -12,    21,     4,-32768,-32768,-32768,-32768,
  272. ! -32768,    27,-32768,    45,    27,-32768,-32768,    13,    27,    27,
  273. ! -32768,-32768,-32768,-32768,    27,    76,    77,     6,    53,-32768,
  274. !     25,    78,-32768,-32768,-32768,-32768,-32768,-32768,    27,-32768,
  275. !     27,    79,    80,-32768,-32768,    83,-32768
  276.   };
  277.   
  278.   static const short yypgoto[] = {-32768,
  279. ! -32768,    81,   -33,    84,-32768,    38,   -38,-32768,-32768
  280.   };
  281.   
  282.   
  283. ! #define    YYLAST        101
  284.   
  285.   
  286.   static const short yytable[] = {    53,
  287. !     54,    56,    51,    59,    14,    16,    37,    60,    76,    66,
  288. !     25,     3,    26,    56,    15,    37,    69,    37,    38,    39,
  289. !     71,    72,    40,    77,    70,    41,    73,    38,    39,    37,
  290. !     55,    40,    31,    52,    41,    32,    41,    79,    61,    62,
  291. !     82,    80,    83,    63,    64,    52,    86,    18,    41,     2,
  292. !      3,     4,    19,     5,     6,     7,     8,     9,    10,    20,
  293. !     21,    68,    22,    23,    24,    29,    30,    33,    34,    78,
  294. !     14,    57,    35,    36,    46,    58,    47,    48,    49,    50,
  295. !     74,    75,    87,    67,     0,     0,     0,     0,     0,     0,
  296. !      0,    81,     0,    27,     0,    84,     0,    28,     0,     0,
  297. !     85
  298.   };
  299.   
  300.   static const short yycheck[] = {    38,
  301. !     39,    40,    36,    16,     4,     3,     3,    20,     3,     6,
  302. !      3,     4,     5,    52,    14,     3,    55,     3,    15,    16,
  303. !     59,    60,    19,    18,    58,    22,    65,    15,    16,     3,
  304. !     16,    19,     3,    19,    22,     6,    22,    13,    18,    19,
  305. !     79,    17,    81,    23,    24,    19,     0,     4,    22,     3,
  306. !      4,     5,     4,     7,     8,     9,    10,    11,    12,     4,
  307. !      4,    17,     5,     5,     5,     4,     3,     3,     3,    17,
  308. !      4,     3,     5,     4,     4,    13,     5,     5,     5,     5,
  309. !      5,     5,     0,    46,    -1,    -1,    -1,    -1,    -1,    -1,
  310. !     -1,    14,    -1,    13,    -1,    17,    -1,    14,    -1,    -1,
  311. !     21
  312.   };
  313.   /* -*-C-*-  Note some compilers choke on comments on `#line' lines.  */
  314.   #line 3 "bison.simple"
  315. --- 153,222 ----
  316.        0,     0,     0,     3,     0,     0,     0,     0,     0,     0,
  317.        2,     0,     0,     0,    22,    21,    15,     0,     0,     0,
  318.        0,    13,    14,     5,     0,     4,     0,    17,     0,     0,
  319. !      0,     0,     0,     0,     6,     0,    39,     0,     0,     0,
  320. !      0,    16,    19,    23,    36,     0,     8,     7,    11,    12,
  321. !     18,     0,    24,     0,     0,     0,    38,    40,     0,     0,
  322. !      0,    41,    42,    43,    44,     0,     0,     0,     0,    25,
  323. !      0,    20,     0,     0,    37,     9,    10,     0,     0,    29,
  324. !     26,    27,     0,    28,     0,     0,     0,    34,     0,     0,
  325. !      0,     0,     0,    30,    31,     0,     0,    35,     0,     0,
  326. !      0,     0,     0,     0,    33,    32,     0,     0
  327.   };
  328.   
  329.   static const short yydefgoto[] = {     1,
  330. !     11,    12,    42,    17,    13,    43,    44,    45,    66
  331.   };
  332.   
  333.   static const short yypact[] = {-32768,
  334. !     62,     3,     6,-32768,    40,    48,    54,    64,    70,    76,
  335. ! -32768,    77,    74,     6,-32768,-32768,    79,     7,    24,    81,
  336. !     82,-32768,-32768,-32768,    83,-32768,    84,    86,    22,    87,
  337. !     88,    89,    90,    91,-32768,    22,-32768,    36,    12,    32,
  338. !     85,-32768,    73,    34,   -13,     5,-32768,-32768,-32768,-32768,
  339. ! -32768,    36,-32768,    36,    75,    36,-32768,-32768,    22,    36,
  340. !     36,-32768,-32768,-32768,-32768,    36,    92,    93,    19,     1,
  341. !     94,-32768,    44,    95,-32768,-32768,-32768,    36,    63,-32768,
  342. ! -32768,-32768,    36,-32768,    36,    20,    36,-32768,    96,    78,
  343. !     36,    97,    98,-32768,-32768,    80,    36,-32768,    99,   101,
  344. !     36,    36,   100,   102,-32768,-32768,   104,-32768
  345.   };
  346.   
  347.   static const short yypgoto[] = {-32768,
  348. ! -32768,   103,   -33,   106,-32768,    55,   -38,-32768,-32768
  349.   };
  350.   
  351.   
  352. ! #define    YYLAST        120
  353.   
  354.   
  355.   static const short yytable[] = {    53,
  356. !     55,    57,    51,    80,    62,    63,    14,    37,    16,    30,
  357. !     67,    64,    65,    57,    37,    69,    15,    71,    81,    38,
  358. !     39,    73,    74,    40,    37,    72,    31,    75,    41,    32,
  359. !     52,    78,    91,    54,    37,    41,    38,    39,    37,    86,
  360. !     40,    79,    92,    18,    89,    41,    90,    56,    93,    60,
  361. !     52,    19,    96,    61,    52,    41,    83,    20,   100,    41,
  362. !     84,   107,   103,   104,     2,     3,     4,    21,     5,     6,
  363. !      7,     8,     9,    10,    22,    87,    25,     3,    26,    88,
  364. !     23,    24,    29,    33,    34,    59,    14,    58,    35,    36,
  365. !     46,    70,    47,    48,    49,    50,    76,    77,    95,     0,
  366. !     68,     0,    99,   108,     0,     0,     0,     0,    85,    97,
  367. !     82,   101,    94,   102,    98,    27,   105,     0,   106,    28
  368.   };
  369.   
  370.   static const short yycheck[] = {    38,
  371. !     39,    40,    36,     3,    18,    19,     4,     3,     3,     3,
  372. !      6,    25,    26,    52,     3,    54,    14,    56,    18,    15,
  373. !     16,    60,    61,    19,     3,    59,     3,    66,    24,     6,
  374. !     19,    13,    13,    22,     3,    24,    15,    16,     3,    78,
  375. !     19,    23,    23,     4,    83,    24,    85,    16,    87,    16,
  376. !     19,     4,    91,    20,    19,    24,    13,     4,    97,    24,
  377. !     17,     0,   101,   102,     3,     4,     5,     4,     7,     8,
  378. !      9,    10,    11,    12,     5,    13,     3,     4,     5,    17,
  379. !      5,     5,     4,     3,     3,    13,     4,     3,     5,     4,
  380. !      4,    17,     5,     5,     5,     5,     5,     5,    21,    -1,
  381. !     46,    -1,    23,     0,    -1,    -1,    -1,    -1,    14,    13,
  382. !     17,    13,    17,    13,    17,    13,    17,    -1,    17,    14
  383.   };
  384.   /* -*-C-*-  Note some compilers choke on comments on `#line' lines.  */
  385.   #line 3 "bison.simple"
  386. ***************
  387. *** 770,808 ****
  388.               free(yyvsp[-5]); free(yyvsp[-3]); free(yyvsp[-1]); ;
  389.       break;}
  390.   case 32:
  391. ! #line 78 "asm.y"
  392. ! { yyval = yyvsp[0]; ;
  393.       break;}
  394.   case 33:
  395. ! #line 79 "asm.y"
  396. ! { yyval = concat3(yyvsp[-2], yyvsp[-1], yyvsp[0]); free(yyvsp[-2]); free(yyvsp[-1]); free(yyvsp[0]); ;
  397.       break;}
  398.   case 34:
  399. ! #line 80 "asm.y"
  400. ! { yyval = concat("-", yyvsp[0]); free(yyvsp[0]); ;
  401.       break;}
  402.   case 35:
  403. ! #line 82 "asm.y"
  404. ! {yyval = wordlookup(yyvsp[0]); free(yyvsp[0]); ;
  405.       break;}
  406.   case 36:
  407. ! #line 83 "asm.y"
  408. ! {yyval = hexop(yyvsp[0]); free(yyvsp[0]);;
  409.       break;}
  410.   case 37:
  411. ! #line 86 "asm.y"
  412. ! { yyval = strdup("+"); ;
  413.       break;}
  414.   case 38:
  415. ! #line 87 "asm.y"
  416. ! { yyval = strdup("-"); ;
  417.       break;}
  418.   case 39:
  419. ! #line 88 "asm.y"
  420. ! { yyval = strdup("*"); ;
  421.       break;}
  422.   case 40:
  423. ! #line 89 "asm.y"
  424.   { yyval = strdup("/"); ;
  425.       break;}
  426.   }
  427. --- 785,843 ----
  428.               free(yyvsp[-5]); free(yyvsp[-3]); free(yyvsp[-1]); ;
  429.       break;}
  430.   case 32:
  431. ! #line 77 "asm.y"
  432. ! { yyval=postindex(yyvsp[-8],yyvsp[-6],yyvsp[-3],yyvsp[-1]); 
  433. !          free(yyvsp[-8]); free(yyvsp[-6]); free(yyvsp[-3]); free(yyvsp[-1]); ;
  434.       break;}
  435.   case 33:
  436. ! #line 80 "asm.y"
  437. ! { yyval=preindex(yyvsp[-8],yyvsp[-6],yyvsp[-4],yyvsp[-1]); 
  438. !          free(yyvsp[-8]); free(yyvsp[-6]); free(yyvsp[-4]); free(yyvsp[-1]); ;
  439.       break;}
  440.   case 34:
  441. ! #line 83 "asm.y"
  442. ! { yyval=postindex0(yyvsp[-2]); 
  443. !          free(yyvsp[-2]); ;
  444.       break;}
  445.   case 35:
  446. ! #line 86 "asm.y"
  447. ! { yyval=postindex1(yyvsp[-4],yyvsp[-1]); 
  448. !          free(yyvsp[-4]); free(yyvsp[-1]); ;
  449.       break;}
  450.   case 36:
  451. ! #line 90 "asm.y"
  452. ! { yyval = yyvsp[0]; ;
  453.       break;}
  454.   case 37:
  455. ! #line 91 "asm.y"
  456. ! { yyval = concat3(yyvsp[-2], yyvsp[-1], yyvsp[0]); free(yyvsp[-2]); free(yyvsp[-1]); free(yyvsp[0]); ;
  457.       break;}
  458.   case 38:
  459. ! #line 92 "asm.y"
  460. ! { yyval = concat("-", yyvsp[0]); free(yyvsp[0]); ;
  461.       break;}
  462.   case 39:
  463. ! #line 94 "asm.y"
  464. ! {yyval = wordlookup(yyvsp[0]); free(yyvsp[0]); ;
  465.       break;}
  466.   case 40:
  467. ! #line 95 "asm.y"
  468. ! {yyval = hexop(yyvsp[0]); free(yyvsp[0]);;
  469. !     break;}
  470. ! case 41:
  471. ! #line 98 "asm.y"
  472. ! { yyval = strdup("+"); ;
  473. !     break;}
  474. ! case 42:
  475. ! #line 99 "asm.y"
  476. ! { yyval = strdup("-"); ;
  477. !     break;}
  478. ! case 43:
  479. ! #line 100 "asm.y"
  480. ! { yyval = strdup("*"); ;
  481. !     break;}
  482. ! case 44:
  483. ! #line 101 "asm.y"
  484.   { yyval = strdup("/"); ;
  485.       break;}
  486.   }
  487. ***************
  488. *** 1000,1006 ****
  489.     yystate = yyn;
  490.     goto yynewstate;
  491.   }
  492. ! #line 91 "asm.y"
  493.   
  494.   #include <setjmp.h>
  495.   
  496. --- 1035,1041 ----
  497.     yystate = yyn;
  498.     goto yynewstate;
  499.   }
  500. ! #line 103 "asm.y"
  501.   
  502.   #include <setjmp.h>
  503.   
  504. *** 1.5    1993/04/15 00:31:22
  505. --- asmtrans.h    1993/05/25 16:40:12
  506. ***************
  507. *** 36,41 ****
  508. --- 36,43 ----
  509.   char *concat4 P_((char *, char *, char *, char *));
  510.   char *concat5 P_((char *,char *, char *, char *, char *));
  511.   char *concat6 P_((char *,char *,char *, char *, char *, char *));
  512. + char *concat8 P_((char *,char *,char *, char *, char *, char *, char *, char *));
  513. + char *concat9 P_((char *,char *,char *, char *, char *, char *, char *, char *, char *));
  514.   void do_define P_((char *, char *));
  515.   void do_ifdef P_((char *));
  516.   void do_ifndef P_((char *));
  517. ***************
  518. *** 47,52 ****
  519. --- 49,55 ----
  520.   
  521.   char *wordlookup P_((char *));
  522.   char *changesiz P_((char *));
  523. + char *changesiz2 P_((char *));
  524.   char *fixupword P_((char *));
  525.   void emit P_((char *));
  526.   
  527. ***************
  528. *** 57,63 ****
  529.   char *indexed P_((char *, char *));
  530.   char *sizedop P_((char *, char *));
  531.   char *twoindex P_((char *, char *, char *));
  532. ! char *bitfield  P_((char *, char *, char *));
  533.   char *do_ops P_((char *, char *, char *, char *));
  534.   char *hexop P_((char *));
  535.   
  536. --- 60,70 ----
  537.   char *indexed P_((char *, char *));
  538.   char *sizedop P_((char *, char *));
  539.   char *twoindex P_((char *, char *, char *));
  540. ! char *postindex P_((char *, char *, char *, char *));
  541. ! char *postindex0 P_((char *));
  542. ! char *postindex1 P_((char *, char *));
  543. ! char *preindex P_((char *, char *, char *, char *));
  544. ! char *bitfield P_((char *, char *, char *));
  545.   char *do_ops P_((char *, char *, char *, char *));
  546.   char *hexop P_((char *));
  547.   
  548. *** 1.5    1993/04/15 00:31:22
  549. --- bios.c    1993/06/23 16:44:08
  550. ***************
  551. *** 59,74 ****
  552.   #define xconout    ((long *)0x57eL)
  553.   
  554.   #define BCOSTAT(dev) \
  555. !     ((tosvers >= 0x0102 && (unsigned)dev <= 4) ? \
  556.          (int)callout1(xcostat[dev], dev) : Bcostat(dev))
  557.   #define BCONOUT(dev, c) \
  558. !     ((tosvers >= 0x0102 && (unsigned)dev <= 4) ? \
  559.          callout2(xconout[dev], dev, c) : Bconout(dev, c))
  560.   #define BCONSTAT(dev) \
  561. !     ((tosvers >= 0x0102 && (unsigned)dev <= 4) ? \
  562.          (int)callout1(xconstat[dev], dev) : Bconstat(dev))
  563.   #define BCONIN(dev) \
  564. !     ((tosvers >= 0x0102 && (unsigned)dev <= 4) ? \
  565.          callout1(xconin[dev], dev) : Bconin(dev))
  566.   #else
  567.   #define BCOSTAT(dev) Bcostat(dev)
  568. --- 59,74 ----
  569.   #define xconout    ((long *)0x57eL)
  570.   
  571.   #define BCOSTAT(dev) \
  572. !     ((tosvers > 0x0102 && (unsigned)dev <= 4) ? \
  573.          (int)callout1(xcostat[dev], dev) : Bcostat(dev))
  574.   #define BCONOUT(dev, c) \
  575. !     ((tosvers > 0x0102 && (unsigned)dev <= 4) ? \
  576.          callout2(xconout[dev], dev, c) : Bconout(dev, c))
  577.   #define BCONSTAT(dev) \
  578. !     ((tosvers > 0x0102 && (unsigned)dev <= 4) ? \
  579.          (int)callout1(xconstat[dev], dev) : Bconstat(dev))
  580.   #define BCONIN(dev) \
  581. !     ((tosvers > 0x0102 && (unsigned)dev <= 4) ? \
  582.          callout1(xconin[dev], dev) : Bconin(dev))
  583.   #else
  584.   #define BCOSTAT(dev) Bcostat(dev)
  585. ***************
  586. *** 409,415 ****
  587.   /* we can't trust the Getbpb routine to accurately save all registers,
  588.    * so we do it ourselves
  589.    */
  590. !     r = callout(GETBPB, dev);
  591.   /* 
  592.    * There is a bug in the  TOS  disk handling routines (well several actually).
  593.    * If the directory size of Getbpb() is returned as zero then the drive 'dies'
  594. --- 409,415 ----
  595.   /* we can't trust the Getbpb routine to accurately save all registers,
  596.    * so we do it ourselves
  597.    */
  598. !     r = callout1(GETBPB, dev);
  599.   /* 
  600.    * There is a bug in the  TOS  disk handling routines (well several actually).
  601.    * If the directory size of Getbpb() is returned as zero then the drive 'dies'
  602. *** 1.5    1993/04/15 00:31:22
  603. --- biosfs.c    1993/04/28 18:22:58
  604. ***************
  605. *** 1046,1058 ****
  606.           ws->ws_col = *((short *)(aline - 44)) + 1;
  607.       } else if (mode == TIOCIBAUD || mode == TIOCOBAUD) {
  608.           long oldbaud, newbaud;
  609.           dev = f->fc.aux;
  610.   
  611.           newbaud = *r;
  612.           if (dev == 1 || dev >= 6) {
  613.               if (has_bconmap)
  614. !                 mapin((dev == 1) ? curproc->bconmap : dev);
  615.               i = (int)rsconf(-2, -1, -1, -1, -1, -1);
  616.               if (i < 0 || i >= MAXBAUD)
  617.                   oldbaud = -1L;
  618.               else
  619. --- 1046,1064 ----
  620.           ws->ws_col = *((short *)(aline - 44)) + 1;
  621.       } else if (mode == TIOCIBAUD || mode == TIOCOBAUD) {
  622.           long oldbaud, newbaud;
  623. +         int oldmap;
  624.           dev = f->fc.aux;
  625.   
  626.           newbaud = *r;
  627.           if (dev == 1 || dev >= 6) {
  628. + /* trick rsconf into setting the correct port (it uses curproc->bconmap) */
  629. +             oldmap = curproc->bconmap;
  630.               if (has_bconmap)
  631. !                 curproc->bconmap = 
  632. !                     (dev == 1) ? curproc->bconmap : dev;
  633.               i = (int)rsconf(-2, -1, -1, -1, -1, -1);
  634.               if (i < 0 || i >= MAXBAUD)
  635.                   oldbaud = -1L;
  636.               else
  637. ***************
  638. *** 1066,1077 ****
  639. --- 1072,1086 ----
  640.                   for (i = 0; i < MAXBAUD; i++) {
  641.                       if (baudmap[i] == newbaud) {
  642.                           rsconf(i, -1, -1, -1, -1, -1);
  643. +                         curproc->bconmap = oldmap;
  644.                           return 0;
  645.                       } else if (baudmap[i] < newbaud) {
  646.                           *r = baudmap[i];
  647. +                         curproc->bconmap = oldmap;
  648.                           break;
  649.                       }
  650.                   }
  651. +                 curproc->bconmap = oldmap;
  652.                   return ERANGE;
  653.               } else if (newbaud == 0L) {
  654.       /* BUG: drop DTR: works only on modem1 */
  655. ***************
  656. *** 1079,1084 ****
  657. --- 1088,1094 ----
  658.                       Ongibit(0x10);
  659.                   }
  660.               }
  661. +             curproc->bconmap = oldmap;
  662.               return 0;
  663.           } else if (dev == 2 || dev == 5) {
  664.               /* screen: assume 9600 baud */
  665. *** 1.5    1993/04/15 00:31:22
  666. --- debug.c    1993/06/10 18:37:04
  667. ***************
  668. *** 517,522 ****
  669. --- 517,531 ----
  670.   }
  671.   
  672.   
  673. + static char *rebootmsg[MAXLANG] = {
  674. + "FATAL ERROR. You must reboot the system.\r\n",
  675. + "FATAL ERROR. You must reboot the system.\r\n",        /* German */
  676. + "FATAL ERROR. You must reboot the system.\r\n",        /* French */
  677. + "FATAL ERROR. You must reboot the system.\r\n",        /* UK */
  678. + "FATAL ERROR. You must reboot the system.\r\n",        /* Spanish */
  679. + "FATAL ERROR. You must reboot the system.\r\n"        /* Italian */
  680. + };
  681.   EXITING 
  682.   void HALT()
  683.   {
  684. ***************
  685. *** 528,534 ****
  686. --- 537,547 ----
  687.       extern EXITING _exit P_((int));
  688.   #endif
  689.       restr_intr();    /* restore interrupts to normal */
  690. + #ifdef DEBUG_INFO
  691.       debug_ws("Fatal MiNT error: adjust debug level and hit a key...\r\n");
  692. + #else
  693. +     debug_ws(rebootmsg[gl_lang]);
  694. + #endif
  695.       sys_q[READY_Q] = 0;    /* prevent context switches */
  696.   
  697.       for(;;) {
  698. ***************
  699. *** 543,549 ****
  700.           }
  701.       }
  702.       for(;;) {
  703. !     debug_ws("System halted. Press 'x' to exit, or else reboot\r\n");
  704.           r = Bconin(2);
  705.   
  706.           if ( (r & 0x0ff) == 'x' ) {
  707. --- 556,562 ----
  708.           }
  709.       }
  710.       for(;;) {
  711. !         debug_ws(rebootmsg[gl_lang]);
  712.           r = Bconin(2);
  713.   
  714.           if ( (r & 0x0ff) == 'x' ) {
  715. *** 1.5    1993/04/15 00:31:22
  716. --- dosfile.c    1993/04/28 18:06:22
  717. ***************
  718. *** 1,6 ****
  719.   /*
  720.   Copyright 1990,1991,1992 Eric R. Smith.
  721. ! Copyright 1992 Atari Corporation.
  722.   All rights reserved.
  723.   */
  724.   
  725. --- 1,6 ----
  726.   /*
  727.   Copyright 1990,1991,1992 Eric R. Smith.
  728. ! Copyright 1992,1993 Atari Corporation.
  729.   All rights reserved.
  730.   */
  731.   
  732. ***************
  733. *** 688,694 ****
  734.           if (!tty->pgrp)
  735.               tty->pgrp = curproc->pgrp;
  736.       }
  737. !     return newh;
  738.   }
  739.   
  740.   long ARGS_ON_STACK
  741. --- 688,694 ----
  742.           if (!tty->pgrp)
  743.               tty->pgrp = curproc->pgrp;
  744.       }
  745. !     return 0;
  746.   }
  747.   
  748.   long ARGS_ON_STACK
  749. ***************
  750. *** 986,992 ****
  751.       mask = 1L;
  752.       for (i = 0; i < MAX_OPEN; i++) {
  753.           if ( ((rfd & mask) || (wfd & mask)) && !(p->handle[i]) ) {
  754. !             DEBUG(("Fselect: invalid handle"));
  755.               return EIHNDL;
  756.           }
  757.           mask = mask << 1L;
  758. --- 986,992 ----
  759.       mask = 1L;
  760.       for (i = 0; i < MAX_OPEN; i++) {
  761.           if ( ((rfd & mask) || (wfd & mask)) && !(p->handle[i]) ) {
  762. !             DEBUG(("Fselect: invalid handle: %d", i));
  763.               return EIHNDL;
  764.           }
  765.           mask = mask << 1L;
  766. *** 1.5    1993/04/15 00:31:22
  767. --- dosmem.c    1993/06/22 16:54:58
  768. ***************
  769. *** 337,342 ****
  770. --- 337,343 ----
  771.           /* fall through */
  772.       case 4:
  773.           mkwait = mkgo = 1;
  774. +         thread = (mode == 4);
  775.           tfmt = "Pexec(%d,%lx,BP:%lx,%lx)";
  776.           tail_offs = 0;
  777.           break;
  778. ***************
  779. *** 439,447 ****
  780. --- 440,462 ----
  781.           else
  782.               env = 0;
  783.           if (!env) {
  784. +             DEBUG(("Pexec: memory not owned by parent"));
  785.               if (p) dispose_proc(p);
  786.               return EIMBA;
  787.           }
  788. + #if 0
  789. +       /* make sure that the PC we are about to use is in a region which is
  790. +        * attached to the process; this is most commonly a problem for
  791. +        * shared text segment programs.
  792. +        * BUG: we should verify that the PC is in a region to which the
  793. +        * child process should legitimately have access.
  794. +        */
  795. +               text = addr2region(((BASEPAGE *)base->loc)->p_tbase);
  796. +               if (text == base) {
  797. +               /* text segment is part of base region */
  798. +                       text = NULL;
  799. +               }
  800. + #endif
  801.       }
  802.   
  803.   /* make a local copy of the name, in case we are overlaying the current
  804. *** 1.5    1993/04/15 00:31:22
  805. --- file.h    1993/06/10 20:25:32
  806. ***************
  807. *** 1,6 ****
  808.   /*
  809.   Copyright 1991,1992 Eric R. Smith.
  810. ! Copyright 1992 Atari Corporation.
  811.   All rights reserved.
  812.   */
  813.   
  814. --- 1,6 ----
  815.   /*
  816.   Copyright 1991,1992 Eric R. Smith.
  817. ! Copyright 1992,1993 Atari Corporation.
  818.   All rights reserved.
  819.   */
  820.   
  821. ***************
  822. *** 9,14 ****
  823. --- 9,15 ----
  824.   
  825.   struct filesys;        /* forward declaration */
  826.   struct devdrv;        /* ditto */
  827. + struct timeout;        /* and ditto */
  828.   
  829.   typedef struct f_cookie {
  830.       struct filesys *fs;    /* filesystem that knows about this cookie */
  831. ***************
  832. *** 237,246 ****
  833.   
  834.   /* file system utility functions */
  835.       int    ARGS_ON_STACK (*denyshare) P_((FILEPTR *, FILEPTR *));
  836.   
  837.   /* reserved for future use */
  838. !     LOCK *    ARGS_ON_STACK (*denylock) P_((LOCK *, LOCK *));
  839. !     long    res2[9];
  840.   };
  841.   
  842.   /* flags for open() modes */
  843. --- 238,251 ----
  844.   
  845.   /* file system utility functions */
  846.       int    ARGS_ON_STACK (*denyshare) P_((FILEPTR *, FILEPTR *));
  847. +     LOCK *    ARGS_ON_STACK (*denylock) P_((LOCK *, LOCK *));
  848.   
  849. + /* functions for adding/cancelling timeouts */
  850. +     struct timeout * ARGS_ON_STACK (*addtimeout) P_((long, void (*)()));
  851. +     void    ARGS_ON_STACK (*canceltimeout) P_((struct timeout *));
  852. +  
  853.   /* reserved for future use */
  854. !     long    res2[7];
  855.   };
  856.   
  857.   /* flags for open() modes */
  858. *** 1.5    1993/04/15 00:31:22
  859. --- filesys.c    1993/06/17 22:56:00
  860. ***************
  861. *** 1,6 ****
  862.   /*
  863.   Copyright 1990,1991,1992 Eric R. Smith.
  864. ! Copyright 1992 Atari Corp.
  865.   All rights reserved.
  866.   */
  867.   
  868. --- 1,6 ----
  869.   /*
  870.   Copyright 1990,1991,1992 Eric R. Smith.
  871. ! Copyright 1992,1993 Atari Corp.
  872.   All rights reserved.
  873.   */
  874.   
  875. ***************
  876. *** 335,341 ****
  877.    * check for media change: if the drive has changed, call changedrv to
  878.    * invalidate any open files and file handles associated with it, and
  879.    * call the file system's media change routine.
  880. !  * returns: 0 if no change, 1 if change
  881.    */
  882.   
  883.   int
  884. --- 335,341 ----
  885.    * check for media change: if the drive has changed, call changedrv to
  886.    * invalidate any open files and file handles associated with it, and
  887.    * call the file system's media change routine.
  888. !  * returns: 0 if no change, 1 if change, negative number for error
  889.    */
  890.   
  891.   int
  892. ***************
  893. *** 371,381 ****
  894.    * PROBLEM: AHDI may get upset if the drive isn't valid.
  895.    * SOLUTION: don't change the default PSEUDODRIVES setting!
  896.    */
  897. !     r = mediach(d);
  898.       if (r == 1) {        /* drive _may_ have changed */
  899.           r = rwabs(0, tmpbuf, 1, 0, d, 0L);    /* check the BIOS */
  900.           if (r != E_CHNG) {            /* nope, no change */
  901. !             return 0;
  902.           }
  903.           r = 2;            /* drive was definitely changed */
  904.       }
  905. --- 371,386 ----
  906.    * PROBLEM: AHDI may get upset if the drive isn't valid.
  907.    * SOLUTION: don't change the default PSEUDODRIVES setting!
  908.    */
  909. ! TRACE(("calling mediach(%d)",d));
  910. !     r = (int)mediach(d);
  911. ! TRACE(("mediach(%d) == %ld", d, r));
  912. !     if (r < 0) return r;
  913.       if (r == 1) {        /* drive _may_ have changed */
  914.           r = rwabs(0, tmpbuf, 1, 0, d, 0L);    /* check the BIOS */
  915.           if (r != E_CHNG) {            /* nope, no change */
  916. !             return (r < 0) ? r : 0;
  917.           }
  918.           r = 2;            /* drive was definitely changed */
  919.       }
  920. ***************
  921. *** 522,531 ****
  922.    * path2cookie will restart the search automatically; other functions
  923.    * that call relpath2cookie directly will have to fail gracefully
  924.    */
  925. !     if (disk_changed(dir.dev)) {
  926.           release_cookie(&dir);
  927. ! PATH2COOKIE_DB(("relpath2cookie: returning %d", E_CHNG));
  928. !         return E_CHNG;
  929.       }
  930.   
  931.   
  932. --- 527,537 ----
  933.    * path2cookie will restart the search automatically; other functions
  934.    * that call relpath2cookie directly will have to fail gracefully
  935.    */
  936. !     if ((r = disk_changed(dir.dev)) != 0) {
  937.           release_cookie(&dir);
  938. !         if (r > 0) r = E_CHNG;
  939. ! PATH2COOKIE_DB(("relpath2cookie: returning %d", r));
  940. !         return r;
  941.       }
  942.   
  943.   
  944. *** 1.5    1993/04/15 00:31:22
  945. --- main.c    1993/06/16 17:29:22
  946. ***************
  947. *** 192,198 ****
  948.       strnicmp, stricmp, strlwr, strupr, ksprintf,
  949.       ms_time, unixtim, dostim,
  950.       nap, sleep, wake, wakeselect,
  951. !     denyshare, denylock
  952.   };
  953.   
  954.   /* table of processor frame sizes in _words_ (not used on MC68000) */
  955. --- 192,198 ----
  956.       strnicmp, stricmp, strlwr, strupr, ksprintf,
  957.       ms_time, unixtim, dostim,
  958.       nap, sleep, wake, wakeselect,
  959. !     denyshare, denylock, addtimeout, canceltimeout
  960.   };
  961.   
  962.   /* table of processor frame sizes in _words_ (not used on MC68000) */
  963. ***************
  964. *** 1085,1090 ****
  965. --- 1085,1093 ----
  966.           }
  967.       }
  968.       
  969. +     if (gl_lang >= MAXLANG || gl_lang < 0)
  970. +         gl_lang = 0;
  971.       return 0L;
  972.   }
  973.   
  974. ***************
  975. *** 1094,1100 ****
  976.    * # anything        -- comment
  977.    * INIT=file        -- specify boot program
  978.    * CON=file        -- specify initial file/device for handles -1, 0, 1
  979. !  * PRN=file        -- specify initial file for handle 2
  980.    * BIOSBUF=[yn]        -- if 'n' or 'N' then turn off BIOSBUF feature
  981.    * DEBUG_LEVEL=n    -- set debug level to (decimal number) n
  982.    * DEBUG_DEVNO=n    -- set debug device number to (decimal number) n
  983. --- 1097,1103 ----
  984.    * # anything        -- comment
  985.    * INIT=file        -- specify boot program
  986.    * CON=file        -- specify initial file/device for handles -1, 0, 1
  987. !  * PRN=file        -- specify initial file for handle 3
  988.    * BIOSBUF=[yn]        -- if 'n' or 'N' then turn off BIOSBUF feature
  989.    * DEBUG_LEVEL=n    -- set debug level to (decimal number) n
  990.    * DEBUG_DEVNO=n    -- set debug device number to (decimal number) n
  991. ***************
  992. *** 1162,1170 ****
  993.   
  994.           f = do_open(val, O_RDWR|O_CREAT|O_TRUNC, 0, (XATTR *)0);
  995.           if (f) {
  996. !             do_close(curproc->handle[2]);
  997.               do_close(curproc->prn);
  998. !             curproc->prn = curproc->handle[2] = f;
  999.               f->links = 2;
  1000.           }
  1001.           return;
  1002. --- 1165,1173 ----
  1003.   
  1004.           f = do_open(val, O_RDWR|O_CREAT|O_TRUNC, 0, (XATTR *)0);
  1005.           if (f) {
  1006. !             do_close(curproc->handle[3]);
  1007.               do_close(curproc->prn);
  1008. !             curproc->prn = curproc->handle[3] = f;
  1009.               f->links = 2;
  1010.           }
  1011.           return;
  1012. *** 1.5    1993/04/15 00:31:22
  1013. --- mint.h    1993/06/10 18:34:40
  1014. ***************
  1015. *** 1,6 ****
  1016.   /*
  1017.   Copyright 1990,1991,1992 Eric R. Smith.
  1018. ! Copyright 1992 Atari Corporation.
  1019.   All rights reserved.
  1020.   */
  1021.   
  1022. --- 1,6 ----
  1023.   /*
  1024.   Copyright 1990,1991,1992 Eric R. Smith.
  1025. ! Copyright 1992,1993 Atari Corporation.
  1026.   All rights reserved.
  1027.   */
  1028.   
  1029. ***************
  1030. *** 220,225 ****
  1031. --- 220,228 ----
  1032.   
  1033.   extern int has_bconmap;    /* set in main() */
  1034.   extern int curbconmap;  /* see xbios.c */
  1035. + #define MAXLANG 6    /* languages supported */
  1036. + extern int gl_lang;    /* set in main.c */
  1037.   
  1038.   /*
  1039.    * load some inline functions, perhaps
  1040. *** 1.5    1993/04/15 00:31:22
  1041. --- proc.c    1993/05/24 23:13:42
  1042. ***************
  1043. *** 534,543 ****
  1044. --- 534,545 ----
  1045.   /*
  1046.    * restore per-process variables here
  1047.    */
  1048. + #ifndef MULTITOS
  1049.   #ifdef FASTTEXT
  1050.           if (!hardscroll)
  1051.   #endif
  1052.               *((void **)0x44eL) = curproc->logbase;
  1053. + #endif
  1054.           do_wakeup_things();
  1055.           return;
  1056.       }
  1057. ***************
  1058. *** 544,553 ****
  1059. --- 546,557 ----
  1060.   /*
  1061.    * save per-process variables here
  1062.    */
  1063. + #ifndef MULTITOS
  1064.   #ifdef FASTTEXT
  1065.       if (!hardscroll)
  1066.   #endif
  1067.           curproc->logbase = *((void **)0x44eL);
  1068. + #endif
  1069.       curproc->ctxt[CURRENT].regs[0] = 1;
  1070.       curproc = p;
  1071.       proc_clock = TIME_SLICE;    /* fresh time */
  1072. *** 1.5    1993/04/15 00:31:22
  1073. --- proc.h    1993/06/10 20:23:36
  1074. ***************
  1075. *** 1,6 ****
  1076.   /*
  1077.   Copyright 1990,1991,1992 Eric R. Smith.
  1078. ! Copyright 1992 Atari Corporation.
  1079.   All rights reserved.
  1080.   */
  1081.   
  1082. --- 1,6 ----
  1083.   /*
  1084.   Copyright 1990,1991,1992 Eric R. Smith.
  1085. ! Copyright 1992,1993 Atari Corporation.
  1086.   All rights reserved.
  1087.   */
  1088.   
  1089. *** 1.5    1993/04/15 00:31:22
  1090. --- proto.h    1993/06/10 18:04:02
  1091. ***************
  1092. *** 269,277 ****
  1093.   void haltcpv P_((void));
  1094.   
  1095.   /* timeout.c */
  1096. ! TIMEOUT *addtimeout P_((long delta, void (*func)(PROC *p)));
  1097. ! void cancelalltimeouts P_((void));
  1098. ! void canceltimeout P_((TIMEOUT *which));
  1099.   void ARGS_ON_STACK timeout P_((void));
  1100.   void checkalarms P_((void));
  1101.   void ARGS_ON_STACK nap P_((unsigned n));
  1102. --- 269,277 ----
  1103.   void haltcpv P_((void));
  1104.   
  1105.   /* timeout.c */
  1106. ! TIMEOUT * ARGS_ON_STACK addtimeout P_((long delta, void (*func)(PROC *p)));
  1107. ! void ARGS_ON_STACK cancelalltimeouts P_((void));
  1108. ! void ARGS_ON_STACK canceltimeout P_((TIMEOUT *which));
  1109.   void ARGS_ON_STACK timeout P_((void));
  1110.   void checkalarms P_((void));
  1111.   void ARGS_ON_STACK nap P_((unsigned n));
  1112. *** 1.5    1993/04/15 00:31:22
  1113. --- signal.c    1993/05/25 17:03:00
  1114. ***************
  1115. *** 257,263 ****
  1116.   {
  1117.       long oldstack, newstack;
  1118.       long *stack;
  1119. !     CONTEXT *call, oldsysctxt, newcurrent;
  1120.       extern void sig_return();
  1121.   
  1122.       if (curproc->sighandle[sig] == SIG_IGN)
  1123. --- 257,266 ----
  1124.   {
  1125.       long oldstack, newstack;
  1126.       long *stack;
  1127. !     CONTEXT *call, contexts[2];
  1128. ! #define oldsysctxt (contexts[0])
  1129. ! #define newcurrent (contexts[1])
  1130.       extern void sig_return();
  1131.   
  1132.       if (curproc->sighandle[sig] == SIG_IGN)
  1133. ***************
  1134. *** 356,362 ****
  1135.   
  1136.   /* set a new system stack, with a bit of buffer space */
  1137.           oldstack = curproc->sysstack;
  1138. !         newstack = ((long) ( (&newcurrent) - 3 )) - 12;
  1139.   
  1140.           if (newstack < (long)curproc->stack + ISTKSIZE + 256) {
  1141.               ALERT("stack overflow");
  1142. --- 359,365 ----
  1143.   
  1144.   /* set a new system stack, with a bit of buffer space */
  1145.           oldstack = curproc->sysstack;
  1146. !         newstack = ((long) ( (&newcurrent) - 2 )) - 12;
  1147.   
  1148.           if (newstack < (long)curproc->stack + ISTKSIZE + 256) {
  1149.               ALERT("stack overflow");
  1150. ***************
  1151. *** 432,437 ****
  1152. --- 435,442 ----
  1153.           curproc->ctxt[SYSCALL] = oldsysctxt;
  1154.           assert(curproc->magic == CTXT_MAGIC);
  1155.       }
  1156. + #undef oldsysctxt
  1157. + #undef newcurrent
  1158.   }
  1159.   
  1160.   /*
  1161. ***************
  1162. *** 481,487 ****
  1163.       }
  1164.       else {
  1165.           valid_return = 0;
  1166. !         oldctxt = ((CONTEXT *)(&frame[2])) + 3;
  1167.           if (oldctxt->regs[0] != CTXT_MAGIC) {
  1168.               FATAL("p_sigreturn: corrupted context");
  1169.           }
  1170. --- 486,492 ----
  1171.       }
  1172.       else {
  1173.           valid_return = 0;
  1174. !         oldctxt = ((CONTEXT *)(&frame[2])) + 2;
  1175.           if (oldctxt->regs[0] != CTXT_MAGIC) {
  1176.               FATAL("p_sigreturn: corrupted context");
  1177.           }
  1178. ***************
  1179. *** 557,563 ****
  1180.   void
  1181.   sigbus()
  1182.   {
  1183. !     report_buserr();
  1184.       exception(SIGBUS);
  1185.   }
  1186.   
  1187. --- 562,569 ----
  1188.   void
  1189.   sigbus()
  1190.   {
  1191. !     if (curproc->sighandle[SIGBUS] == SIG_DFL)
  1192. !         report_buserr();
  1193.       exception(SIGBUS);
  1194.   }
  1195.   
  1196. *** 1.5    1993/04/15 00:31:22
  1197. --- timeout.c    1993/06/10 18:04:16
  1198. ***************
  1199. *** 1,6 ****
  1200.   /*
  1201.   Copyright 1990,1991,1992 Eric R. Smith.
  1202. ! Copyright 1992 Atari Corporation.
  1203.   All rights reserved.
  1204.   */
  1205.   
  1206. --- 1,6 ----
  1207.   /*
  1208.   Copyright 1990,1991,1992 Eric R. Smith.
  1209. ! Copyright 1992,1993 Atari Corporation.
  1210.   All rights reserved.
  1211.   */
  1212.   
  1213. ***************
  1214. *** 34,40 ****
  1215.   #define newtimeout() (TIMEOUT *)kmalloc(SIZEOF(TIMEOUT))
  1216.   #define disposetimeout(t) kfree(t)
  1217.   
  1218. ! TIMEOUT *
  1219.   addtimeout(delta, func)
  1220.       long delta;
  1221.       void (*func) P_((PROC *));
  1222. --- 34,40 ----
  1223.   #define newtimeout() (TIMEOUT *)kmalloc(SIZEOF(TIMEOUT))
  1224.   #define disposetimeout(t) kfree(t)
  1225.   
  1226. ! TIMEOUT * ARGS_ON_STACK
  1227.   addtimeout(delta, func)
  1228.       long delta;
  1229.       void (*func) P_((PROC *));
  1230. ***************
  1231. *** 77,83 ****
  1232.    * process
  1233.    */
  1234.   
  1235. ! void
  1236.   cancelalltimeouts()
  1237.   {
  1238.       TIMEOUT *cur, **prev, *old;
  1239. --- 77,83 ----
  1240.    * process
  1241.    */
  1242.   
  1243. ! void ARGS_ON_STACK
  1244.   cancelalltimeouts()
  1245.   {
  1246.       TIMEOUT *cur, **prev, *old;
  1247. ***************
  1248. *** 110,116 ****
  1249.    * find it there!
  1250.    */
  1251.   
  1252. ! void
  1253.   canceltimeout(this)
  1254.       TIMEOUT *this;
  1255.   {
  1256. --- 110,116 ----
  1257.    * find it there!
  1258.    */
  1259.   
  1260. ! void ARGS_ON_STACK
  1261.   canceltimeout(this)
  1262.       TIMEOUT *this;
  1263.   {
  1264. *** 1.5    1993/04/15 00:31:22
  1265. --- trans.c    1993/05/25 16:40:28
  1266. ***************
  1267. *** 76,82 ****
  1268.       char *disp, *base, *index;
  1269.   {
  1270.       if (syntax == GAS) {
  1271. !         return concat6(base, "@(", disp, ",", changesiz(index), ")");
  1272.       } else {
  1273.           return concat6(disp, "(", base, ",", index, ")");
  1274.       }
  1275. --- 76,82 ----
  1276.       char *disp, *base, *index;
  1277.   {
  1278.       if (syntax == GAS) {
  1279. !         return concat6(base, "@(", disp, ",", changesiz2(index), ")");
  1280.       } else {
  1281.           return concat6(disp, "(", base, ",", index, ")");
  1282.       }
  1283. ***************
  1284. *** 94,99 ****
  1285. --- 94,143 ----
  1286.   }
  1287.   
  1288.   char *
  1289. + postindex(bd, an , index, od)
  1290. +     char *bd, *an, *index , *od;
  1291. + {
  1292. +     if (syntax == GAS) {
  1293. +         return concat8(an, "@(", bd, ")@(", od, ",", changesiz2(index), ")");
  1294. +     } else {
  1295. +         return concat9("([",an, ",", bd, "],", index, ",", od ,")");
  1296. +     }
  1297. + }
  1298. + char *
  1299. + postindex0(bd)
  1300. +     char *bd;
  1301. + {
  1302. +     if (syntax == GAS) {
  1303. +         return concat3("@(", bd, ")");
  1304. +     } else {
  1305. +         return concat3("([", bd, "])");
  1306. +     }
  1307. + }
  1308. + char *
  1309. + postindex1(bd,od)
  1310. +     char *bd, *od;
  1311. + {
  1312. +     if (syntax == GAS) {
  1313. +         return concat5("@(", bd, ")@(", od, ")");
  1314. +     } else {
  1315. +         return concat5("([", bd, "],", od, ")");
  1316. +     }
  1317. + }
  1318. + char *
  1319. + preindex(bd, an , index, od)
  1320. +     char *bd, *an, *index , *od;
  1321. + {
  1322. +     if (syntax == GAS) {
  1323. +         return concat8(an, "@(", bd, ",", changesiz2(index), ")@(", od, ")");
  1324. +     } else {
  1325. +         return concat9("([",an, ",", bd, ",", index, "],", od, ")");
  1326. +     }
  1327. + }
  1328. + char *
  1329.   do_ops(label, opcode, space, operand)
  1330.       char *label, *opcode, *space, *operand;
  1331.   {
  1332. ***************
  1333. *** 180,185 ****
  1334. --- 224,244 ----
  1335.   
  1336.       while (*op) {
  1337.           if (*op == '.') *op = ':';
  1338. +         op++;
  1339. +     }
  1340. +     return r;
  1341. + }
  1342. + char *
  1343. + changesiz2(op)        /* rw: hack for scaled index    */
  1344. +     char *op;
  1345. + {
  1346. +     char *r = op;
  1347. +     if (syntax != GAS) return op;
  1348. +     while (*op) {
  1349. +         if (*op == '.' || *op == '*' ) *op = ':';
  1350.           op++;
  1351.       }
  1352.       return r;
  1353. *** 1.5    1993/04/15 00:31:22
  1354. --- trutil.c    1993/05/25 16:40:30
  1355. ***************
  1356. *** 101,106 ****
  1357. --- 101,152 ----
  1358.       return r;
  1359.   }
  1360.   
  1361. + char *concat8(s1, s2, s3, s4, s5, s6, s7, s8)
  1362. +     char *s1, *s2, *s3, *s4, *s5, *s6, *s7, *s8;
  1363. + {
  1364. +     size_t siz = strlen(s1) + strlen(s2) + strlen(s3)
  1365. +             + strlen(s4) + strlen(s5) + strlen(s6) 
  1366. +             + strlen(s7) + strlen(s8) + 1;
  1367. +     char *r;
  1368. +     r = malloc(siz);
  1369. +     if (!r) return 0;
  1370. +     strcpy(r, s1);
  1371. +     strcat(r, s2);
  1372. +     strcat(r, s3);
  1373. +     strcat(r, s4);
  1374. +     strcat(r, s5);
  1375. +     strcat(r, s6);
  1376. +     strcat(r, s7);
  1377. +     strcat(r, s8);
  1378. +     return r;
  1379. + }
  1380. + char *concat9(s1, s2, s3, s4, s5, s6, s7, s8, s9)
  1381. +     char *s1, *s2, *s3, *s4, *s5, *s6, *s7, *s8, *s9;
  1382. + {
  1383. +     size_t siz = strlen(s1) + strlen(s2) + strlen(s3)
  1384. +             + strlen(s4) + strlen(s5) + strlen(s6) 
  1385. +             + strlen(s7) + strlen(s8) + strlen(s9) + 1;
  1386. +     char *r;
  1387. +     r = malloc(siz);
  1388. +     if (!r) return 0;
  1389. +     strcpy(r, s1);
  1390. +     strcat(r, s2);
  1391. +     strcat(r, s3);
  1392. +     strcat(r, s4);
  1393. +     strcat(r, s5);
  1394. +     strcat(r, s6);
  1395. +     strcat(r, s7);
  1396. +     strcat(r, s8);
  1397. +     strcat(r, s9);
  1398. +     return r;
  1399. + }
  1400.   static int is_word_sym(c)
  1401.       int c;
  1402.   {
  1403. *** 1.5    1993/04/15 00:31:22
  1404. --- version.h    1993/04/15 23:42:30
  1405. ***************
  1406. *** 1,5 ****
  1407.   #define MAJ_VERSION    1
  1408. ! #define MIN_VERSION    5
  1409.   
  1410.   #ifndef MULTITOS
  1411.   #define BETA
  1412. --- 1,5 ----
  1413.   #define MAJ_VERSION    1
  1414. ! #define MIN_VERSION    6
  1415.   
  1416.   #ifndef MULTITOS
  1417.   #define BETA
  1418. *** 1.5    1993/04/15 00:31:22
  1419. --- welcome.c    1993/06/10 18:33:38
  1420. ***************
  1421. *** 47,53 ****
  1422.    * "boot MultiTOS?" messages, in various langauges:
  1423.    */
  1424.   
  1425. - #define MAXLANG 6
  1426.   
  1427.   struct yn_message {
  1428.       const char *message;    /* message to print */
  1429. --- 47,52 ----
  1430. ***************
  1431. *** 75,82 ****
  1432.       struct yn_message *msg;
  1433.       int y;
  1434.   
  1435. -     if (gl_lang >= MAXLANG || gl_lang < 0)
  1436. -         gl_lang = 0;
  1437.       msg = &boot_it[gl_lang];
  1438.       Cconws(msg->message);
  1439.       y = (int) Cconin();
  1440. --- 74,79 ----
  1441. *** 1.5    1993/04/15 00:31:22
  1442. --- xbios.c    1993/06/10 20:30:40
  1443. ***************
  1444. *** 164,176 ****
  1445.           mapin(curproc->bconmap);
  1446.   
  1447.   #ifndef DONT_ONLY030_THIS
  1448. ! /* Note: in theory, the code below shouldn't be necessary
  1449. ! if we're running on a 68030 chip; after all, in such a case
  1450. ! we MUST have TOS 1.6 or better...
  1451. ! However, the code breaks if we comment this out, even though
  1452. ! tosvers is indeed > 0x0104. Must be a compiler bug, but it's
  1453. ! nothing obvious!
  1454. ! */
  1455.   
  1456.   /*
  1457.     If this is an old TOS, try to rearrange things to support
  1458. --- 164,172 ----
  1459.           mapin(curproc->bconmap);
  1460.   
  1461.   #ifndef DONT_ONLY030_THIS
  1462. ! /* Note: the code below must be included, even on a 68030, thanks to a bug
  1463. !  * in the gcc and mntlib osbind.h file.
  1464. !  */
  1465.   
  1466.   /*
  1467.     If this is an old TOS, try to rearrange things to support
  1468. ***************
  1469. *** 263,268 ****
  1470. --- 259,291 ----
  1471.         (*f->dev->ioctl)(f, TCURSOFF+cmd, &op);
  1472.   }
  1473.   
  1474. + long
  1475. + dosound(ptr)
  1476. +     char *ptr;
  1477. + {
  1478. +     char c;
  1479. +     MEMREGION *r;
  1480. +     if (!no_mem_prot) {
  1481. +     /* check that this process has access to the memory */
  1482. +     /* (if not, the next line will cause a bus error) */
  1483. +         c = *((volatile char *)ptr);
  1484. +     /* OK, now make sure that interrupt routines will have access,
  1485. +      * too
  1486. +      */
  1487. +         r = addr2region((virtaddr)ptr);
  1488. +         if (r && get_prot_mode(r) == PROT_P) {
  1489. +             DEBUG(("Dosound: changing protection to Super"));
  1490. +             mark_region(r, PROT_S);
  1491. +         }
  1492. +     }
  1493. +     Dosound(ptr);
  1494. +     return 0;
  1495. + }
  1496.   void
  1497.   init_xbios()
  1498.   {
  1499. ***************
  1500. *** 272,277 ****
  1501. --- 295,301 ----
  1502.       xbios_tab[0x0e] = uiorec;
  1503.       xbios_tab[0x0f] = rsconf;
  1504.       xbios_tab[0x15] = cursconf;
  1505. +     xbios_tab[0x20] = dosound;
  1506.       xbios_tab[0x26] = supexec;
  1507.       xbios_tab[0x2c] = bconmap;
  1508.   }
  1509. *** 1.5    1993/04/15 00:31:22
  1510. --- context.spp    1993/04/21 23:52:20
  1511. ***************
  1512. *** 274,280 ****
  1513.   ; if running with a true coprocessor we need to restore the FPU state
  1514.   
  1515.       tst.w    _fpu        ; is there a true FPU in the system
  1516. !     beq.s    short3
  1517.       tst.b    C_FSTATE(a0)        ; if NULL frame then the FPU is not in use
  1518.       beq.s    short5        ; skip programmer's model restore
  1519.       fmovem.l    C_FCTRL(a0),fpcr/fpsr/fpiar    ; restore control registers
  1520. --- 274,280 ----
  1521.   ; if running with a true coprocessor we need to restore the FPU state
  1522.   
  1523.       tst.w    _fpu        ; is there a true FPU in the system
  1524. !     beq.s    short6
  1525.       tst.b    C_FSTATE(a0)        ; if NULL frame then the FPU is not in use
  1526.       beq.s    short5        ; skip programmer's model restore
  1527.       fmovem.l    C_FCTRL(a0),fpcr/fpsr/fpiar    ; restore control registers
  1528. *** 1.5    1993/04/15 00:31:22
  1529. --- intr.spp    1993/04/20 16:24:38
  1530. ***************
  1531. *** 16,23 ****
  1532.       ori.w    #$0700,sr
  1533.       rts
  1534.   _spl:
  1535. !     move.w    4(sp),d0
  1536. !     move.w    d0,sr
  1537.       rts
  1538.   
  1539.       XDEF    _mint_5ms
  1540. --- 16,22 ----
  1541.       ori.w    #$0700,sr
  1542.       rts
  1543.   _spl:
  1544. !     move.w    4(sp),sr
  1545.       rts
  1546.   
  1547.       XDEF    _mint_5ms
  1548.