P3 256 256 255 0 255 64 1 255 64 2 255 64 3 255 64 4 255 64 5 255 64 6 255 64 7 255 64 8 255 64 9 255 64 10 255 64 11 255 64 12 255 64 13 255 64 14 255 64 15 255 64 16 255 64 17 255 64 18 255 64 19 255 64 20 255 64 21 255 64 22 255 64 23 255 64 24 255 64 25 255 64 26 255 64 27 255 64 28 255 64 29 255 64 30 255 64 31 255 64 32 255 64 33 255 64 34 255 64 35 255 64 36 255 64 37 255 64 38 255 64 39 255 64 40 255 64 41 255 64 42 255 64 43 255 64 44 255 64 45 255 64 46 255 64 47 255 64 48 255 64 49 255 64 50 255 64 51 255 64 52 255 64 53 255 64 54 255 64 55 255 64 56 255 64 57 255 64 58 255 64 59 255 64 60 255 64 61 255 64 62 255 64 63 255 64 64 255 64 65 255 64 66 255 64 67 255 64 68 255 64 69 255 64 70 255 64 71 255 64 72 255 64 73 255 64 74 255 64 75 255 64 76 255 64 77 255 64 78 255 64 79 255 64 80 255 64 81 255 64 82 255 64 83 255 64 84 255 64 85 255 64 86 255 64 87 255 64 88 255 64 89 255 64 90 255 64 91 255 64 92 255 64 93 255 64 94 255 64 95 255 64 96 255 64 97 255 64 98 255 64 99 255 64 100 255 64 101 255 64 102 255 64 103 255 64 104 255 64 105 255 64 106 255 64 107 255 64 108 255 64 109 255 64 110 255 64 111 255 64 112 255 64 113 255 64 114 255 64 115 255 64 116 255 64 117 255 64 118 255 64 119 255 64 120 255 64 121 255 64 122 255 64 123 255 64 124 255 64 125 255 64 126 255 64 127 255 64 128 255 64 129 255 64 130 255 64 131 255 64 132 255 64 133 255 64 134 255 64 135 255 64 136 255 64 137 255 64 138 255 64 139 255 64 140 255 64 141 255 64 142 255 64 143 255 64 144 255 64 145 255 64 146 255 64 147 255 64 148 255 64 149 255 64 150 255 64 151 255 64 152 255 64 153 255 64 154 255 64 155 255 64 156 255 64 157 255 64 158 255 64 159 255 64 160 255 64 161 255 64 162 255 64 163 255 64 164 255 64 165 255 64 166 255 64 167 255 64 168 255 64 169 255 64 170 255 64 171 255 64 172 255 64 173 255 64 174 255 64 175 255 64 176 255 64 177 255 64 178 255 64 179 255 64 180 255 64 181 255 64 182 255 64 183 255 64 184 255 64 185 255 64 186 255 64 187 255 64 188 255 64 189 255 64 190 255 64 191 255 64 192 255 64 193 255 64 194 255 64 195 255 64 196 255 64 197 255 64 198 255 64 199 255 64 200 255 64 201 255 64 202 255 64 203 255 64 204 255 64 205 255 64 206 255 64 207 255 64 208 255 64 209 255 64 210 255 64 211 255 64 212 255 64 213 255 64 214 255 64 215 255 64 216 255 64 217 255 64 218 255 64 219 255 64 220 255 64 221 255 64 222 255 64 223 255 64 224 255 64 225 255 64 226 255 64 227 255 64 228 255 64 229 255 64 230 255 64 231 255 64 232 255 64 233 255 64 234 255 64 235 255 64 236 255 64 237 255 64 238 255 64 239 255 64 240 255 64 241 255 64 242 255 64 243 255 64 244 255 64 245 255 64 246 255 64 247 255 64 248 255 64 249 255 64 250 255 64 251 255 64 252 255 64 253 255 64 254 255 64 255 255 64 0 254 64 1 254 64 2 254 64 3 254 64 4 254 64 5 254 64 6 254 64 7 254 64 8 254 64 9 254 64 10 254 64 11 254 64 12 254 64 13 254 64 14 254 64 15 254 64 16 254 64 17 254 64 18 254 64 19 254 64 20 254 64 21 254 64 22 254 64 23 254 64 24 254 64 25 254 64 26 254 64 27 254 64 28 254 64 29 254 64 30 254 64 31 254 64 32 254 64 33 254 64 34 254 64 35 254 64 36 254 64 37 254 64 38 254 64 39 254 64 40 254 64 41 254 64 42 254 64 43 254 64 44 254 64 45 254 64 46 254 64 47 254 64 48 254 64 49 254 64 50 254 64 51 254 64 52 254 64 53 254 64 54 254 64 55 254 64 56 254 64 57 254 64 58 254 64 59 254 64 60 254 64 61 254 64 62 254 64 63 254 64 64 254 64 65 254 64 66 254 64 67 254 64 68 254 64 69 254 64 70 254 64 71 254 64 72 254 64 73 254 64 74 254 64 75 254 64 76 254 64 77 254 64 78 254 64 79 254 64 80 254 64 81 254 64 82 254 64 83 254 64 84 254 64 85 254 64 86 254 64 87 254 64 88 254 64 89 254 64 90 254 64 91 254 64 92 254 64 93 254 64 94 254 64 95 254 64 96 254 64 97 254 64 98 254 64 99 254 64 100 254 64 101 254 64 102 254 64 103 254 64 104 254 64 105 254 64 106 254 64 107 254 64 108 254 64 109 254 64 110 254 64 111 254 64 112 254 64 113 254 64 114 254 64 115 254 64 116 254 64 117 254 64 118 254 64 119 254 64 120 254 64 121 254 64 122 254 64 123 254 64 124 254 64 125 254 64 126 254 64 127 254 64 128 254 64 129 254 64 130 254 64 131 254 64 132 254 64 133 254 64 134 254 64 135 254 64 136 254 64 137 254 64 138 254 64 139 254 64 140 254 64 141 254 64 142 254 64 143 254 64 144 254 64 145 254 64 146 254 64 147 254 64 148 254 64 149 254 64 150 254 64 151 254 64 152 254 64 153 254 64 154 254 64 155 254 64 156 254 64 157 254 64 158 254 64 159 254 64 160 254 64 161 254 64 162 254 64 163 254 64 164 254 64 165 254 64 166 254 64 167 254 64 168 254 64 169 254 64 170 254 64 171 254 64 172 254 64 173 254 64 174 254 64 175 254 64 176 254 64 177 254 64 178 254 64 179 254 64 180 254 64 181 254 64 182 254 64 183 254 64 184 254 64 185 254 64 186 254 64 187 254 64 188 254 64 189 254 64 190 254 64 191 254 64 192 254 64 193 254 64 194 254 64 195 254 64 196 254 64 197 254 64 198 254 64 199 254 64 200 254 64 201 254 64 202 254 64 203 254 64 204 254 64 205 254 64 206 254 64 207 254 64 208 254 64 209 254 64 210 254 64 211 254 64 212 254 64 213 254 64 214 254 64 215 254 64 216 254 64 217 254 64 218 254 64 219 254 64 220 254 64 221 254 64 222 254 64 223 254 64 224 254 64 225 254 64 226 254 64 227 254 64 228 254 64 229 254 64 230 254 64 231 254 64 232 254 64 233 254 64 234 254 64 235 254 64 236 254 64 237 254 64 238 254 64 239 254 64 240 254 64 241 254 64 242 254 64 243 254 64 244 254 64 245 254 64 246 254 64 247 254 64 248 254 64 249 254 64 250 254 64 251 254 64 252 254 64 253 254 64 254 254 64 255 254 64 0 253 64 1 253 64 2 253 64 3 253 64 4 253 64 5 253 64 6 253 64 7 253 64 8 253 64 9 253 64 10 253 64 11 253 64 12 253 64 13 253 64 14 253 64 15 253 64 16 253 64 17 253 64 18 253 64 19 253 64 20 253 64 21 253 64 22 253 64 23 253 64 24 253 64 25 253 64 26 253 64 27 253 64 28 253 64 29 253 64 30 253 64 31 253 64 32 253 64 33 253 64 34 253 64 35 253 64 36 253 64 37 253 64 38 253 64 39 253 64 40 253 64 41 253 64 42 253 64 43 253 64 44 253 64 45 253 64 46 253 64 47 253 64 48 253 64 49 253 64 50 253 64 51 253 64 52 253 64 53 253 64 54 253 64 55 253 64 56 253 64 57 253 64 58 253 64 59 253 64 60 253 64 61 253 64 62 253 64 63 253 64 64 253 64 65 253 64 66 253 64 67 253 64 68 253 64 69 253 64 70 253 64 71 253 64 72 253 64 73 253 64 74 253 64 75 253 64 76 253 64 77 253 64 78 253 64 79 253 64 80 253 64 81 253 64 82 253 64 83 253 64 84 253 64 85 253 64 86 253 64 87 253 64 88 253 64 89 253 64 90 253 64 91 253 64 92 253 64 93 253 64 94 253 64 95 253 64 96 253 64 97 253 64 98 253 64 99 253 64 100 253 64 101 253 64 102 253 64 103 253 64 104 253 64 105 253 64 106 253 64 107 253 64 108 253 64 109 253 64 110 253 64 111 253 64 112 253 64 113 253 64 114 253 64 115 253 64 116 253 64 117 253 64 118 253 64 119 253 64 120 253 64 121 253 64 122 253 64 123 253 64 124 253 64 125 253 64 126 253 64 127 253 64 128 253 64 129 253 64 130 253 64 131 253 64 132 253 64 133 253 64 134 253 64 135 253 64 136 253 64 137 253 64 138 253 64 139 253 64 140 253 64 141 253 64 142 253 64 143 253 64 144 253 64 145 253 64 146 253 64 147 253 64 148 253 64 149 253 64 150 253 64 151 253 64 152 253 64 153 253 64 154 253 64 155 253 64 156 253 64 157 253 64 158 253 64 159 253 64 160 253 64 161 253 64 162 253 64 163 253 64 164 253 64 165 253 64 166 253 64 167 253 64 168 253 64 169 253 64 170 253 64 171 253 64 172 253 64 173 253 64 174 253 64 175 253 64 176 253 64 177 253 64 178 253 64 179 253 64 180 253 64 181 253 64 182 253 64 183 253 64 184 253 64 185 253 64 186 253 64 187 253 64 188 253 64 189 253 64 190 253 64 191 253 64 192 253 64 193 253 64 194 253 64 195 253 64 196 253 64 197 253 64 198 253 64 199 253 64 200 253 64 201 253 64 202 253 64 203 253 64 204 253 64 205 253 64 206 253 64 207 253 64 208 253 64 209 253 64 210 253 64 211 253 64 212 253 64 213 253 64 214 253 64 215 253 64 216 253 64 217 253 64 218 253 64 219 253 64 220 253 64 221 253 64 222 253 64 223 253 64 224 253 64 225 253 64 226 253 64 227 253 64 228 253 64 229 253 64 230 253 64 231 253 64 232 253 64 233 253 64 234 253 64 235 253 64 236 253 64 237 253 64 238 253 64 239 253 64 240 253 64 241 253 64 242 253 64 243 253 64 244 253 64 245 253 64 246 253 64 247 253 64 248 253 64 249 253 64 250 253 64 251 253 64 252 253 64 253 253 64 254 253 64 255 253 64 0 252 64 1 252 64 2 252 64 3 252 64 4 252 64 5 252 64 6 252 64 7 252 64 8 252 64 9 252 64 10 252 64 11 252 64 12 252 64 13 252 64 14 252 64 15 252 64 16 252 64 17 252 64 18 252 64 19 252 64 20 252 64 21 252 64 22 252 64 23 252 64 24 252 64 25 252 64 26 252 64 27 252 64 28 252 64 29 252 64 30 252 64 31 252 64 32 252 64 33 252 64 34 252 64 35 252 64 36 252 64 37 252 64 38 252 64 39 252 64 40 252 64 41 252 64 42 252 64 43 252 64 44 252 64 45 252 64 46 252 64 47 252 64 48 252 64 49 252 64 50 252 64 51 252 64 52 252 64 53 252 64 54 252 64 55 252 64 56 252 64 57 252 64 58 252 64 59 252 64 60 252 64 61 252 64 62 252 64 63 252 64 64 252 64 65 252 64 66 252 64 67 252 64 68 252 64 69 252 64 70 252 64 71 252 64 72 252 64 73 252 64 74 252 64 75 252 64 76 252 64 77 252 64 78 252 64 79 252 64 80 252 64 81 252 64 82 252 64 83 252 64 84 252 64 85 252 64 86 252 64 87 252 64 88 252 64 89 252 64 90 252 64 91 252 64 92 252 64 93 252 64 94 252 64 95 252 64 96 252 64 97 252 64 98 252 64 99 252 64 100 252 64 101 252 64 102 252 64 103 252 64 104 252 64 105 252 64 106 252 64 107 252 64 108 252 64 109 252 64 110 252 64 111 252 64 112 252 64 113 252 64 114 252 64 115 252 64 116 252 64 117 252 64 118 252 64 119 252 64 120 252 64 121 252 64 122 252 64 123 252 64 124 252 64 125 252 64 126 252 64 127 252 64 128 252 64 129 252 64 130 252 64 131 252 64 132 252 64 133 252 64 134 252 64 135 252 64 136 252 64 137 252 64 138 252 64 139 252 64 140 252 64 141 252 64 142 252 64 143 252 64 144 252 64 145 252 64 146 252 64 147 252 64 148 252 64 149 252 64 150 252 64 151 252 64 152 252 64 153 252 64 154 252 64 155 252 64 156 252 64 157 252 64 158 252 64 159 252 64 160 252 64 161 252 64 162 252 64 163 252 64 164 252 64 165 252 64 166 252 64 167 252 64 168 252 64 169 252 64 170 252 64 171 252 64 172 252 64 173 252 64 174 252 64 175 252 64 176 252 64 177 252 64 178 252 64 179 252 64 180 252 64 181 252 64 182 252 64 183 252 64 184 252 64 185 252 64 186 252 64 187 252 64 188 252 64 189 252 64 190 252 64 191 252 64 192 252 64 193 252 64 194 252 64 195 252 64 196 252 64 197 252 64 198 252 64 199 252 64 200 252 64 201 252 64 202 252 64 203 252 64 204 252 64 205 252 64 206 252 64 207 252 64 208 252 64 209 252 64 210 252 64 211 252 64 212 252 64 213 252 64 214 252 64 215 252 64 216 252 64 217 252 64 218 252 64 219 252 64 220 252 64 221 252 64 222 252 64 223 252 64 224 252 64 225 252 64 226 252 64 227 252 64 228 252 64 229 252 64 230 252 64 231 252 64 232 252 64 233 252 64 234 252 64 235 252 64 236 252 64 237 252 64 238 252 64 239 252 64 240 252 64 241 252 64 242 252 64 243 252 64 244 252 64 245 252 64 246 252 64 247 252 64 248 252 64 249 252 64 250 252 64 251 252 64 252 252 64 253 252 64 254 252 64 255 252 64 0 251 64 1 251 64 2 251 64 3 251 64 4 251 64 5 251 64 6 251 64 7 251 64 8 251 64 9 251 64 10 251 64 11 251 64 12 251 64 13 251 64 14 251 64 15 251 64 16 251 64 17 251 64 18 251 64 19 251 64 20 251 64 21 251 64 22 251 64 23 251 64 24 251 64 25 251 64 26 251 64 27 251 64 28 251 64 29 251 64 30 251 64 31 251 64 32 251 64 33 251 64 34 251 64 35 251 64 36 251 64 37 251 64 38 251 64 39 251 64 40 251 64 41 251 64 42 251 64 43 251 64 44 251 64 45 251 64 46 251 64 47 251 64 48 251 64 49 251 64 50 251 64 51 251 64 52 251 64 53 251 64 54 251 64 55 251 64 56 251 64 57 251 64 58 251 64 59 251 64 60 251 64 61 251 64 62 251 64 63 251 64 64 251 64 65 251 64 66 251 64 67 251 64 68 251 64 69 251 64 70 251 64 71 251 64 72 251 64 73 251 64 74 251 64 75 251 64 76 251 64 77 251 64 78 251 64 79 251 64 80 251 64 81 251 64 82 251 64 83 251 64 84 251 64 85 251 64 86 251 64 87 251 64 88 251 64 89 251 64 90 251 64 91 251 64 92 251 64 93 251 64 94 251 64 95 251 64 96 251 64 97 251 64 98 251 64 99 251 64 100 251 64 101 251 64 102 251 64 103 251 64 104 251 64 105 251 64 106 251 64 107 251 64 108 251 64 109 251 64 110 251 64 111 251 64 112 251 64 113 251 64 114 251 64 115 251 64 116 251 64 117 251 64 118 251 64 119 251 64 120 251 64 121 251 64 122 251 64 123 251 64 124 251 64 125 251 64 126 251 64 127 251 64 128 251 64 129 251 64 130 251 64 131 251 64 132 251 64 133 251 64 134 251 64 135 251 64 136 251 64 137 251 64 138 251 64 139 251 64 140 251 64 141 251 64 142 251 64 143 251 64 144 251 64 145 251 64 146 251 64 147 251 64 148 251 64 149 251 64 150 251 64 151 251 64 152 251 64 153 251 64 154 251 64 155 251 64 156 251 64 157 251 64 158 251 64 159 251 64 160 251 64 161 251 64 162 251 64 163 251 64 164 251 64 165 251 64 166 251 64 167 251 64 168 251 64 169 251 64 170 251 64 171 251 64 172 251 64 173 251 64 174 251 64 175 251 64 176 251 64 177 251 64 178 251 64 179 251 64 180 251 64 181 251 64 182 251 64 183 251 64 184 251 64 185 251 64 186 251 64 187 251 64 188 251 64 189 251 64 190 251 64 191 251 64 192 251 64 193 251 64 194 251 64 195 251 64 196 251 64 197 251 64 198 251 64 199 251 64 200 251 64 201 251 64 202 251 64 203 251 64 204 251 64 205 251 64 206 251 64 207 251 64 208 251 64 209 251 64 210 251 64 211 251 64 212 251 64 213 251 64 214 251 64 215 251 64 216 251 64 217 251 64 218 251 64 219 251 64 220 251 64 221 251 64 222 251 64 223 251 64 224 251 64 225 251 64 226 251 64 227 251 64 228 251 64 229 251 64 230 251 64 231 251 64 232 251 64 233 251 64 234 251 64 235 251 64 236 251 64 237 251 64 238 251 64 239 251 64 240 251 64 241 251 64 242 251 64 243 251 64 244 251 64 245 251 64 246 251 64 247 251 64 248 251 64 249 251 64 250 251 64 251 251 64 252 251 64 253 251 64 254 251 64 255 251 64 0 250 64 1 250 64 2 250 64 3 250 64 4 250 64 5 250 64 6 250 64 7 250 64 8 250 64 9 250 64 10 250 64 11 250 64 12 250 64 13 250 64 14 250 64 15 250 64 16 250 64 17 250 64 18 250 64 19 250 64 20 250 64 21 250 64 22 250 64 23 250 64 24 250 64 25 250 64 26 250 64 27 250 64 28 250 64 29 250 64 30 250 64 31 250 64 32 250 64 33 250 64 34 250 64 35 250 64 36 250 64 37 250 64 38 250 64 39 250 64 40 250 64 41 250 64 42 250 64 43 250 64 44 250 64 45 250 64 46 250 64 47 250 64 48 250 64 49 250 64 50 250 64 51 250 64 52 250 64 53 250 64 54 250 64 55 250 64 56 250 64 57 250 64 58 250 64 59 250 64 60 250 64 61 250 64 62 250 64 63 250 64 64 250 64 65 250 64 66 250 64 67 250 64 68 250 64 69 250 64 70 250 64 71 250 64 72 250 64 73 250 64 74 250 64 75 250 64 76 250 64 77 250 64 78 250 64 79 250 64 80 250 64 81 250 64 82 250 64 83 250 64 84 250 64 85 250 64 86 250 64 87 250 64 88 250 64 89 250 64 90 250 64 91 250 64 92 250 64 93 250 64 94 250 64 95 250 64 96 250 64 97 250 64 98 250 64 99 250 64 100 250 64 101 250 64 102 250 64 103 250 64 104 250 64 105 250 64 106 250 64 107 250 64 108 250 64 109 250 64 110 250 64 111 250 64 112 250 64 113 250 64 114 250 64 115 250 64 116 250 64 117 250 64 118 250 64 119 250 64 120 250 64 121 250 64 122 250 64 123 250 64 124 250 64 125 250 64 126 250 64 127 250 64 128 250 64 129 250 64 130 250 64 131 250 64 132 250 64 133 250 64 134 250 64 135 250 64 136 250 64 137 250 64 138 250 64 139 250 64 140 250 64 141 250 64 142 250 64 143 250 64 144 250 64 145 250 64 146 250 64 147 250 64 148 250 64 149 250 64 150 250 64 151 250 64 152 250 64 153 250 64 154 250 64 155 250 64 156 250 64 157 250 64 158 250 64 159 250 64 160 250 64 161 250 64 162 250 64 163 250 64 164 250 64 165 250 64 166 250 64 167 250 64 168 250 64 169 250 64 170 250 64 171 250 64 172 250 64 173 250 64 174 250 64 175 250 64 176 250 64 177 250 64 178 250 64 179 250 64 180 250 64 181 250 64 182 250 64 183 250 64 184 250 64 185 250 64 186 250 64 187 250 64 188 250 64 189 250 64 190 250 64 191 250 64 192 250 64 193 250 64 194 250 64 195 250 64 196 250 64 197 250 64 198 250 64 199 250 64 200 250 64 201 250 64 202 250 64 203 250 64 204 250 64 205 250 64 206 250 64 207 250 64 208 250 64 209 250 64 210 250 64 211 250 64 212 250 64 213 250 64 214 250 64 215 250 64 216 250 64 217 250 64 218 250 64 219 250 64 220 250 64 221 250 64 222 250 64 223 250 64 224 250 64 225 250 64 226 250 64 227 250 64 228 250 64 229 250 64 230 250 64 231 250 64 232 250 64 233 250 64 234 250 64 235 250 64 236 250 64 237 250 64 238 250 64 239 250 64 240 250 64 241 250 64 242 250 64 243 250 64 244 250 64 245 250 64 246 250 64 247 250 64 248 250 64 249 250 64 250 250 64 251 250 64 252 250 64 253 250 64 254 250 64 255 250 64 0 249 64 1 249 64 2 249 64 3 249 64 4 249 64 5 249 64 6 249 64 7 249 64 8 249 64 9 249 64 10 249 64 11 249 64 12 249 64 13 249 64 14 249 64 15 249 64 16 249 64 17 249 64 18 249 64 19 249 64 20 249 64 21 249 64 22 249 64 23 249 64 24 249 64 25 249 64 26 249 64 27 249 64 28 249 64 29 249 64 30 249 64 31 249 64 32 249 64 33 249 64 34 249 64 35 249 64 36 249 64 37 249 64 38 249 64 39 249 64 40 249 64 41 249 64 42 249 64 43 249 64 44 249 64 45 249 64 46 249 64 47 249 64 48 249 64 49 249 64 50 249 64 51 249 64 52 249 64 53 249 64 54 249 64 55 249 64 56 249 64 57 249 64 58 249 64 59 249 64 60 249 64 61 249 64 62 249 64 63 249 64 64 249 64 65 249 64 66 249 64 67 249 64 68 249 64 69 249 64 70 249 64 71 249 64 72 249 64 73 249 64 74 249 64 75 249 64 76 249 64 77 249 64 78 249 64 79 249 64 80 249 64 81 249 64 82 249 64 83 249 64 84 249 64 85 249 64 86 249 64 87 249 64 88 249 64 89 249 64 90 249 64 91 249 64 92 249 64 93 249 64 94 249 64 95 249 64 96 249 64 97 249 64 98 249 64 99 249 64 100 249 64 101 249 64 102 249 64 103 249 64 104 249 64 105 249 64 106 249 64 107 249 64 108 249 64 109 249 64 110 249 64 111 249 64 112 249 64 113 249 64 114 249 64 115 249 64 116 249 64 117 249 64 118 249 64 119 249 64 120 249 64 121 249 64 122 249 64 123 249 64 124 249 64 125 249 64 126 249 64 127 249 64 128 249 64 129 249 64 130 249 64 131 249 64 132 249 64 133 249 64 134 249 64 135 249 64 136 249 64 137 249 64 138 249 64 139 249 64 140 249 64 141 249 64 142 249 64 143 249 64 144 249 64 145 249 64 146 249 64 147 249 64 148 249 64 149 249 64 150 249 64 151 249 64 152 249 64 153 249 64 154 249 64 155 249 64 156 249 64 157 249 64 158 249 64 159 249 64 160 249 64 161 249 64 162 249 64 163 249 64 164 249 64 165 249 64 166 249 64 167 249 64 168 249 64 169 249 64 170 249 64 171 249 64 172 249 64 173 249 64 174 249 64 175 249 64 176 249 64 177 249 64 178 249 64 179 249 64 180 249 64 181 249 64 182 249 64 183 249 64 184 249 64 185 249 64 186 249 64 187 249 64 188 249 64 189 249 64 190 249 64 191 249 64 192 249 64 193 249 64 194 249 64 195 249 64 196 249 64 197 249 64 198 249 64 199 249 64 200 249 64 201 249 64 202 249 64 203 249 64 204 249 64 205 249 64 206 249 64 207 249 64 208 249 64 209 249 64 210 249 64 211 249 64 212 249 64 213 249 64 214 249 64 215 249 64 216 249 64 217 249 64 218 249 64 219 249 64 220 249 64 221 249 64 222 249 64 223 249 64 224 249 64 225 249 64 226 249 64 227 249 64 228 249 64 229 249 64 230 249 64 231 249 64 232 249 64 233 249 64 234 249 64 235 249 64 236 249 64 237 249 64 238 249 64 239 249 64 240 249 64 241 249 64 242 249 64 243 249 64 244 249 64 245 249 64 246 249 64 247 249 64 248 249 64 249 249 64 250 249 64 251 249 64 252 249 64 253 249 64 254 249 64 255 249 64 0 248 64 1 248 64 2 248 64 3 248 64 4 248 64 5 248 64 6 248 64 7 248 64 8 248 64 9 248 64 10 248 64 11 248 64 12 248 64 13 248 64 14 248 64 15 248 64 16 248 64 17 248 64 18 248 64 19 248 64 20 248 64 21 248 64 22 248 64 23 248 64 24 248 64 25 248 64 26 248 64 27 248 64 28 248 64 29 248 64 30 248 64 31 248 64 32 248 64 33 248 64 34 248 64 35 248 64 36 248 64 37 248 64 38 248 64 39 248 64 40 248 64 41 248 64 42 248 64 43 248 64 44 248 64 45 248 64 46 248 64 47 248 64 48 248 64 49 248 64 50 248 64 51 248 64 52 248 64 53 248 64 54 248 64 55 248 64 56 248 64 57 248 64 58 248 64 59 248 64 60 248 64 61 248 64 62 248 64 63 248 64 64 248 64 65 248 64 66 248 64 67 248 64 68 248 64 69 248 64 70 248 64 71 248 64 72 248 64 73 248 64 74 248 64 75 248 64 76 248 64 77 248 64 78 248 64 79 248 64 80 248 64 81 248 64 82 248 64 83 248 64 84 248 64 85 248 64 86 248 64 87 248 64 88 248 64 89 248 64 90 248 64 91 248 64 92 248 64 93 248 64 94 248 64 95 248 64 96 248 64 97 248 64 98 248 64 99 248 64 100 248 64 101 248 64 102 248 64 103 248 64 104 248 64 105 248 64 106 248 64 107 248 64 108 248 64 109 248 64 110 248 64 111 248 64 112 248 64 113 248 64 114 248 64 115 248 64 116 248 64 117 248 64 118 248 64 119 248 64 120 248 64 121 248 64 122 248 64 123 248 64 124 248 64 125 248 64 126 248 64 127 248 64 128 248 64 129 248 64 130 248 64 131 248 64 132 248 64 133 248 64 134 248 64 135 248 64 136 248 64 137 248 64 138 248 64 139 248 64 140 248 64 141 248 64 142 248 64 143 248 64 144 248 64 145 248 64 146 248 64 147 248 64 148 248 64 149 248 64 150 248 64 151 248 64 152 248 64 153 248 64 154 248 64 155 248 64 156 248 64 157 248 64 158 248 64 159 248 64 160 248 64 161 248 64 162 248 64 163 248 64 164 248 64 165 248 64 166 248 64 167 248 64 168 248 64 169 248 64 170 248 64 171 248 64 172 248 64 173 248 64 174 248 64 175 248 64 176 248 64 177 248 64 178 248 64 179 248 64 180 248 64 181 248 64 182 248 64 183 248 64 184 248 64 185 248 64 186 248 64 187 248 64 188 248 64 189 248 64 190 248 64 191 248 64 192 248 64 193 248 64 194 248 64 195 248 64 196 248 64 197 248 64 198 248 64 199 248 64 200 248 64 201 248 64 202 248 64 203 248 64 204 248 64 205 248 64 206 248 64 207 248 64 208 248 64 209 248 64 210 248 64 211 248 64 212 248 64 213 248 64 214 248 64 215 248 64 216 248 64 217 248 64 218 248 64 219 248 64 220 248 64 221 248 64 222 248 64 223 248 64 224 248 64 225 248 64 226 248 64 227 248 64 228 248 64 229 248 64 230 248 64 231 248 64 232 248 64 233 248 64 234 248 64 235 248 64 236 248 64 237 248 64 238 248 64 239 248 64 240 248 64 241 248 64 242 248 64 243 248 64 244 248 64 245 248 64 246 248 64 247 248 64 248 248 64 249 248 64 250 248 64 251 248 64 252 248 64 253 248 64 254 248 64 255 248 64 0 247 64 1 247 64 2 247 64 3 247 64 4 247 64 5 247 64 6 247 64 7 247 64 8 247 64 9 247 64 10 247 64 11 247 64 12 247 64 13 247 64 14 247 64 15 247 64 16 247 64 17 247 64 18 247 64 19 247 64 20 247 64 21 247 64 22 247 64 23 247 64 24 247 64 25 247 64 26 247 64 27 247 64 28 247 64 29 247 64 30 247 64 31 247 64 32 247 64 33 247 64 34 247 64 35 247 64 36 247 64 37 247 64 38 247 64 39 247 64 40 247 64 41 247 64 42 247 64 43 247 64 44 247 64 45 247 64 46 247 64 47 247 64 48 247 64 49 247 64 50 247 64 51 247 64 52 247 64 53 247 64 54 247 64 55 247 64 56 24
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01//EN" "http://www.w3.org/TR/html4/strict.dtd">
<html>
<head>
<meta http-equiv="content-type" content="text/html; charset=UTF-8">
<title>Mu - shell/cell.mu</title>
<meta name="Generator" content="Vim/8.1">
<meta name="plugin-version" content="vim8.1_v1">
<meta name="syntax" content="none">
<meta name="settings" content="number_lines,use_css,pre_wrap,no_foldcolumn,expand_tabs,line_ids,prevent_copy=">
<meta name="colorscheme" content="minimal-dark">
<style type="text/css">
<!--
pre { white-space: pre-wrap; font-family: monospace; color: #000000; background-color: #a8a8a8; }
body { font-size:12pt; font-family: monospace; color: #000000; background-color: #a8a8a8; }
a { color:inherit; }
* { font-size:12pt; font-size: 1em; }
.PreProc { color: #c000c0; }
.Special { color: #ff6060; }
.LineNr { }
.Constant { color: #008787; }
.Delimiter { color: #c000c0; }
.muFunction { color: #af5f00; text-decoration: underline; }
.muComment { color: #005faf; }
-->
</style>
<script type='text/javascript'>
<!--
/* function to open any folds containing a jumped-to line before jumping to it */
function JumpToLine()
{
var lineNum;
lineNum = window.location.hash;
lineNum = lineNum.substr(1); /* strip off '#' */
if (lineNum.indexOf('L') == -1) {
lineNum = 'L'+lineNum;
}
var lineElem = document.getElementById(lineNum);
/* Always jump to new location even if the line was hidden inside a fold, or
* we corrected the raw number to a line ID.
*/
if (lineElem) {
lineElem.scrollIntoView(true);
}
return true;
}
if ('onhashchange' in window) {
window.onhashchange = JumpToLine;
}
-->
</script>
</head>
<body onload='JumpToLine();'>
<a href='https://github.com/akkartik/mu/blob/main/shell/cell.mu'>https://github.com/akkartik/mu/blob/main/shell/cell.mu</a>
<pre id='vimCodeElement'>
<span id="L1" class="LineNr"> 1 </span><span class="PreProc">type</span> <a href='cell.mu.html#L1'>cell</a> <span class="Delimiter">{</span>
<span id="L2" class="LineNr"> 2 </span> <span class="PreProc">type</span>: int
<span id="L3" class="LineNr"> 3 </span> <span class="muComment"># type 0: pair; the unit of lists, trees, DAGS or graphs</span>
<span id="L4" class="LineNr"> 4 </span> left: (handle <a href='cell.mu.html#L1'>cell</a>)
<span id="L5" class="LineNr"> 5 </span> right: (handle <a href='cell.mu.html#L1'>cell</a>)
<span id="L6" class="LineNr"> 6 </span> <span class="muComment"># type 1: number</span>
<span id="L7" class="LineNr"> 7 </span> number-data: float
<span id="L8" class="LineNr"> 8 </span> <span class="muComment"># type 2: symbol</span>
<span id="L9" class="LineNr"> 9 </span> <span class="muComment"># type 3: stream</span>
<span id="L10" class="LineNr"> 10 </span> text-data: (handle stream byte)
<span id="L11" class="LineNr"> 11 </span> <span class="muComment"># type 4: primitive function</span>
<span id="L12" class="LineNr"> 12 </span> index-data: int
<span id="L13" class="LineNr"> 13 </span> <span class="muComment"># type 5: screen</span>
<span id="L14" class="LineNr"> 14 </span> screen-data: (handle <a href='../500fake-screen.mu.html#L14'>screen</a>)
<span id="L15" class="LineNr"> 15 </span> <span class="muComment"># type 6: keyboard</span>
<span id="L16" class="LineNr"> 16 </span> keyboard-data: (handle <a href='gap-buffer.mu.html#L3'>gap-buffer</a>)
<span id="L17" class="LineNr"> 17 </span> <span class="muComment"># TODO: array, (associative) table</span>
<span id="L18" class="LineNr"> 18 </span> <span class="muComment"># if you add types here, don't forget to update cell-isomorphic?</span>
<span id="L19" class="LineNr"> 19 </span><span class="Delimiter">}</span>
<span id="L20" class="LineNr"> 20 </span>
<span id="L21" class="LineNr"> 21 </span><span class="PreProc">fn</span> <span class="muFunction"><a href='cell.mu.html#L21'>allocate-symbol</a></span> _out: (addr handle <a href='cell.mu.html#L1'>cell</a>) <span class="Delimiter">{</span>
<span id="L22" class="LineNr"> 22 </span> <span class="PreProc">var</span> out/<span class="Constant">eax</span>: (addr handle <a href='cell.mu.html#L1'>cell</a>) <span class="Special"><-</span> copy _out
<span id="L23" class="LineNr"> 23 </span> <a href='../120allocate.subx.html#L43'>allocate</a> out
<span id="L24" class="LineNr"> 24 </span> <span class="PreProc">var</span> out-addr/<span class="Constant">eax</span>: (addr <a href='cell.mu.html#L1'>cell</a>) <span class="Special"><-</span> <a href='../120allocate.subx.html#L223'>lookup</a> *out
<span id="L25" class="LineNr"> 25 </span> <span class="PreProc">var</span> <span class="PreProc">type</span>/<span class="Constant">ecx</span>: (addr int) <span class="Special"><-</span> get out-addr, <span class="PreProc">type</span>
<span id="L26" class="LineNr"> 26 </span> copy-to *<span class="PreProc">type</span>, <span class="Constant">2</span>/symbol
<span id="L27" class="LineNr"> 27 </span> <span class="PreProc">var</span> dest-ah/<span class="Constant">eax</span>: (addr handle stream byte) <span class="Special"><-</span> get out-addr, text-data
<span id="L28" class="LineNr"> 28 </span> populate-stream dest-ah, <span class="Constant">0x40</span>/max-symbol-size
<span id="L29" class="LineNr"> 29 </span><span class="Delimiter">}</span>
<span id="L30" class="LineNr"> 30 </span>
<span id="L31" class="LineNr"> 31 </span><span class="PreProc">fn</span> <span class="muFunction"><a href='cell.mu.html#L31'>initialize-symbol</a></span> _out: (addr handle <a href='cell.mu.html#L1'>cell</a>), val: (addr array byte) <span class="Delimiter">{</span>
<span id="L32" class="LineNr"> 32 </span> <span class="PreProc">var</span> out/<span class="Constant">eax</span>: (addr handle <a href='cell.mu.html#L1'>cell</a>) <span class="Special"><-</span> copy _out
<span id="L33" class="LineNr"> 33 </span> <span class="PreProc">var</span> out-addr/<span class="Constant">eax</span>: (addr <a href='cell.mu.html#L1'>cell</a>) <span class="Special"><-</span> <a href='../120allocate.subx.html#L223'>lookup</a> *out
<span id="L34" class="LineNr"> 34 </span> <span class="PreProc">var</span> dest-ah/<span class="Constant">eax</span>: (addr handle stream byte) <span class="Special"><-</span> get out-addr, text-data
<span id="L35" class="LineNr"> 35 </span> <span class="PreProc">var</span> dest/<span class="Constant">eax</span>: (addr stream byte) <span class="Special"><-</span> <a href='../120allocate.subx.html#L223'>lookup</a> *dest-ah
<span id="L36" class="LineNr"> 36 </span> <a href='../108write.subx.html#L11'>write</a> dest, val
<span id="L37" class="LineNr"> 37 </span><span class="Delimiter">}</span>
<span id="L38" class="LineNr"> 38 </span>
<span id="L39" class="LineNr"> 39 </span><span class="PreProc">fn</span> <span class="muFunction"><a href='cell.mu.html#L39'>new-symbol</a></span> out: (addr handle <a href='cell.mu.html#L1'>cell</a>), val: (addr array byte) <span class="Delimiter">{</span>
<span id="L40" class="LineNr"> 40 </span> <a href='cell.mu.html#L21'>allocate-symbol</a> out
<span id="L41" class="LineNr"> 41 </span> <a href='cell.mu.html#L31'>initialize-symbol</a> out, val
<span id="L42" class="LineNr"> 42 </span><span class="Delimiter">}</span>
<span id="L43" class="LineNr"> 43 </span>
<span id="L44" class="LineNr"> 44 </span><span class="PreProc">fn</span> <span class="muFunction"><a href='cell.mu.html#L44'>symbol-equal?</a></span> _in: (addr <a href='cell.mu.html#L1'>cell</a>), name: (addr array byte)<span class="PreProc"> -> </span>_/<span class="Constant">eax</span>: boolean <span class="Delimiter">{</span>
<span id="L45" class="LineNr"> 45 </span> <span class="PreProc">var</span> in/<span class="Constant">esi</span>: (addr <a href='cell.mu.html#L1'>cell</a>) <span class="Special"><-</span> copy _in
<span id="L46" class="LineNr"> 46 </span> <span class="PreProc">var</span> in-type/<span class="Constant">eax</span>: (addr int) <span class="Special"><-</span> get in, <span class="PreProc">type</span>
<span id="L47" class="LineNr"> 47 </span> compare *in-type, <span class="Constant">2</span>/symbol
<span id="L48" class="LineNr"> 48 </span> <span class="Delimiter">{</span>
<span id="L49" class="LineNr"> 49 </span> <span class="PreProc">break-if-=</span>
<span id="L50" class="LineNr"> 50 </span> <span class="PreProc">return</span> <span class="Constant">0</span>/false
<span id="L51" class="LineNr"> 51 </span> <span class="Delimiter">}</span>
<span id="L52" class="LineNr"> 52 </span> <span class="PreProc">var</span> in-data-ah/<span class="Constant">eax</span>: (addr handle stream byte) <span class="Special"><-</span> get in, text-data
<span id="L53" class="LineNr"> 53 </span> <span class="PreProc">var</span> in-data/<span class="Constant">eax</span>: (addr stream byte) <span class="Special"><-</span> <a href='../120allocate.subx.html#L223'>lookup</a> *in-data-ah
<span id="L54" class="LineNr"> 54 </span> <span class="PreProc">var</span> result/<span class="Constant">eax</span>: boolean <span class="Special"><-</span> <a href='../109stream-equal.subx.html#L9'>stream-data-equal?</a> in-data, name
<span id="L55" class="LineNr"> 55 </span> <span class="PreProc">return</span> result
<span id="L56" class="LineNr"> 56 </span><span class="Delimiter">}</span>
<span id="L57" class="LineNr"> 57 </span>
<span id="L58" class="LineNr"> 58 </span><span class="PreProc">fn</span> <span class="muFunction"><a href='cell.mu.html#L58'>allocate-stream</a></span> _out: (addr handle <a href='cell.mu.html#L1'>cell</a>) <span class="Delimiter">{</span>
<span id="L59" class="LineNr"> 59 </span> <span class="PreProc">var</span> out/<span class="Constant">eax</span>: (addr handle <a href='cell.mu.html#L1'>cell</a>) <span class="Special"><-</span> copy _out
<span id="L60" class="LineNr"> 60 </span> <a href='../120allocate.subx.html#L43'>allocate</a> out
<span id="L61" class="LineNr"> 61 </span> <span class="PreProc">var</span> out-addr/<span class="Constant">eax</span>: (addr <a href='cell.mu.html#L1'>cell</a>) <span class="Special"><-</span> <a href='../120allocate.subx.html#L223'>lookup</a> *out
<span id="L62" class="LineNr"> 62 </span> <span class="PreProc">var</span> <span class="PreProc">type</span>/<span class="Constant">ecx</span>: (addr int) <span class="Special"><-</span> get out-addr, <span class="PreProc">type</span>
<span id="L63" class="LineNr"> 63 </span> copy-to *<span class="PreProc">type</span>, <span class="Constant">3</span>/stream
<span id="L64" class="LineNr"> 64 </span> <span class="PreProc">var</span> dest-ah/<span class="Constant">eax</span>: (addr handle stream byte) <span class="Special"><-</span> get out-addr, text-data
<span id="L65" class="LineNr"> 65 </span> populate-stream dest-ah, <span class="Constant">0x40</span>/max-stream-size
<span id="L66" class="LineNr"> 66 </span><span class="Delimiter">}</span>
<span id="L67" class="LineNr"> 67 </span>
<span id="L68" class="LineNr"> 68 </span><span class="PreProc">fn</span> <span class="muFunction"><a href='cell.mu.html#L68'>allocate-number</a></span> _out: (addr handle <a href='cell.mu.html#L1'>cell</a>) <span class="Delimiter">{</span>
<span id="L69" class="LineNr"> 69 </span> <span class="PreProc">var</span> out/<span class="Constant">eax</span>: (addr handle <a href='cell.mu.html#L1'>cell</a>) <span class="Special"><-</span> copy _out
<span id="L70" class="LineNr"> 70 </span> <a href='../120allocate.subx.html#L43'>allocate</a> out
<span id="L71" class="LineNr"> 71 </span> <span class="PreProc">var</span> out-addr/<span class="Constant">eax</span>: (addr <a href='cell.mu.html#L1'>cell</a>) <span class="Special"><-</span> <a href='../120allocate.subx.html#L223'>lookup</a> *out
<span id="L72" class="LineNr"> 72 </span> <span class="PreProc">var</span> <span class="PreProc">type</span>/<span class="Constant">ecx</span>: (addr int) <span class="Special"><-</span> get out-addr, <span class="PreProc">type</span>
<span id="L73" class="LineNr"> 73 </span> copy-to *<span class="PreProc">type</span>, <span class="Constant">1</span>/number
<span id="L74" class="LineNr"> 74 </span><span class="Delimiter">}</span>
<span id="L75" class="LineNr"> 75 </span>
<span id="L76" class="LineNr"> 76 </span><span class="PreProc">fn</span> <span class="muFunction"><a href='cell.mu.html#L76'>initialize-integer</a></span> _out: (addr handle <a href='cell.mu.html#L1'>cell</a>), n: int <span class="Delimiter">{</span>
<span id="L77" class="LineNr"> 77 </span> <span class="PreProc">var</span> out/<span class="Constant">eax</span>: (addr handle <a href='cell.mu.html#L1'>cell</a>) <span class="Special"><-</span> copy _out
<span id="L78" class="LineNr"> 78 </span> <span class="PreProc">var</span> out-addr/<span class="Constant">eax</span>: (addr <a href='cell.mu.html#L1'>cell</a>) <span class="Special"><-</span> <a href='../120allocate.subx.html#L223'>lookup</a> *out
<span id="L79" class="LineNr"> 79 </span> <span class="PreProc">var</span> dest-addr/<span class="Constant">eax</span>: (addr float) <span class="Special"><-</span> get out-addr, number-data
<span id="L80" class="LineNr"> 80 </span> <span class="PreProc">var</span> src/<span class="Constant">xmm0</span>: float <span class="Special"><-</span> convert n
<span id="L81" class="LineNr"> 81 </span> copy-to *dest-addr, src
<span id="L82" class="LineNr"> 82 </span><span class="Delimiter">}</span>
<span id="L83" class="LineNr"> 83 </span>
<span id="L84" class="LineNr"> 84 </span><span class="PreProc">fn</span> <span class="muFunction"><a href='cell.mu.html#L84'>new-integer</a></span> out: (addr handle <a href='cell.mu.html#L1'>cell</a>), n: int <span class="Delimiter">{</span>
<span id="L85" class="LineNr"> 85 </span> <a href='cell.mu.html#L68'>allocate-number</a> out
<span id="L86" class="LineNr"> 86 </span> <a href='cell.mu.html#L76'>initialize-integer</a> out, n
<span id="L87" class="LineNr"> 87 </span><span class="Delimiter">}</span>
<span id="L88" class="LineNr"> 88 </span>
<span id="L89" class="LineNr"> 89 </span><span class="PreProc">fn</span> <span class="muFunction"><a href='cell.mu.html#L89'>initialize-float</a></span> _out: (addr handle <a href='cell.mu.html#L1'>cell</a>), n: float <span class="Delimiter">{</span>
<span id="L90" class="LineNr"> 90 </span> <span class="PreProc">var</span> out/<span class="Constant">eax</span>: (addr handle <a href='cell.mu.html#L1'>cell</a>) <span class="Special"><-</span> copy _out
<span id="L91" class="LineNr"> 91 </span> <span class="PreProc">var</span> out-addr/<span class="Constant">eax</span>: (addr <a href='cell.mu.html#L1'>cell</a>) <span class="Special"><-</span> <a href='../120allocate.subx.html#L223'>lookup</a> *out
<span id="L92" class="LineNr"> 92 </span> <span class="PreProc">var</span> dest-ah/<span class="Constant">eax</span>: (addr float) <span class="Special"><-</span> get out-addr, number-data
<span id="L93" class="LineNr"> 93 </span> <span class="PreProc">var</span> src/<span class="Constant">xmm0</span>: float <span class="Special"><-</span> copy n
<span id="L94" class="LineNr"> 94 </span> copy-to *dest-ah, src
<span id="L95" class="LineNr"> 95 </span><span class="Delimiter">}</span>
<span id="L96" class="LineNr"> 96 </span>
<span id="L97" class="LineNr"> 97 </span><span class="PreProc">fn</span> <span class="muFunction"><a href='cell.mu.html#L97'>new-float</a></span> out: (addr handle <a href='cell.mu.html#L1'>cell</a>), n: float <span class="Delimiter">{</span>
<span id="L98" class="LineNr"> 98 </span> <a href='cell.mu.html#L68'>allocate-number</a> out
<span id="L99" class="LineNr"> 99 </span> <a href='cell.mu.html#L89'>initialize-float</a> out, n
<span id="L100" class="LineNr">100 </span><span class="Delimiter">}</span>
<span id="L101" class="LineNr">101 </span>
<span id="L102" class="LineNr">102 </span><span class="PreProc">fn</span> <span class="muFunction"><a href='cell.mu.html#L102'>allocate-pair</a></span> out: (addr handle <a href='cell.mu.html#L1'>cell</a>) <span class="Delimiter">{</span>
<span id="L103" class="LineNr">103 </span> <a href='../120allocate.subx.html#L43'>allocate</a> out
<span id="L104" class="LineNr">104 </span> <span class="muComment"># new cells have type pair by default</span>
<span id="L105" class="LineNr">105 </span><span class="Delimiter">}</span>
<span id="L106" class="LineNr">106 </span>
<span id="L107" class="LineNr">107 </span><span class="PreProc">fn</span> <span class="muFunction"><a href='cell.mu.html#L107'>initialize-pair</a></span> _out: (addr handle <a href='cell.mu.html#L1'>cell</a>), left: (handle <a href='cell.mu.html#L1'>cell</a>), right: (handle <a href='cell.mu.html#L1'>cell</a>) <span class="Delimiter">{</span>
<span id="L108" class="LineNr">108 </span> <span class="PreProc">var</span> out/<span class="Constant">eax</span>: (addr handle <a href='cell.mu.html#L1'>cell</a>) <span class="Special"><-</span> copy _out
<span id="L109" class="LineNr">109 </span> <span class="PreProc">var</span> out-addr/<span class="Constant">eax</span>: (addr <a href='cell.mu.html#L1'>cell</a>) <span class="Special"><-</span> <a href='../120allocate.subx.html#L223'>lookup</a> *out
<span id="L110" class="LineNr">110 </span> <span class="PreProc">var</span> dest-ah/<span class="Constant">ecx</span>: (addr handle <a href='cell.mu.html#L1'>cell</a>) <span class="Special"><-</span> get out-addr, left
<span id="L111" class="LineNr">111 </span> <a href='../120allocate.subx.html#L479'>copy-handle</a> left, dest-ah
<span id="L112" class="LineNr">112 </span> dest-ah <span class="Special"><-</span> get out-addr, right
<span id="L113" class="LineNr">113 </span> <a href='../120allocate.subx.html#L479'>copy-handle</a> right, dest-ah
<span id="L114" class="LineNr">114 </span><span class="Delimiter">}</span>
<span id="L115" class="LineNr">115 </span>
<span id="L116" class="LineNr">116 </span><span class="PreProc">fn</span> <span class="muFunction"><a href='cell.mu.html#L116'>new-pair</a></span> out: (addr handle <a href='cell.mu.html#L1'>cell</a>), left: (handle <a href='cell.mu.html#L1'>cell</a>), right: (handle <a href='cell.mu.html#L1'>cell</a>) <span class="Delimiter">{</span>
<span id="L117" class="LineNr">117 </span> <a href='cell.mu.html#L102'>allocate-pair</a> out
<span id="L118" class="LineNr">118 </span> <a href='cell.mu.html#L107'>initialize-pair</a> out, left, right
<span id="L119" class="LineNr">119 </span><span class="Delimiter">}</span>
<span id="L120" class="LineNr">120 </span>
<span id="L121" class="LineNr">121 </span><span class="PreProc">fn</span> <span class="muFunction"><a href='cell.mu.html#L121'>nil</a></span> out: (addr handle <a href='cell.mu.html#L1'>cell</a>) <span class="Delimiter">{</span>
<span id="L122" class="LineNr">122 </span> <a href='cell.mu.html#L102'>allocate-pair</a> out
<span id="L123" class="LineNr">123 </span><span class="Delimiter">}</span>
<span id="L124" class="LineNr">124 </span>
<span id="L125" class="LineNr">125 </span><span class="PreProc">fn</span> <span class="muFunction"><a href='cell.mu.html#L125'>allocate-primitive-function</a></span> _out: (addr handle <a href='cell.mu.html#L1'>cell</a>) <span class="Delimiter">{</span>
<span id="L126" class="LineNr">126 </span> <span class="PreProc">var</span> out/<span class="Constant">eax</span>: (addr handle <a href='cell.mu.html#L1'>cell</a>) <span class="Special"><-</span> copy _out
<span id="L127" class="LineNr">127 </span> <a href='../120allocate.subx.html#L43'>allocate</a> out
<span id="L128" class="LineNr">128 </span> <span class="PreProc">var</span> out-addr/<span class="Constant">eax</span>: (addr <a href='cell.mu.html#L1'>cell</a>) <span class="Special"><-</span> <a href='../120allocate.subx.html#L223'>lookup</a> *out
<span id="L129" class="LineNr">129 </span> <span class="PreProc">var</span> <span class="PreProc">type</span>/<span class="Constant">ecx</span>: (addr int) <span class="Special"><-</span> get out-addr, <span class="PreProc">type</span>
<span id="L130" class="LineNr">130 </span> copy-to *<span class="PreProc">type</span>, <span class="Constant">4</span>/primitive-function
<span id="L131" class="LineNr">131 </span><span class="Delimiter">}</span>
<span id="L132" class="LineNr">132 </span>
<span id="L133" class="LineNr">133 </span><span class="PreProc">fn</span> <span class="muFunction"><a href='cell.mu.html#L133'>initialize-primitive-function</a></span> _out: (addr handle <a href='cell.mu.html#L1'>cell</a>), n: int <span class="Delimiter">{</span>
<span id="L134" class="LineNr">134 </span> <span class="PreProc">var</span> out/<span class="Constant">eax</span>: (addr handle <a href='cell.mu.html#L1'>cell</a>) <span class="Special"><-</span> copy _out
<span id="L135" class="LineNr">135 </span> <span class="PreProc">var</span> out-addr/<span class="Constant">eax</span>: (addr <a href='cell.mu.html#L1'>cell</a>) <span class="Special"><-</span> <a href='../120allocate.subx.html#L223'>lookup</a> *out
<span id="L136" class="LineNr">136 </span> <span class="PreProc">var</span> dest-addr/<span class="Constant">eax</span>: (addr int) <span class="Special"><-</span> get out-addr, index-data
<span id="L137" class="LineNr">137 </span> <span class="PreProc">var</span> src/<span class="Constant">ecx</span>: int <span class="Special"><-</span> copy n
<span id="L138" class="LineNr">138 </span> copy-to *dest-addr, src
<span id="L139" class="LineNr">139 </span><span class="Delimiter">}</span>
<span id="L140" class="LineNr">140 </span>
<span id="L141" class="LineNr">141 </span><span class="PreProc">fn</span> <span class="muFunction"><a href='cell.mu.html#L141'>new-primitive-function</a></span> out: (addr handle <a href='cell.mu.html#L1'>cell</a>), n: int <span class="Delimiter">{</span>
<span id="L142" class="LineNr">142 </span> <a href='cell.mu.html#L125'>allocate-primitive-function</a> out
<span id="L143" class="LineNr">143 </span> <a href='cell.mu.html#L133'>initialize-primitive-function</a> out, n
<span id="L144" class="LineNr">144 </span><span class="Delimiter">}</span>
<span id="L145" class="LineNr">145 </span>
<span id="L146" class="LineNr">146 </span><span class="PreProc">fn</span> <span class="muFunction"><a href='cell.mu.html#L146'>allocate-screen</a></span> _out: (addr handle <a href='cell.mu.html#L1'>cell</a>) <span class="Delimiter">{</span>
<span id="L147" class="LineNr">147 </span> <span class="PreProc">var</span> out/<span class="Constant">eax</span>: (addr handle <a href='cell.mu.html#L1'>cell</a>) <span class="Special"><-</span> copy _out
<span id="L148" class="LineNr">148 </span> <a href='../120allocate.subx.html#L43'>allocate</a> out
<span id="L149" class="LineNr">149 </span> <span class="PreProc">var</span> out-addr/<span class="Constant">eax</span>: (addr <a href='cell.mu.html#L1'>cell</a>) <span class="Special"><-</span> <a href='../120allocate.subx.html#L223'>lookup</a> *out
<span id="L150" class="LineNr">150 </span> <span class="PreProc">var</span> <span class="PreProc">type</span>/<span class="Constant">ecx</span>: (addr int) <span class="Special"><-</span> get out-addr, <span class="PreProc">type</span>
<span id="L151" class="LineNr">151 </span> copy-to *<span class="PreProc">type</span>, <span class="Constant">5</span>/screen
<span id="L152" class="LineNr">152 </span><span class="Delimiter">}</span>
<span id="L153" class="LineNr">153 </span>
<span id="L154" class="LineNr">154 </span><span class="PreProc">fn</span> <span class="muFunction"><a href='cell.mu.html#L154'>new-fake-screen</a></span> _out: (addr handle <a href='cell.mu.html#L1'>cell</a>), width: int, height: int, pixel-graphics?: boolean <span class="Delimiter">{</span>
<span id="L155" class="LineNr">155 </span> <span class="PreProc">var</span> out/<span class="Constant">eax</span>: (addr handle <a href='cell.mu.html#L1'>cell</a>) <span class="Special"><-</span> copy _out
<span id="L156" class="LineNr">156 </span> <a href='cell.mu.html#L146'>allocate-screen</a> out
<span id="L157" class="LineNr">157 </span> <span class="PreProc">var</span> out-addr/<span class="Constant">eax</span>: (addr <a href='cell.mu.html#L1'>cell</a>) <span class="Special"><-</span> <a href='../120allocate.subx.html#L223'>lookup</a> *out
<span id="L158" class="LineNr">158 </span> <span class="PreProc">var</span> dest-ah/<span class="Constant">eax</span>: (addr handle <a href='../500fake-screen.mu.html#L14'>screen</a>) <span class="Special"><-</span> get out-addr, screen-data
<span id="L159" class="LineNr">159 </span> <a href='../120allocate.subx.html#L43'>allocate</a> dest-ah
<span id="L160" class="LineNr">160 </span> <span class="PreProc">var</span> dest-addr/<span class="Constant">eax</span>: (addr <a href='../500fake-screen.mu.html#L14'>screen</a>) <span class="Special"><-</span> <a href='../120allocate.subx.html#L223'>lookup</a> *dest-ah
<span id="L161" class="LineNr">161 </span> <a href='../500fake-screen.mu.html#L31'>initialize-screen</a> dest-addr, width, height, pixel-graphics?
<span id="L162" class="LineNr">162 </span><span class="Delimiter">}</span>
<span id="L163" class="LineNr">163 </span>
<span id="L164" class="LineNr">164 </span><span class="PreProc">fn</span> <span class="muFunction"><a href='cell.mu.html#L164'>clear-screen-cell</a></span> _self-ah: (addr handle <a href='cell.mu.html#L1'>cell</a>) <span class="Delimiter">{</span>
<span id="L165" class="LineNr">165 </span> <span class="PreProc">var</span> self-ah/<span class="Constant">eax</span>: (addr handle <a href='cell.mu.html#L1'>cell</a>) <span class="Special"><-</span> copy _self-ah
<span id="L166" class="LineNr">166 </span> <span class="PreProc">var</span> self/<span class="Constant">eax</span>: (addr <a href='cell.mu.html#L1'>cell</a>) <span class="Special"><-</span> <a href='../120allocate.subx.html#L223'>lookup</a> *self-ah
<span id="L167" class="LineNr">167 </span> compare self, <span class="Constant">0</span>
<span id="L168" class="LineNr">168 </span> <span class="Delimiter">{</span>
<span id="L169" class="LineNr">169 </span> <span class="PreProc">break-if-!=</span>
<span id="L170" class="LineNr">170 </span> <span class="PreProc">return</span>
<span id="L171" class="LineNr">171 </span> <span class="Delimiter">}</span>
<span id="L172" class="LineNr">172 </span> <span class="PreProc">var</span> screen-ah/<span class="Constant">eax</span>: (addr handle <a href='../500fake-screen.mu.html#L14'>screen</a>) <span class="Special"><-</span> get self, screen-data
<span id="L173" class="LineNr">173 </span> <span class="PreProc">var</span> <a href='../500fake-screen.mu.html#L14'>screen</a>/<span class="Constant">eax</span>: (addr <a href='../500fake-screen.mu.html#L14'>screen</a>) <span class="Special"><-</span> <a href='../120allocate.subx.html#L223'>lookup</a> *screen-ah
<span id="L174" class="LineNr">174 </span> <a href='../500fake-screen.mu.html#L231'>clear-screen</a> <a href='../500fake-screen.mu.html#L14'>screen</a>
<span id="L175" class="LineNr">175 </span><span class="Delimiter">}</span>
<span id="L176" class="LineNr">176 </span>
<span id="L177" class="LineNr">177 </span><span class="PreProc">fn</span> <span class="muFunction"><a href='cell.mu.html#L177'>allocate-keyboard</a></span> _out: (addr handle <a href='cell.mu.html#L1'>cell</a>) <span class="Delimiter">{</span>
<span id="L178" class="LineNr">178 </span> <span class="PreProc">var</span> out/<span class="Constant">eax</span>: (addr handle <a href='cell.mu.html#L1'>cell</a>) <span class="Special"><-</span> copy _out
<span id="L179" class="LineNr">179 </span> <a href='../120allocate.subx.html#L43'>allocate</a> out
<span id="L180" class="LineNr">180 </span> <span class="PreProc">var</span> out-addr/<span class="Constant">eax</span>: (addr <a href='cell.mu.html#L1'>cell</a>) <span class="Special"><-</span> <a href='../120allocate.subx.html#L223'>lookup</a> *out
<span id="L181" class="LineNr">181 </span> <span class="PreProc">var</span> <span class="PreProc">type</span>/<span class="Constant">ecx</span>: (addr int) <span class="Special"><-</span> get out-addr, <span class="PreProc">type</span>
<span id="L182" class="LineNr">182 </span> copy-to *<span class="PreProc">type</span>, <span class="Constant">6</span>/keyboard
<span id="L183" class="LineNr">183 </span><span class="Delimiter">}</span>
<span id="L184" class="LineNr">184 </span>
<span id="L185" class="LineNr">185 </span><span class="PreProc">fn</span> <span class="muFunction"><a href='cell.mu.html#L185'>new-fake-keyboard</a></span> _out: (addr handle <a href='cell.mu.html#L1'>cell</a>), capacity: int <span class="Delimiter">{</span>
<span id="L186" class="LineNr">186 </span> <span class="PreProc">var</span> out/<span class="Constant">eax</span>: (addr handle <a href='cell.mu.html#L1'>cell</a>) <span class="Special"><-</span> copy _out
<span id="L187" class="LineNr">187 </span> <a href='cell.mu.html#L177'>allocate-keyboard</a> out
<span id="L188" class="LineNr">188 </span> <span class="PreProc">var</span> out-addr/<span class="Constant">eax</span>: (addr <a href='cell.mu.html#L1'>cell</a>) <span class="Special"><-</span> <a href='../120allocate.subx.html#L223'>lookup</a> *out
<span id="L189" class="LineNr">189 </span> <span class="PreProc">var</span> dest-ah/<span class="Constant">eax</span>: (addr handle <a href='gap-buffer.mu.html#L3'>gap-buffer</a>) <span class="Special"><-</span> get out-addr, keyboard-data
<span id="L190" class="LineNr">190 </span> <a href='../120allocate.subx.html#L43'>allocate</a> dest-ah
<span id="L191" class="LineNr">191 </span> <span class="PreProc">var</span> dest-addr/<span class="Constant">eax</span>: (addr <a href='gap-buffer.mu.html#L3'>gap-buffer</a>) <span class="Special"><-</span> <a href='../120allocate.subx.html#L223'>lookup</a> *dest-ah
<span id="L192" class="LineNr">192 </span> <a href='gap-buffer.mu.html#L11'>initialize-gap-buffer</a> dest-addr, capacity
<span id="L193" class="LineNr">193 </span><span class="Delimiter">}</span>
<span id="L194" class="LineNr">194 </span>
<span id="L195" class="LineNr">195 </span><span class="PreProc">fn</span> <span class="muFunction"><a href='cell.mu.html#L195'>rewind-keyboard-cell</a></span> _self-ah: (addr handle <a href='cell.mu.html#L1'>cell</a>) <span class="Delimiter">{</span>
<span id="L196" class="LineNr">196 </span> <span class="PreProc">var</span> self-ah/<span class="Constant">eax</span>: (addr handle <a href='cell.mu.html#L1'>cell</a>) <span class="Special"><-</span> copy _self-ah
<span id="L197" class="LineNr">197 </span> <span class="PreProc">var</span> self/<span class="Constant">eax</span>: (addr <a href='cell.mu.html#L1'>cell</a>) <span class="Special"><-</span> <a href='../120allocate.subx.html#L223'>lookup</a> *self-ah
<span id="L198" class="LineNr">198 </span> compare self, <span class="Constant">0</span>
<span id="L199" class="LineNr">199 </span> <span class="Delimiter">{</span>
<span id="L200" class="LineNr">200 </span> <span class="PreProc">break-if-!=</span>
<span id="L201" class="LineNr">201 </span> <span class="PreProc">return</span>
<span id="L202" class="LineNr">202 </span> <span class="Delimiter">}</span>
<span id="L203" class="LineNr">203 </span> <span class="PreProc">var</span> keyboard-ah/<span class="Constant">eax</span>: (addr handle <a href='gap-buffer.mu.html#L3'>gap-buffer</a>) <span class="Special"><-</span> get self, keyboard-data
<span id="L204" class="LineNr">204 </span> <span class="PreProc">var</span> keyboard/<span class="Constant">eax</span>: (addr <a href='gap-buffer.mu.html#L3'>gap-buffer</a>) <span class="Special"><-</span> <a href='../120allocate.subx.html#L223'>lookup</a> *keyboard-ah
<span id="L205" class="LineNr">205 </span> <a href='gap-buffer.mu.html#L749'>rewind-gap-buffer</a> keyboard
<span id="L206" class="LineNr">206 </span><span class="Delimiter">}</span>
</pre>
</body>
</html>
<!-- vim: set foldmethod=manual : -->