diff --git a/interface/malloc.retro b/interface/malloc.retro index d4b6543..e9b947a 100644 --- a/interface/malloc.retro +++ b/interface/malloc.retro @@ -23,4 +23,6 @@ :mem:cell+ (nnn-n) #4 * + ; :mem:fetch-double (n-nn) dup-pair #1 mem:cell+ fetch push mem:fetch pop ; +:mem:store-double (aann-nn) + push push dup-pair #1 mem:cell+ pop mem:store pop mem:store ; ~~~ diff --git a/vm/nga-c-native-x86/image.c b/vm/nga-c-native-x86/image.c index 874debc..37aa150 100644 --- a/vm/nga-c-native-x86/image.c +++ b/vm/nga-c-native-x86/image.c @@ -568,7 +568,7 @@ CELL ngaImage[] = { 1793,15773,15761,15861,202301,410,382,1242,1535,0,10,1,10,2, 10,11054,11101,154,0,0,100,58,72,97,115,104,45,70,117,110,99,116,105,111, 110,0,4875,11080,11116,166,0,0,100,58,114,101,104,97,115,104,0,1793,11134,1793, 11126,2049,188,3841,11101,8,10,1,11120,2049,2241,2049,186,16,10,1,11118,2049,8491,10, - 11102,9,154,0,0,66,85,73,76,68,0,11139,11162,154,0,0,105,111,58,88, + 11102,12,154,0,0,66,85,73,76,68,0,11139,11162,154,0,0,105,111,58,88, 56,54,0,0,11150,11177,166,0,0,105,100,101,110,116,105,102,121,0,3841,11162, 2049,2722,1793,11244,1,2000,2049,10655,2,2049,2761,1793,11232,3,2049,4472,73,79,32,68, 69,86,73,67,69,32,84,89,80,69,32,50,48,48,48,32,78,79,84,32, diff --git a/vm/nga-c/image.c b/vm/nga-c/image.c index d7b1728..cd0349e 100644 --- a/vm/nga-c/image.c +++ b/vm/nga-c/image.c @@ -10,8 +10,8 @@ #define CELL_MAX LLONG_MAX - 1 #endif #endif -CELL ngaImageCells = 19788; -CELL ngaImage[] = { 1793,19295,19743,19787,202301,410,382,1242,1535,0,10,1,10,2,10,3,10,4,10, +CELL ngaImageCells = 19825; +CELL ngaImage[] = { 1793,19332,19780,19824,202301,410,382,1242,1535,0,10,1,10,2,10,3,10,4,10, 5,10,6,10,7,10,8,10,11,10,12,10,13,10,14,10,15,10,16,10, 17,10,18,10,19,10,20,10,21,10,22,10,23,10,24,10,25,68223234,1,2575, 85000450,1,656912,161,178,268505089,63,62,285281281,0,63,2063,10,101384453,0,9,10,68485378,255,18350338, @@ -20,8 +20,8 @@ CELL ngaImage[] = { 1793,19295,19743,19787,202301,410,382,1242,1535,0,10,1,10,2, 101777669,1,17565186,107,524545,111,64,167838467,-1,134287105,3,59,659457,3,459023,128,2049,56,25,2049, 128,1793,135,2049,135,117506307,0,128,0,524545,26,133,168820993,0,147,1642241,147,134283523,11,133, 1793,128,524545,2049,128,1793,128,16846593,147,161,178,1793,64,16846593,147,133,178,1793,64,7, - 10,659713,1,659713,2,659713,3,659713,4,659713,5,1793,19550,17108737,3,2,524559,128,2049,128, - 2049,128,524545,0,128,524545,0,128,2049,142,168820998,2,18531,1242,167841793,211,9,17826049,0,211, + 10,659713,1,659713,2,659713,3,659713,4,659713,5,1793,19587,17108737,3,2,524559,128,2049,128, + 2049,128,524545,0,128,524545,0,128,2049,142,168820998,2,18568,1242,167841793,211,9,17826049,0,211, 2,15,25,524546,188,134287105,212,116,2305,213,459023,221,134287361,212,216,659201,211,10,659969,7, 2049,56,25,17694978,58,237,9,84152833,48,319750404,236,117507601,239,184618754,45,25,16974851,-1,168886532,1, 134284289,1,252,134284289,0,239,660227,32,0,0,115,105,103,105,108,58,105,0,285278479,269, @@ -170,7 +170,7 @@ CELL ngaImage[] = { 1793,19295,19743,19787,202301,410,382,1242,1535,0,10,1,10,2, 110,58,105,110,99,0,659713,1,10,3114,3139,166,16180,266800217,110,58,100,101,99,0, 659969,1,10,3128,3158,166,16180,1032861494,110,58,98,101,116,119,101,101,110,63,0,67503109, 1793,3166,67503109,67503109,2049,3106,10,1,3161,2049,2241,11,10,3142,3187,166,16180,-2130983749,83,99, - 111,112,101,76,105,115,116,0,19645,19699,10,3172,3198,166,16180,5864091,123,123,0,2049, + 111,112,101,76,105,115,116,0,19682,19736,10,3172,3198,166,16180,5864091,123,123,0,2049, 1576,2,1,3187,2049,59,16,10,3190,3225,166,16180,-1644352334,45,45,45,114,101,118,101, 97,108,45,45,45,0,2049,1576,1,3187,2049,3125,16,10,3207,3241,166,16180,5864159,125, 125,0,1,3187,2049,56,4,15,11,1793,3255,3841,3187,4097,2,10,1,3250,1793,3281, @@ -937,67 +937,69 @@ CELL ngaImage[] = { 1793,19295,19743,19787,202301,410,382,1242,1535,0,10,1,10,2, 1,4,2049,18302,10,18443,18479,166,0,371289385,109,101,109,58,99,101,108,108,43,0, 1,4,19,17,10,18464,18506,166,0,84495120,109,101,109,58,102,101,116,99,104,45, 100,111,117,98,108,101,0,2049,2217,1,1,2049,18479,15,5,2049,18419,6,10,18484, - 18527,166,19314,193470948,84,73,66,0,1,7,15,10,18518,18547,166,19314,-460132687,105,109,97, - 103,101,58,115,97,118,101,0,1,1000,2049,10655,2049,10636,10,18531,18565,166,0,0, - 101,100,105,116,63,0,2,1793,18572,1,8,11,10,1,18568,1793,18580,1,127,11, - 10,1,18576,2049,2255,22,10,18554,18598,166,0,0,103,97,116,104,101,114,0,2049, - 18565,1,15,1,4134,2049,64,10,18586,18618,166,0,0,99,121,99,108,101,0,2049, - 10985,2049,2217,4,8,2049,2644,25,3,2049,18598,1,18618,7,10,18531,18651,166,19314,-1658019367, - 112,97,114,115,101,45,117,110,116,105,108,0,1793,18663,2049,4451,2049,4234,2049,18618, - 771,2049,4096,10,1,18653,2049,4260,10,18634,18679,166,19314,272733106,115,58,103,101,116,0, - 1793,18701,1793,18687,1,13,11,10,1,18683,1793,18695,1,10,11,10,1,18691,2049,2255, - 22,10,1,18681,2049,18651,10,18668,18717,166,19314,255552908,99,108,101,97,114,0,2049,4472, - 92,94,91,50,74,92,94,91,48,59,48,72,0,1,18719,2049,8246,2049,10761,10, - 18706,18751,154,19314,-976122143,78,111,69,99,104,111,0,0,18739,18761,154,0,0,69,79, - 84,0,0,18752,18776,154,0,0,73,103,110,111,114,105,110,103,0,0,18762,18792, - 166,0,0,105,103,110,111,114,105,110,103,63,0,3841,18776,10,18777,18808,166,0, - 0,118,101,114,115,105,111,110,0,3841,4,1,100,20,10,18795,18825,166,0,0, - 100,111,110,101,63,0,2,4097,18761,1793,18834,1,13,11,10,1,18830,1793,18842,1, - 10,11,10,1,18838,1793,18850,1,32,11,10,1,18846,2049,2298,22,22,10,18814,18867, - 166,0,0,101,111,108,63,0,3841,18761,1793,18875,1,13,11,10,1,18871,1793,18883, - 1,10,11,10,1,18879,2049,2255,22,10,18857,18901,166,0,0,118,97,108,105,100, - 63,0,2,2049,102,2049,2812,10,18889,18922,166,0,0,99,104,101,99,107,45,101, - 111,102,0,2,1793,18929,1,-1,11,10,1,18925,1793,18937,1,4,11,10,1,18933, - 2049,2255,22,1793,18947,2049,11052,10,1,18944,9,10,18907,18959,166,0,0,98,115,0, - 2049,4212,1,2,2049,2675,1793,18971,2049,4160,3,10,1,18967,9,2049,4160,3,10,18951, - 18992,166,0,0,99,104,101,99,107,45,98,115,0,2,1793,18999,1,8,11,10, - 1,18995,1793,19007,1,127,11,10,1,19003,2049,2255,22,1793,19017,2049,18959,10,1,19014, - 9,10,18978,19032,166,0,0,99,104,101,99,107,0,2049,18922,2049,18992,10,19021,19052, - 166,0,0,99,104,97,114,97,99,116,101,114,0,2049,10985,2,2049,4134,10,19037, - 19070,166,0,0,98,117,102,102,101,114,0,1793,19080,2049,18527,2049,4234,8,2049,4096, - 10,1,19072,2049,4260,10,19058,19101,166,0,0,114,101,97,100,45,116,111,107,101, - 110,0,1793,19117,1793,19112,2049,19052,2049,19032,2049,18825,10,1,19105,2049,2397,10,1,19103, - 2049,19070,2049,4587,10,19085,19135,166,0,0,105,110,112,117,116,0,2049,19101,2049,18901, - 10,19124,19153,166,0,0,112,114,111,99,101,115,115,0,2049,18792,1793,19171,771,2049, - 18867,1793,19167,1,18776,2049,3931,10,1,19162,9,10,1,19157,2049,2862,1,410,1,15, - 2049,64,10,18739,19190,178,19314,5861507,47,47,0,2049,15624,1,18776,2049,3916,10,19182,19209, - 166,19314,-208531877,98,97,110,110,101,114,0,2049,18808,2049,4472,82,69,84,82,79,32, - 49,50,32,40,37,110,46,37,110,41,92,110,0,1,19213,2049,8246,2049,10761,2049, - 10837,2049,1545,2049,10837,18,2049,1545,2049,4472,37,110,32,77,97,120,44,32,37,110, - 32,85,115,101,100,44,32,37,110,32,70,114,101,101,92,110,0,1,19249,2049, - 8246,2049,10761,10,19197,19295,166,19314,192495636,108,105,115,116,101,110,0,3841,18751,1793,19302, - 2049,19209,10,1,19299,2049,72,2049,19135,2049,19153,1,19306,7,10,105,110,116,101,114, - 102,97,99,101,47,114,101,116,114,111,45,117,110,105,120,46,114,101,116,114, - 111,0,19283,19354,154,0,0,83,111,117,114,99,101,115,0,1,19593,0,0,0, + 18540,166,0,1277424275,109,101,109,58,115,116,111,114,101,45,100,111,117,98,108,101, + 0,5,5,2049,2217,1,1,2049,18479,6,2049,18399,6,2049,18399,10,18518,18564,166,19351, + 193470948,84,73,66,0,1,7,15,10,18555,18584,166,19351,-460132687,105,109,97,103,101,58, + 115,97,118,101,0,1,1000,2049,10655,2049,10636,10,18568,18602,166,0,0,101,100,105, + 116,63,0,2,1793,18609,1,8,11,10,1,18605,1793,18617,1,127,11,10,1,18613, + 2049,2255,22,10,18591,18635,166,0,0,103,97,116,104,101,114,0,2049,18602,1,15, + 1,4134,2049,64,10,18623,18655,166,0,0,99,121,99,108,101,0,2049,10985,2049,2217, + 4,8,2049,2644,25,3,2049,18635,1,18655,7,10,18568,18688,166,19351,-1658019367,112,97,114, + 115,101,45,117,110,116,105,108,0,1793,18700,2049,4451,2049,4234,2049,18655,771,2049,4096, + 10,1,18690,2049,4260,10,18671,18716,166,19351,272733106,115,58,103,101,116,0,1793,18738,1793, + 18724,1,13,11,10,1,18720,1793,18732,1,10,11,10,1,18728,2049,2255,22,10,1, + 18718,2049,18688,10,18705,18754,166,19351,255552908,99,108,101,97,114,0,2049,4472,92,94,91, + 50,74,92,94,91,48,59,48,72,0,1,18756,2049,8246,2049,10761,10,18743,18788,154, + 19351,-976122143,78,111,69,99,104,111,0,0,18776,18798,154,0,0,69,79,84,0,0, + 18789,18813,154,0,0,73,103,110,111,114,105,110,103,0,0,18799,18829,166,0,0, + 105,103,110,111,114,105,110,103,63,0,3841,18813,10,18814,18845,166,0,0,118,101, + 114,115,105,111,110,0,3841,4,1,100,20,10,18832,18862,166,0,0,100,111,110, + 101,63,0,2,4097,18798,1793,18871,1,13,11,10,1,18867,1793,18879,1,10,11,10, + 1,18875,1793,18887,1,32,11,10,1,18883,2049,2298,22,22,10,18851,18904,166,0,0, + 101,111,108,63,0,3841,18798,1793,18912,1,13,11,10,1,18908,1793,18920,1,10,11, + 10,1,18916,2049,2255,22,10,18894,18938,166,0,0,118,97,108,105,100,63,0,2, + 2049,102,2049,2812,10,18926,18959,166,0,0,99,104,101,99,107,45,101,111,102,0, + 2,1793,18966,1,-1,11,10,1,18962,1793,18974,1,4,11,10,1,18970,2049,2255,22, + 1793,18984,2049,11052,10,1,18981,9,10,18944,18996,166,0,0,98,115,0,2049,4212,1, + 2,2049,2675,1793,19008,2049,4160,3,10,1,19004,9,2049,4160,3,10,18988,19029,166,0, + 0,99,104,101,99,107,45,98,115,0,2,1793,19036,1,8,11,10,1,19032,1793, + 19044,1,127,11,10,1,19040,2049,2255,22,1793,19054,2049,18996,10,1,19051,9,10,19015, + 19069,166,0,0,99,104,101,99,107,0,2049,18959,2049,19029,10,19058,19089,166,0,0, + 99,104,97,114,97,99,116,101,114,0,2049,10985,2,2049,4134,10,19074,19107,166,0, + 0,98,117,102,102,101,114,0,1793,19117,2049,18564,2049,4234,8,2049,4096,10,1,19109, + 2049,4260,10,19095,19138,166,0,0,114,101,97,100,45,116,111,107,101,110,0,1793, + 19154,1793,19149,2049,19089,2049,19069,2049,18862,10,1,19142,2049,2397,10,1,19140,2049,19107,2049, + 4587,10,19122,19172,166,0,0,105,110,112,117,116,0,2049,19138,2049,18938,10,19161,19190, + 166,0,0,112,114,111,99,101,115,115,0,2049,18829,1793,19208,771,2049,18904,1793,19204, + 1,18813,2049,3931,10,1,19199,9,10,1,19194,2049,2862,1,410,1,15,2049,64,10, + 18776,19227,178,19351,5861507,47,47,0,2049,15624,1,18813,2049,3916,10,19219,19246,166,19351,-208531877, + 98,97,110,110,101,114,0,2049,18845,2049,4472,82,69,84,82,79,32,49,50,32, + 40,37,110,46,37,110,41,92,110,0,1,19250,2049,8246,2049,10761,2049,10837,2049,1545, + 2049,10837,18,2049,1545,2049,4472,37,110,32,77,97,120,44,32,37,110,32,85,115, + 101,100,44,32,37,110,32,70,114,101,101,92,110,0,1,19286,2049,8246,2049,10761, + 10,19234,19332,166,19351,192495636,108,105,115,116,101,110,0,3841,18788,1793,19339,2049,19246,10, + 1,19336,2049,72,2049,19172,2049,19190,1,19343,7,10,105,110,116,101,114,102,97,99, + 101,47,114,101,116,114,111,45,117,110,105,120,46,114,101,116,114,111,0,19320, + 19391,154,0,0,83,111,117,114,99,101,115,0,1,19630,0,0,0,0,0,0, 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, - 0,0,0,19341,19494,166,0,0,107,110,111,119,110,63,0,2,1,19354,2049,9003, - 10,19482,19511,166,0,0,105,110,100,101,120,0,1,19354,4,2049,9320,1,19354,4, - 2049,9140,10,19500,19534,166,0,0,114,101,99,111,114,100,0,2049,4500,2,1,19354, - 2049,3864,3841,19354,1,19354,17,16,10,1793,19591,2049,15559,2049,19494,1793,19559,2049,19511,10, - 1,19556,1793,19566,2049,19534,10,1,19563,2049,64,1793,19579,1,190,1,2,17,8,10, - 1,19572,2049,2229,2049,1576,2049,184,16,2049,11116,10,1,19550,100,105,99,116,45,119, - 111,114,100,115,45,108,105,115,116,105,110,103,46,102,111,114,116,104,0,19283, - 19631,166,19593,-1519205998,100,58,119,111,114,100,115,0,1793,19640,2049,188,2049,10761,2049,10731, - 10,1,19633,2049,8491,10,19618,19663,166,19593,1750461083,100,58,119,111,114,100,115,45,119, - 105,116,104,0,2049,1977,2049,5573,1793,19694,2049,188,2,2049,1977,2049,5286,1793,19683,2049, - 10761,2049,10731,10,1,19678,1793,19689,3,10,1,19687,2049,64,10,1,19669,2049,8491,10, - 19645,19720,166,19593,-1509196721,100,105,115,112,108,97,121,45,105,102,45,108,101,102,116, - 0,2,2049,1977,2049,5519,1793,19732,2049,10761,2049,10731,10,1,19727,1793,19738,3,10,1, - 19736,2049,64,10,19645,19771,166,19593,-1159574567,100,58,119,111,114,100,115,45,98,101,103, - 105,110,110,105,110,103,45,119,105,116,104,0,2049,1977,2049,5573,1793,19782,2049,188, - 2049,19720,10,1,19777,2049,8491,10,0 }; + 19378,19531,166,0,0,107,110,111,119,110,63,0,2,1,19391,2049,9003,10,19519,19548, + 166,0,0,105,110,100,101,120,0,1,19391,4,2049,9320,1,19391,4,2049,9140,10, + 19537,19571,166,0,0,114,101,99,111,114,100,0,2049,4500,2,1,19391,2049,3864,3841, + 19391,1,19391,17,16,10,1793,19628,2049,15559,2049,19531,1793,19596,2049,19548,10,1,19593,1793, + 19603,2049,19571,10,1,19600,2049,64,1793,19616,1,190,1,2,17,8,10,1,19609,2049, + 2229,2049,1576,2049,184,16,2049,11116,10,1,19587,100,105,99,116,45,119,111,114,100, + 115,45,108,105,115,116,105,110,103,46,102,111,114,116,104,0,19320,19668,166,19630, + -1519205998,100,58,119,111,114,100,115,0,1793,19677,2049,188,2049,10761,2049,10731,10,1,19670, + 2049,8491,10,19655,19700,166,19630,1750461083,100,58,119,111,114,100,115,45,119,105,116,104, + 0,2049,1977,2049,5573,1793,19731,2049,188,2,2049,1977,2049,5286,1793,19720,2049,10761,2049,10731, + 10,1,19715,1793,19726,3,10,1,19724,2049,64,10,1,19706,2049,8491,10,19682,19757,166, + 19630,-1509196721,100,105,115,112,108,97,121,45,105,102,45,108,101,102,116,0,2,2049, + 1977,2049,5519,1793,19769,2049,10761,2049,10731,10,1,19764,1793,19775,3,10,1,19773,2049,64, + 10,19682,19808,166,19630,-1159574567,100,58,119,111,114,100,115,45,98,101,103,105,110,110, + 105,110,103,45,119,105,116,104,0,2049,1977,2049,5573,1793,19819,2049,188,2049,19757,10, + 1,19814,2049,8491,10,0 };