annotate docs/lyx/emu.lyx @ 42:792da050d8c4 tip

more dox
author james <jb302@eecs.qmul.ac.uk>
date Tue, 22 Apr 2014 14:25:14 +0100
parents a9bf262f557b
children
rev   line source
jb302@37 1 #LyX 2.0 created this file. For more info see http://www.lyx.org/
jb302@37 2 \lyxformat 413
jb302@37 3 \begin_document
jb302@37 4 \begin_header
jb302@37 5 \textclass article
jb302@37 6 \begin_preamble
jb302@37 7 \usepackage[export]{adjustbox}% http://ctan.org/pkg/adjustbox
jb302@37 8 % Resize figures that are too wide for the page.
jb302@37 9 \let\oldincludegraphics\includegraphics
jb302@37 10 \renewcommand\includegraphics[2][]{%
jb302@37 11 \oldincludegraphics[#1,max width=\linewidth,max height=\textheight]{#2}
jb302@37 12 }
jb302@37 13 \end_preamble
jb302@37 14 \use_default_options true
jb302@37 15 \maintain_unincluded_children false
jb302@37 16 \language english
jb302@37 17 \language_package default
jb302@37 18 \inputencoding auto
jb302@37 19 \fontencoding global
jb302@37 20 \font_roman default
jb302@37 21 \font_sans default
jb302@37 22 \font_typewriter default
jb302@37 23 \font_default_family default
jb302@37 24 \use_non_tex_fonts false
jb302@37 25 \font_sc false
jb302@37 26 \font_osf false
jb302@37 27 \font_sf_scale 100
jb302@37 28 \font_tt_scale 100
jb302@37 29
jb302@37 30 \graphics default
jb302@37 31 \default_output_format default
jb302@37 32 \output_sync 0
jb302@37 33 \bibtex_command default
jb302@37 34 \index_command default
jb302@37 35 \paperfontsize default
jb302@37 36 \spacing single
jb302@37 37 \use_hyperref false
jb302@37 38 \papersize default
jb302@37 39 \use_geometry false
jb302@37 40 \use_amsmath 1
jb302@37 41 \use_esint 1
jb302@37 42 \use_mhchem 1
jb302@37 43 \use_mathdots 1
jb302@37 44 \cite_engine basic
jb302@37 45 \use_bibtopic false
jb302@37 46 \use_indices false
jb302@37 47 \paperorientation portrait
jb302@37 48 \suppress_date false
jb302@37 49 \use_refstyle 1
jb302@37 50 \index Index
jb302@37 51 \shortcut idx
jb302@37 52 \color #008000
jb302@37 53 \end_index
jb302@37 54 \secnumdepth 3
jb302@37 55 \tocdepth 3
jb302@37 56 \paragraph_separation indent
jb302@37 57 \paragraph_indentation default
jb302@37 58 \quotes_language english
jb302@37 59 \papercolumns 1
jb302@37 60 \papersides 1
jb302@37 61 \paperpagestyle default
jb302@37 62 \tracking_changes false
jb302@37 63 \output_changes false
jb302@37 64 \html_math_output 0
jb302@37 65 \html_css_as_file 0
jb302@37 66 \html_be_strict false
jb302@37 67 \end_header
jb302@37 68
jb302@37 69 \begin_body
jb302@37 70
jb302@37 71 \begin_layout Part
jb302@37 72 The Emulator
jb302@37 73 \end_layout
jb302@37 74
jb302@37 75 \begin_layout Section
jb302@37 76 Emulator Design
jb302@37 77 \end_layout
jb302@37 78
jb302@37 79 \begin_layout Standard
jb302@37 80 \begin_inset Graphics
jb302@37 81 filename /home/jmz/qm/ede/docs/img/emu/ELB816_system.svg
jb302@37 82 display false
jb302@37 83
jb302@37 84 \end_inset
jb302@37 85
jb302@37 86
jb302@37 87 \end_layout
jb302@37 88
jb302@37 89 \begin_layout Standard
jb302@37 90 Above is a block diagram of a micro-controller with the ELB816 micro-processor
jb302@37 91 at it's core.
jb302@37 92 This is taken from the original ELB816 specification.
jb302@37 93 Implementing a system similar to this as a piece of software is the goal
jb302@37 94 of this section of the project.
jb302@37 95 \end_layout
jb302@37 96
jb302@37 97 \begin_layout Subsection
jb302@37 98 Memory and Registers
jb302@37 99 \end_layout
jb302@37 100
jb302@37 101 \begin_layout Standard
jb302@37 102 \begin_inset ERT
jb302@37 103 status open
jb302@37 104
jb302@37 105 \begin_layout Plain Layout
jb302@37 106
jb302@37 107
jb302@37 108 \backslash
jb302@37 109 bigskip
jb302@37 110 \end_layout
jb302@37 111
jb302@37 112 \end_inset
jb302@37 113
jb302@37 114
jb302@37 115 \end_layout
jb302@37 116
jb302@37 117 \begin_layout Standard
jb302@37 118 \begin_inset Graphics
jb302@37 119 filename /home/jmz/qm/ede/docs/img/emu/memory.svg
jb302@37 120 display false
jb302@37 121
jb302@37 122 \end_inset
jb302@37 123
jb302@37 124
jb302@37 125 \end_layout
jb302@37 126
jb302@37 127 \begin_layout Standard
jb302@37 128 \begin_inset ERT
jb302@37 129 status open
jb302@37 130
jb302@37 131 \begin_layout Plain Layout
jb302@37 132
jb302@37 133
jb302@37 134 \backslash
jb302@37 135 bigskip
jb302@37 136 \end_layout
jb302@37 137
jb302@37 138 \end_inset
jb302@37 139
jb302@37 140
jb302@37 141 \end_layout
jb302@37 142
jb302@37 143 \begin_layout Standard
jb302@37 144 The micro-controller is based on a Von Neumann architecture and has:
jb302@37 145 \end_layout
jb302@37 146
jb302@37 147 \begin_layout Itemize
jb302@37 148 A single block of up to 64k byte addressable memory for storing both data
jb302@37 149 and code.
jb302@37 150 \end_layout
jb302@37 151
jb302@37 152 \begin_layout Itemize
jb302@37 153 Two banks of four 8-bit general purpose registers (R0 to R3).
jb302@37 154 \end_layout
jb302@37 155
jb302@37 156 \begin_layout Itemize
jb302@37 157 Four 16-bit content specific (PC, SP, DPTR and TMPA)
jb302@37 158 \end_layout
jb302@37 159
jb302@37 160 \begin_layout Itemize
jb302@37 161 Three 8-bit content specific registers (A, flags and IR)
jb302@37 162 \end_layout
jb302@37 163
jb302@37 164 \begin_layout Standard
jb302@37 165 The general purpose 8-bit registers and the 16-bit registers can exist as
jb302@37 166 a single sixteen byte block of memory spaces with the following encoding:
jb302@37 167 \end_layout
jb302@37 168
jb302@37 169 \begin_layout Standard
jb302@37 170 \begin_inset ERT
jb302@37 171 status open
jb302@37 172
jb302@37 173 \begin_layout Plain Layout
jb302@37 174
jb302@37 175
jb302@37 176 \backslash
jb302@37 177 bigskip
jb302@37 178 \end_layout
jb302@37 179
jb302@37 180 \end_inset
jb302@37 181
jb302@37 182
jb302@37 183 \end_layout
jb302@37 184
jb302@37 185 \begin_layout Standard
jb302@37 186 \begin_inset Tabular
jb302@37 187 <lyxtabular version="3" rows="10" columns="5">
jb302@37 188 <features tabularvalignment="middle">
jb302@37 189 <column alignment="center" valignment="top" width="0">
jb302@37 190 <column alignment="center" valignment="top" width="0">
jb302@37 191 <column alignment="center" valignment="top" width="0">
jb302@37 192 <column alignment="center" valignment="top" width="0">
jb302@37 193 <column alignment="center" valignment="top" width="0">
jb302@37 194 <row>
jb302@37 195 <cell alignment="center" valignment="top" topline="true" leftline="true" usebox="none">
jb302@37 196 \begin_inset Text
jb302@37 197
jb302@37 198 \begin_layout Plain Layout
jb302@37 199
jb302@37 200 \end_layout
jb302@37 201
jb302@37 202 \end_inset
jb302@37 203 </cell>
jb302@37 204 <cell alignment="center" valignment="top" topline="true" leftline="true" usebox="none">
jb302@37 205 \begin_inset Text
jb302@37 206
jb302@37 207 \begin_layout Plain Layout
jb302@37 208 MSB
jb302@37 209 \end_layout
jb302@37 210
jb302@37 211 \end_inset
jb302@37 212 </cell>
jb302@37 213 <cell alignment="center" valignment="top" topline="true" leftline="true" usebox="none">
jb302@37 214 \begin_inset Text
jb302@37 215
jb302@37 216 \begin_layout Plain Layout
jb302@37 217 MSB
jb302@37 218 \end_layout
jb302@37 219
jb302@37 220 \end_inset
jb302@37 221 </cell>
jb302@37 222 <cell alignment="center" valignment="top" topline="true" leftline="true" usebox="none">
jb302@37 223 \begin_inset Text
jb302@37 224
jb302@37 225 \begin_layout Plain Layout
jb302@37 226 Description
jb302@37 227 \end_layout
jb302@37 228
jb302@37 229 \end_inset
jb302@37 230 </cell>
jb302@37 231 <cell alignment="center" valignment="top" topline="true" leftline="true" rightline="true" usebox="none">
jb302@37 232 \begin_inset Text
jb302@37 233
jb302@37 234 \begin_layout Plain Layout
jb302@37 235
jb302@37 236 \end_layout
jb302@37 237
jb302@37 238 \end_inset
jb302@37 239 </cell>
jb302@37 240 </row>
jb302@37 241 <row>
jb302@37 242 <cell alignment="center" valignment="top" topline="true" bottomline="true" leftline="true" usebox="none">
jb302@37 243 \begin_inset Text
jb302@37 244
jb302@37 245 \begin_layout Plain Layout
jb302@37 246 LSB
jb302@37 247 \end_layout
jb302@37 248
jb302@37 249 \end_inset
jb302@37 250 </cell>
jb302@37 251 <cell alignment="center" valignment="top" topline="true" bottomline="true" leftline="true" usebox="none">
jb302@37 252 \begin_inset Text
jb302@37 253
jb302@37 254 \begin_layout Plain Layout
jb302@37 255 1
jb302@37 256 \end_layout
jb302@37 257
jb302@37 258 \end_inset
jb302@37 259 </cell>
jb302@37 260 <cell alignment="center" valignment="top" topline="true" bottomline="true" leftline="true" usebox="none">
jb302@37 261 \begin_inset Text
jb302@37 262
jb302@37 263 \begin_layout Plain Layout
jb302@37 264 0
jb302@37 265 \end_layout
jb302@37 266
jb302@37 267 \end_inset
jb302@37 268 </cell>
jb302@37 269 <cell alignment="center" valignment="top" topline="true" bottomline="true" leftline="true" usebox="none">
jb302@37 270 \begin_inset Text
jb302@37 271
jb302@37 272 \begin_layout Plain Layout
jb302@37 273
jb302@37 274 \end_layout
jb302@37 275
jb302@37 276 \end_inset
jb302@37 277 </cell>
jb302@37 278 <cell alignment="center" valignment="top" topline="true" bottomline="true" leftline="true" rightline="true" usebox="none">
jb302@37 279 \begin_inset Text
jb302@37 280
jb302@37 281 \begin_layout Plain Layout
jb302@37 282 User Accessible?
jb302@37 283 \end_layout
jb302@37 284
jb302@37 285 \end_inset
jb302@37 286 </cell>
jb302@37 287 </row>
jb302@37 288 <row>
jb302@37 289 <cell alignment="center" valignment="top" topline="true" leftline="true" usebox="none">
jb302@37 290 \begin_inset Text
jb302@37 291
jb302@37 292 \begin_layout Plain Layout
jb302@37 293 000
jb302@37 294 \end_layout
jb302@37 295
jb302@37 296 \end_inset
jb302@37 297 </cell>
jb302@37 298 <cell alignment="center" valignment="top" topline="true" leftline="true" usebox="none">
jb302@37 299 \begin_inset Text
jb302@37 300
jb302@37 301 \begin_layout Plain Layout
jb302@37 302 R0 bank 1
jb302@37 303 \end_layout
jb302@37 304
jb302@37 305 \end_inset
jb302@37 306 </cell>
jb302@37 307 <cell alignment="center" valignment="top" topline="true" leftline="true" usebox="none">
jb302@37 308 \begin_inset Text
jb302@37 309
jb302@37 310 \begin_layout Plain Layout
jb302@37 311 R0 bank 0
jb302@37 312 \end_layout
jb302@37 313
jb302@37 314 \end_inset
jb302@37 315 </cell>
jb302@37 316 <cell alignment="center" valignment="top" topline="true" leftline="true" usebox="none">
jb302@37 317 \begin_inset Text
jb302@37 318
jb302@37 319 \begin_layout Plain Layout
jb302@37 320 General Purpose
jb302@37 321 \end_layout
jb302@37 322
jb302@37 323 \end_inset
jb302@37 324 </cell>
jb302@37 325 <cell alignment="center" valignment="top" topline="true" leftline="true" rightline="true" usebox="none">
jb302@37 326 \begin_inset Text
jb302@37 327
jb302@37 328 \begin_layout Plain Layout
jb302@37 329 Yes
jb302@37 330 \end_layout
jb302@37 331
jb302@37 332 \end_inset
jb302@37 333 </cell>
jb302@37 334 </row>
jb302@37 335 <row>
jb302@37 336 <cell alignment="center" valignment="top" topline="true" leftline="true" usebox="none">
jb302@37 337 \begin_inset Text
jb302@37 338
jb302@37 339 \begin_layout Plain Layout
jb302@37 340 001
jb302@37 341 \end_layout
jb302@37 342
jb302@37 343 \end_inset
jb302@37 344 </cell>
jb302@37 345 <cell alignment="center" valignment="top" topline="true" leftline="true" usebox="none">
jb302@37 346 \begin_inset Text
jb302@37 347
jb302@37 348 \begin_layout Plain Layout
jb302@37 349 R1 bank 1
jb302@37 350 \end_layout
jb302@37 351
jb302@37 352 \end_inset
jb302@37 353 </cell>
jb302@37 354 <cell alignment="center" valignment="top" topline="true" leftline="true" usebox="none">
jb302@37 355 \begin_inset Text
jb302@37 356
jb302@37 357 \begin_layout Plain Layout
jb302@37 358 R1 bank 0
jb302@37 359 \end_layout
jb302@37 360
jb302@37 361 \end_inset
jb302@37 362 </cell>
jb302@37 363 <cell alignment="center" valignment="top" topline="true" leftline="true" usebox="none">
jb302@37 364 \begin_inset Text
jb302@37 365
jb302@37 366 \begin_layout Plain Layout
jb302@37 367 General Purpose
jb302@37 368 \end_layout
jb302@37 369
jb302@37 370 \end_inset
jb302@37 371 </cell>
jb302@37 372 <cell alignment="center" valignment="top" topline="true" leftline="true" rightline="true" usebox="none">
jb302@37 373 \begin_inset Text
jb302@37 374
jb302@37 375 \begin_layout Plain Layout
jb302@37 376 Yes
jb302@37 377 \end_layout
jb302@37 378
jb302@37 379 \end_inset
jb302@37 380 </cell>
jb302@37 381 </row>
jb302@37 382 <row>
jb302@37 383 <cell alignment="center" valignment="top" topline="true" leftline="true" usebox="none">
jb302@37 384 \begin_inset Text
jb302@37 385
jb302@37 386 \begin_layout Plain Layout
jb302@37 387 010
jb302@37 388 \end_layout
jb302@37 389
jb302@37 390 \end_inset
jb302@37 391 </cell>
jb302@37 392 <cell alignment="center" valignment="top" topline="true" leftline="true" usebox="none">
jb302@37 393 \begin_inset Text
jb302@37 394
jb302@37 395 \begin_layout Plain Layout
jb302@37 396 R2 bank 1
jb302@37 397 \end_layout
jb302@37 398
jb302@37 399 \end_inset
jb302@37 400 </cell>
jb302@37 401 <cell alignment="center" valignment="top" topline="true" leftline="true" usebox="none">
jb302@37 402 \begin_inset Text
jb302@37 403
jb302@37 404 \begin_layout Plain Layout
jb302@37 405 R2 bank 0
jb302@37 406 \end_layout
jb302@37 407
jb302@37 408 \end_inset
jb302@37 409 </cell>
jb302@37 410 <cell alignment="center" valignment="top" topline="true" leftline="true" usebox="none">
jb302@37 411 \begin_inset Text
jb302@37 412
jb302@37 413 \begin_layout Plain Layout
jb302@37 414 General Purpose
jb302@37 415 \end_layout
jb302@37 416
jb302@37 417 \end_inset
jb302@37 418 </cell>
jb302@37 419 <cell alignment="center" valignment="top" topline="true" leftline="true" rightline="true" usebox="none">
jb302@37 420 \begin_inset Text
jb302@37 421
jb302@37 422 \begin_layout Plain Layout
jb302@37 423 Yes
jb302@37 424 \end_layout
jb302@37 425
jb302@37 426 \end_inset
jb302@37 427 </cell>
jb302@37 428 </row>
jb302@37 429 <row>
jb302@37 430 <cell alignment="center" valignment="top" topline="true" leftline="true" usebox="none">
jb302@37 431 \begin_inset Text
jb302@37 432
jb302@37 433 \begin_layout Plain Layout
jb302@37 434 011
jb302@37 435 \end_layout
jb302@37 436
jb302@37 437 \end_inset
jb302@37 438 </cell>
jb302@37 439 <cell alignment="center" valignment="top" topline="true" leftline="true" usebox="none">
jb302@37 440 \begin_inset Text
jb302@37 441
jb302@37 442 \begin_layout Plain Layout
jb302@37 443 R3 bank 1
jb302@37 444 \end_layout
jb302@37 445
jb302@37 446 \end_inset
jb302@37 447 </cell>
jb302@37 448 <cell alignment="center" valignment="top" topline="true" leftline="true" usebox="none">
jb302@37 449 \begin_inset Text
jb302@37 450
jb302@37 451 \begin_layout Plain Layout
jb302@37 452 R3 bank 0
jb302@37 453 \end_layout
jb302@37 454
jb302@37 455 \end_inset
jb302@37 456 </cell>
jb302@37 457 <cell alignment="center" valignment="top" topline="true" leftline="true" usebox="none">
jb302@37 458 \begin_inset Text
jb302@37 459
jb302@37 460 \begin_layout Plain Layout
jb302@37 461 General Purpose
jb302@37 462 \end_layout
jb302@37 463
jb302@37 464 \end_inset
jb302@37 465 </cell>
jb302@37 466 <cell alignment="center" valignment="top" topline="true" leftline="true" rightline="true" usebox="none">
jb302@37 467 \begin_inset Text
jb302@37 468
jb302@37 469 \begin_layout Plain Layout
jb302@37 470 Yes
jb302@37 471 \end_layout
jb302@37 472
jb302@37 473 \end_inset
jb302@37 474 </cell>
jb302@37 475 </row>
jb302@37 476 <row>
jb302@37 477 <cell alignment="center" valignment="top" topline="true" leftline="true" usebox="none">
jb302@37 478 \begin_inset Text
jb302@37 479
jb302@37 480 \begin_layout Plain Layout
jb302@37 481 100
jb302@37 482 \end_layout
jb302@37 483
jb302@37 484 \end_inset
jb302@37 485 </cell>
jb302@37 486 <cell alignment="center" valignment="top" topline="true" leftline="true" usebox="none">
jb302@37 487 \begin_inset Text
jb302@37 488
jb302@37 489 \begin_layout Plain Layout
jb302@37 490 DPH
jb302@37 491 \end_layout
jb302@37 492
jb302@37 493 \end_inset
jb302@37 494 </cell>
jb302@37 495 <cell alignment="center" valignment="top" topline="true" leftline="true" usebox="none">
jb302@37 496 \begin_inset Text
jb302@37 497
jb302@37 498 \begin_layout Plain Layout
jb302@37 499 DPL
jb302@37 500 \end_layout
jb302@37 501
jb302@37 502 \end_inset
jb302@37 503 </cell>
jb302@37 504 <cell alignment="center" valignment="top" topline="true" leftline="true" usebox="none">
jb302@37 505 \begin_inset Text
jb302@37 506
jb302@37 507 \begin_layout Plain Layout
jb302@37 508 Data Pointer
jb302@37 509 \end_layout
jb302@37 510
jb302@37 511 \end_inset
jb302@37 512 </cell>
jb302@37 513 <cell alignment="center" valignment="top" topline="true" leftline="true" rightline="true" usebox="none">
jb302@37 514 \begin_inset Text
jb302@37 515
jb302@37 516 \begin_layout Plain Layout
jb302@37 517 Yes
jb302@37 518 \end_layout
jb302@37 519
jb302@37 520 \end_inset
jb302@37 521 </cell>
jb302@37 522 </row>
jb302@37 523 <row>
jb302@37 524 <cell alignment="center" valignment="top" topline="true" leftline="true" usebox="none">
jb302@37 525 \begin_inset Text
jb302@37 526
jb302@37 527 \begin_layout Plain Layout
jb302@37 528 101
jb302@37 529 \end_layout
jb302@37 530
jb302@37 531 \end_inset
jb302@37 532 </cell>
jb302@37 533 <cell alignment="center" valignment="top" topline="true" leftline="true" usebox="none">
jb302@37 534 \begin_inset Text
jb302@37 535
jb302@37 536 \begin_layout Plain Layout
jb302@37 537 SPH
jb302@37 538 \end_layout
jb302@37 539
jb302@37 540 \end_inset
jb302@37 541 </cell>
jb302@37 542 <cell alignment="center" valignment="top" topline="true" leftline="true" usebox="none">
jb302@37 543 \begin_inset Text
jb302@37 544
jb302@37 545 \begin_layout Plain Layout
jb302@37 546 SPL
jb302@37 547 \end_layout
jb302@37 548
jb302@37 549 \end_inset
jb302@37 550 </cell>
jb302@37 551 <cell alignment="center" valignment="top" topline="true" leftline="true" usebox="none">
jb302@37 552 \begin_inset Text
jb302@37 553
jb302@37 554 \begin_layout Plain Layout
jb302@37 555 Stack Pointer
jb302@37 556 \end_layout
jb302@37 557
jb302@37 558 \end_inset
jb302@37 559 </cell>
jb302@37 560 <cell alignment="center" valignment="top" topline="true" leftline="true" rightline="true" usebox="none">
jb302@37 561 \begin_inset Text
jb302@37 562
jb302@37 563 \begin_layout Plain Layout
jb302@37 564 Yes
jb302@37 565 \end_layout
jb302@37 566
jb302@37 567 \end_inset
jb302@37 568 </cell>
jb302@37 569 </row>
jb302@37 570 <row>
jb302@37 571 <cell alignment="center" valignment="top" topline="true" leftline="true" usebox="none">
jb302@37 572 \begin_inset Text
jb302@37 573
jb302@37 574 \begin_layout Plain Layout
jb302@37 575 110
jb302@37 576 \end_layout
jb302@37 577
jb302@37 578 \end_inset
jb302@37 579 </cell>
jb302@37 580 <cell alignment="center" valignment="top" topline="true" leftline="true" usebox="none">
jb302@37 581 \begin_inset Text
jb302@37 582
jb302@37 583 \begin_layout Plain Layout
jb302@37 584 PCH
jb302@37 585 \end_layout
jb302@37 586
jb302@37 587 \end_inset
jb302@37 588 </cell>
jb302@37 589 <cell alignment="center" valignment="top" topline="true" leftline="true" usebox="none">
jb302@37 590 \begin_inset Text
jb302@37 591
jb302@37 592 \begin_layout Plain Layout
jb302@37 593 PCL
jb302@37 594 \end_layout
jb302@37 595
jb302@37 596 \end_inset
jb302@37 597 </cell>
jb302@37 598 <cell alignment="center" valignment="top" topline="true" leftline="true" usebox="none">
jb302@37 599 \begin_inset Text
jb302@37 600
jb302@37 601 \begin_layout Plain Layout
jb302@37 602 Program Counter
jb302@37 603 \end_layout
jb302@37 604
jb302@37 605 \end_inset
jb302@37 606 </cell>
jb302@37 607 <cell alignment="center" valignment="top" topline="true" leftline="true" rightline="true" usebox="none">
jb302@37 608 \begin_inset Text
jb302@37 609
jb302@37 610 \begin_layout Plain Layout
jb302@37 611 No
jb302@37 612 \end_layout
jb302@37 613
jb302@37 614 \end_inset
jb302@37 615 </cell>
jb302@37 616 </row>
jb302@37 617 <row>
jb302@37 618 <cell alignment="center" valignment="top" topline="true" bottomline="true" leftline="true" usebox="none">
jb302@37 619 \begin_inset Text
jb302@37 620
jb302@37 621 \begin_layout Plain Layout
jb302@37 622 111
jb302@37 623 \end_layout
jb302@37 624
jb302@37 625 \end_inset
jb302@37 626 </cell>
jb302@37 627 <cell alignment="center" valignment="top" topline="true" bottomline="true" leftline="true" usebox="none">
jb302@37 628 \begin_inset Text
jb302@37 629
jb302@37 630 \begin_layout Plain Layout
jb302@37 631 TPH
jb302@37 632 \end_layout
jb302@37 633
jb302@37 634 \end_inset
jb302@37 635 </cell>
jb302@37 636 <cell alignment="center" valignment="top" topline="true" bottomline="true" leftline="true" usebox="none">
jb302@37 637 \begin_inset Text
jb302@37 638
jb302@37 639 \begin_layout Plain Layout
jb302@37 640 TPL
jb302@37 641 \end_layout
jb302@37 642
jb302@37 643 \end_inset
jb302@37 644 </cell>
jb302@37 645 <cell alignment="center" valignment="top" topline="true" bottomline="true" leftline="true" usebox="none">
jb302@37 646 \begin_inset Text
jb302@37 647
jb302@37 648 \begin_layout Plain Layout
jb302@37 649 Temp Address Register
jb302@37 650 \end_layout
jb302@37 651
jb302@37 652 \end_inset
jb302@37 653 </cell>
jb302@37 654 <cell alignment="center" valignment="top" topline="true" bottomline="true" leftline="true" rightline="true" usebox="none">
jb302@37 655 \begin_inset Text
jb302@37 656
jb302@37 657 \begin_layout Plain Layout
jb302@37 658 No
jb302@37 659 \end_layout
jb302@37 660
jb302@37 661 \end_inset
jb302@37 662 </cell>
jb302@37 663 </row>
jb302@37 664 </lyxtabular>
jb302@37 665
jb302@37 666 \end_inset
jb302@37 667
jb302@37 668
jb302@37 669 \end_layout
jb302@37 670
jb302@37 671 \begin_layout Standard
jb302@37 672 \begin_inset Newpage pagebreak
jb302@37 673 \end_inset
jb302@37 674
jb302@37 675
jb302@37 676 \end_layout
jb302@37 677
jb302@37 678 \begin_layout Standard
jb302@37 679 The 8-bit flag register can exist as a single byte with the following format:
jb302@37 680 \end_layout
jb302@37 681
jb302@37 682 \begin_layout Standard
jb302@37 683 \begin_inset ERT
jb302@37 684 status open
jb302@37 685
jb302@37 686 \begin_layout Plain Layout
jb302@37 687
jb302@37 688
jb302@37 689 \backslash
jb302@37 690 bigskip
jb302@37 691 \end_layout
jb302@37 692
jb302@37 693 \end_inset
jb302@37 694
jb302@37 695
jb302@37 696 \end_layout
jb302@37 697
jb302@37 698 \begin_layout Standard
jb302@37 699 \begin_inset Tabular
jb302@37 700 <lyxtabular version="3" rows="9" columns="3">
jb302@37 701 <features tabularvalignment="middle">
jb302@37 702 <column alignment="center" valignment="top" width="0">
jb302@37 703 <column alignment="center" valignment="top" width="0">
jb302@37 704 <column alignment="left" valignment="top" width="10cm">
jb302@37 705 <row>
jb302@37 706 <cell alignment="center" valignment="top" topline="true" bottomline="true" leftline="true" usebox="none">
jb302@37 707 \begin_inset Text
jb302@37 708
jb302@37 709 \begin_layout Plain Layout
jb302@37 710 Bit
jb302@37 711 \end_layout
jb302@37 712
jb302@37 713 \end_inset
jb302@37 714 </cell>
jb302@37 715 <cell alignment="center" valignment="top" topline="true" bottomline="true" leftline="true" usebox="none">
jb302@37 716 \begin_inset Text
jb302@37 717
jb302@37 718 \begin_layout Plain Layout
jb302@37 719 Flag
jb302@37 720 \end_layout
jb302@37 721
jb302@37 722 \end_inset
jb302@37 723 </cell>
jb302@37 724 <cell multicolumn="1" alignment="left" valignment="top" topline="true" bottomline="true" leftline="true" rightline="true" usebox="none">
jb302@37 725 \begin_inset Text
jb302@37 726
jb302@37 727 \begin_layout Plain Layout
jb302@37 728 Description
jb302@37 729 \end_layout
jb302@37 730
jb302@37 731 \end_inset
jb302@37 732 </cell>
jb302@37 733 </row>
jb302@37 734 <row>
jb302@37 735 <cell alignment="center" valignment="top" topline="true" leftline="true" usebox="none">
jb302@37 736 \begin_inset Text
jb302@37 737
jb302@37 738 \begin_layout Plain Layout
jb302@37 739 0
jb302@37 740 \end_layout
jb302@37 741
jb302@37 742 \end_inset
jb302@37 743 </cell>
jb302@37 744 <cell alignment="center" valignment="top" topline="true" leftline="true" usebox="none">
jb302@37 745 \begin_inset Text
jb302@37 746
jb302@37 747 \begin_layout Plain Layout
jb302@37 748 BS
jb302@37 749 \end_layout
jb302@37 750
jb302@37 751 \end_inset
jb302@37 752 </cell>
jb302@37 753 <cell alignment="left" valignment="top" topline="true" leftline="true" rightline="true" usebox="none">
jb302@37 754 \begin_inset Text
jb302@37 755
jb302@37 756 \begin_layout Plain Layout
jb302@37 757 User Accessible: Select register bank
jb302@37 758 \end_layout
jb302@37 759
jb302@37 760 \end_inset
jb302@37 761 </cell>
jb302@37 762 </row>
jb302@37 763 <row>
jb302@37 764 <cell alignment="center" valignment="top" topline="true" leftline="true" usebox="none">
jb302@37 765 \begin_inset Text
jb302@37 766
jb302@37 767 \begin_layout Plain Layout
jb302@37 768 1
jb302@37 769 \end_layout
jb302@37 770
jb302@37 771 \end_inset
jb302@37 772 </cell>
jb302@37 773 <cell alignment="center" valignment="top" topline="true" leftline="true" usebox="none">
jb302@37 774 \begin_inset Text
jb302@37 775
jb302@37 776 \begin_layout Plain Layout
jb302@37 777 IE
jb302@37 778 \end_layout
jb302@37 779
jb302@37 780 \end_inset
jb302@37 781 </cell>
jb302@37 782 <cell alignment="left" valignment="top" topline="true" leftline="true" rightline="true" usebox="none">
jb302@37 783 \begin_inset Text
jb302@37 784
jb302@37 785 \begin_layout Plain Layout
jb302@37 786 User Accessible: Enable Interrupts when 1
jb302@37 787 \end_layout
jb302@37 788
jb302@37 789 \end_inset
jb302@37 790 </cell>
jb302@37 791 </row>
jb302@37 792 <row>
jb302@37 793 <cell alignment="center" valignment="top" topline="true" leftline="true" usebox="none">
jb302@37 794 \begin_inset Text
jb302@37 795
jb302@37 796 \begin_layout Plain Layout
jb302@37 797 2
jb302@37 798 \end_layout
jb302@37 799
jb302@37 800 \end_inset
jb302@37 801 </cell>
jb302@37 802 <cell alignment="center" valignment="top" topline="true" leftline="true" usebox="none">
jb302@37 803 \begin_inset Text
jb302@37 804
jb302@37 805 \begin_layout Plain Layout
jb302@37 806 OV
jb302@37 807 \end_layout
jb302@37 808
jb302@37 809 \end_inset
jb302@37 810 </cell>
jb302@37 811 <cell alignment="left" valignment="top" topline="true" leftline="true" rightline="true" usebox="none">
jb302@37 812 \begin_inset Text
jb302@37 813
jb302@37 814 \begin_layout Plain Layout
jb302@37 815 Set to 1 when result of arithmetic operation has even parity
jb302@37 816 \end_layout
jb302@37 817
jb302@37 818 \end_inset
jb302@37 819 </cell>
jb302@37 820 </row>
jb302@37 821 <row>
jb302@37 822 <cell alignment="center" valignment="top" topline="true" leftline="true" usebox="none">
jb302@37 823 \begin_inset Text
jb302@37 824
jb302@37 825 \begin_layout Plain Layout
jb302@37 826 3
jb302@37 827 \end_layout
jb302@37 828
jb302@37 829 \end_inset
jb302@37 830 </cell>
jb302@37 831 <cell alignment="center" valignment="top" topline="true" leftline="true" usebox="none">
jb302@37 832 \begin_inset Text
jb302@37 833
jb302@37 834 \begin_layout Plain Layout
jb302@37 835 S
jb302@37 836 \end_layout
jb302@37 837
jb302@37 838 \end_inset
jb302@37 839 </cell>
jb302@37 840 <cell alignment="left" valignment="top" topline="true" leftline="true" rightline="true" usebox="none">
jb302@37 841 \begin_inset Text
jb302@37 842
jb302@37 843 \begin_layout Plain Layout
jb302@37 844 Set to 1 when result of arithmetic operation is negative
jb302@37 845 \end_layout
jb302@37 846
jb302@37 847 \end_inset
jb302@37 848 </cell>
jb302@37 849 </row>
jb302@37 850 <row>
jb302@37 851 <cell alignment="center" valignment="top" topline="true" leftline="true" usebox="none">
jb302@37 852 \begin_inset Text
jb302@37 853
jb302@37 854 \begin_layout Plain Layout
jb302@37 855 4
jb302@37 856 \end_layout
jb302@37 857
jb302@37 858 \end_inset
jb302@37 859 </cell>
jb302@37 860 <cell alignment="center" valignment="top" topline="true" leftline="true" usebox="none">
jb302@37 861 \begin_inset Text
jb302@37 862
jb302@37 863 \begin_layout Plain Layout
jb302@37 864 P
jb302@37 865 \end_layout
jb302@37 866
jb302@37 867 \end_inset
jb302@37 868 </cell>
jb302@37 869 <cell alignment="left" valignment="top" topline="true" leftline="true" rightline="true" usebox="none">
jb302@37 870 \begin_inset Text
jb302@37 871
jb302@37 872 \begin_layout Plain Layout
jb302@37 873 Set to 1 when result of arithmetic operation has even parity
jb302@37 874 \end_layout
jb302@37 875
jb302@37 876 \end_inset
jb302@37 877 </cell>
jb302@37 878 </row>
jb302@37 879 <row>
jb302@37 880 <cell alignment="center" valignment="top" topline="true" leftline="true" usebox="none">
jb302@37 881 \begin_inset Text
jb302@37 882
jb302@37 883 \begin_layout Plain Layout
jb302@37 884 5
jb302@37 885 \end_layout
jb302@37 886
jb302@37 887 \end_inset
jb302@37 888 </cell>
jb302@37 889 <cell alignment="center" valignment="top" topline="true" leftline="true" usebox="none">
jb302@37 890 \begin_inset Text
jb302@37 891
jb302@37 892 \begin_layout Plain Layout
jb302@37 893 AC
jb302@37 894 \end_layout
jb302@37 895
jb302@37 896 \end_inset
jb302@37 897 </cell>
jb302@37 898 <cell alignment="left" valignment="top" topline="true" leftline="true" rightline="true" usebox="none">
jb302@37 899 \begin_inset Text
jb302@37 900
jb302@37 901 \begin_layout Plain Layout
jb302@37 902 Set to 1 when result of arithmetic operation generates a carry or borrow
jb302@37 903 from bit 3
jb302@37 904 \end_layout
jb302@37 905
jb302@37 906 \end_inset
jb302@37 907 </cell>
jb302@37 908 </row>
jb302@37 909 <row>
jb302@37 910 <cell alignment="center" valignment="top" topline="true" leftline="true" usebox="none">
jb302@37 911 \begin_inset Text
jb302@37 912
jb302@37 913 \begin_layout Plain Layout
jb302@37 914 6
jb302@37 915 \end_layout
jb302@37 916
jb302@37 917 \end_inset
jb302@37 918 </cell>
jb302@37 919 <cell alignment="center" valignment="top" topline="true" leftline="true" usebox="none">
jb302@37 920 \begin_inset Text
jb302@37 921
jb302@37 922 \begin_layout Plain Layout
jb302@37 923 Z
jb302@37 924 \end_layout
jb302@37 925
jb302@37 926 \end_inset
jb302@37 927 </cell>
jb302@37 928 <cell alignment="left" valignment="top" topline="true" leftline="true" rightline="true" usebox="none">
jb302@37 929 \begin_inset Text
jb302@37 930
jb302@37 931 \begin_layout Plain Layout
jb302@37 932 Set to 1 when result of arithmetic operation is Zero
jb302@37 933 \end_layout
jb302@37 934
jb302@37 935 \end_inset
jb302@37 936 </cell>
jb302@37 937 </row>
jb302@37 938 <row>
jb302@37 939 <cell alignment="center" valignment="top" topline="true" bottomline="true" leftline="true" usebox="none">
jb302@37 940 \begin_inset Text
jb302@37 941
jb302@37 942 \begin_layout Plain Layout
jb302@37 943 7
jb302@37 944 \end_layout
jb302@37 945
jb302@37 946 \end_inset
jb302@37 947 </cell>
jb302@37 948 <cell alignment="center" valignment="top" topline="true" bottomline="true" leftline="true" usebox="none">
jb302@37 949 \begin_inset Text
jb302@37 950
jb302@37 951 \begin_layout Plain Layout
jb302@37 952 C
jb302@37 953 \end_layout
jb302@37 954
jb302@37 955 \end_inset
jb302@37 956 </cell>
jb302@37 957 <cell alignment="left" valignment="top" topline="true" bottomline="true" leftline="true" rightline="true" usebox="none">
jb302@37 958 \begin_inset Text
jb302@37 959
jb302@37 960 \begin_layout Plain Layout
jb302@37 961 User Accessible: Set to 1 when result of arithmetic operation generates
jb302@37 962 a carry or borrow from bit 7.
jb302@37 963 Used in rotate through carry operations
jb302@37 964 \end_layout
jb302@37 965
jb302@37 966 \end_inset
jb302@37 967 </cell>
jb302@37 968 </row>
jb302@37 969 </lyxtabular>
jb302@37 970
jb302@37 971 \end_inset
jb302@37 972
jb302@37 973
jb302@37 974 \end_layout
jb302@37 975
jb302@37 976 \begin_layout Standard
jb302@37 977 \begin_inset ERT
jb302@37 978 status open
jb302@37 979
jb302@37 980 \begin_layout Plain Layout
jb302@37 981
jb302@37 982
jb302@37 983 \backslash
jb302@37 984 bigskip
jb302@37 985 \end_layout
jb302@37 986
jb302@37 987 \end_inset
jb302@37 988
jb302@37 989
jb302@37 990 \end_layout
jb302@37 991
jb302@37 992 \begin_layout Standard
jb302@37 993 There is also an 8-bit accumulator register for storing the result of various
jb302@37 994 operations and an 8-bit instruction register for the storing the instruction
jb302@37 995 currently being executed.
jb302@37 996 \end_layout
jb302@37 997
jb302@37 998 \begin_layout Subsection
jb302@37 999 Control and Execution
jb302@37 1000 \end_layout
jb302@37 1001
jb302@37 1002 \begin_layout Standard
jb302@37 1003 The emulator needs to be controlled externally.
jb302@37 1004 This could be via a serial or a file buffer depending on the platform.
jb302@37 1005 \end_layout
jb302@37 1006
jb302@37 1007 \begin_layout Standard
jb302@37 1008 \begin_inset ERT
jb302@37 1009 status open
jb302@37 1010
jb302@37 1011 \begin_layout Plain Layout
jb302@37 1012
jb302@37 1013
jb302@37 1014 \backslash
jb302@37 1015 bigskip
jb302@37 1016 \end_layout
jb302@37 1017
jb302@37 1018 \end_inset
jb302@37 1019
jb302@37 1020
jb302@37 1021 \end_layout
jb302@37 1022
jb302@37 1023 \begin_layout Standard
jb302@37 1024 \begin_inset Graphics
jb302@37 1025 filename /home/jmz/qm/ede/docs/img/emu/controller.svg
jb302@37 1026 display false
jb302@37 1027
jb302@37 1028 \end_inset
jb302@37 1029
jb302@37 1030
jb302@37 1031 \end_layout
jb302@37 1032
jb302@37 1033 \begin_layout Standard
jb302@37 1034 \begin_inset ERT
jb302@37 1035 status open
jb302@37 1036
jb302@37 1037 \begin_layout Plain Layout
jb302@37 1038
jb302@37 1039
jb302@37 1040 \backslash
jb302@37 1041 bigskip
jb302@37 1042 \end_layout
jb302@37 1043
jb302@37 1044 \end_inset
jb302@37 1045
jb302@37 1046
jb302@37 1047 \end_layout
jb302@37 1048
jb302@37 1049 \begin_layout Standard
jb302@38 1050 \begin_inset Newpage pagebreak
jb302@38 1051 \end_inset
jb302@38 1052
jb302@38 1053
jb302@38 1054 \end_layout
jb302@38 1055
jb302@38 1056 \begin_layout Standard
jb302@37 1057 Below is a control protocol which allows and control of the emulators memory
jb302@37 1058 and execution.
jb302@37 1059 \end_layout
jb302@37 1060
jb302@37 1061 \begin_layout Standard
jb302@37 1062 \begin_inset ERT
jb302@37 1063 status open
jb302@37 1064
jb302@37 1065 \begin_layout Plain Layout
jb302@37 1066
jb302@37 1067
jb302@37 1068 \backslash
jb302@37 1069 bigskip
jb302@37 1070 \end_layout
jb302@37 1071
jb302@37 1072 \end_inset
jb302@37 1073
jb302@37 1074
jb302@37 1075 \end_layout
jb302@37 1076
jb302@37 1077 \begin_layout Standard
jb302@37 1078 \begin_inset Tabular
jb302@37 1079 <lyxtabular version="3" rows="15" columns="5">
jb302@37 1080 <features tabularvalignment="middle">
jb302@37 1081 <column alignment="center" valignment="top" width="0">
jb302@37 1082 <column alignment="left" valignment="top" width="2cm">
jb302@37 1083 <column alignment="center" valignment="top" width="1cm">
jb302@37 1084 <column alignment="center" valignment="top" width="1cm">
jb302@37 1085 <column alignment="center" valignment="top" width="3cm">
jb302@37 1086 <row>
jb302@37 1087 <cell alignment="center" valignment="top" topline="true" bottomline="true" leftline="true" usebox="none">
jb302@37 1088 \begin_inset Text
jb302@37 1089
jb302@37 1090 \begin_layout Plain Layout
jb302@37 1091 Function
jb302@37 1092 \end_layout
jb302@37 1093
jb302@37 1094 \end_inset
jb302@37 1095 </cell>
jb302@37 1096 <cell multicolumn="1" alignment="left" valignment="top" topline="true" bottomline="true" leftline="true" usebox="none">
jb302@37 1097 \begin_inset Text
jb302@37 1098
jb302@37 1099 \begin_layout Plain Layout
jb302@37 1100 Arguments
jb302@37 1101 \end_layout
jb302@37 1102
jb302@37 1103 \end_inset
jb302@37 1104 </cell>
jb302@37 1105 <cell alignment="center" valignment="top" topline="true" bottomline="true" leftline="true" usebox="none">
jb302@37 1106 \begin_inset Text
jb302@37 1107
jb302@37 1108 \begin_layout Plain Layout
jb302@37 1109 CMD byte
jb302@37 1110 \end_layout
jb302@37 1111
jb302@37 1112 \end_inset
jb302@37 1113 </cell>
jb302@37 1114 <cell alignment="center" valignment="top" topline="true" bottomline="true" leftline="true" usebox="none">
jb302@37 1115 \begin_inset Text
jb302@37 1116
jb302@37 1117 \begin_layout Plain Layout
jb302@37 1118 Length
jb302@37 1119 \end_layout
jb302@37 1120
jb302@37 1121 \end_inset
jb302@37 1122 </cell>
jb302@37 1123 <cell alignment="center" valignment="top" topline="true" bottomline="true" leftline="true" rightline="true" usebox="none">
jb302@37 1124 \begin_inset Text
jb302@37 1125
jb302@37 1126 \begin_layout Plain Layout
jb302@37 1127 Description
jb302@37 1128 \end_layout
jb302@37 1129
jb302@37 1130 \end_inset
jb302@37 1131 </cell>
jb302@37 1132 </row>
jb302@37 1133 <row>
jb302@37 1134 <cell alignment="center" valignment="top" topline="true" leftline="true" usebox="none">
jb302@37 1135 \begin_inset Text
jb302@37 1136
jb302@37 1137 \begin_layout Plain Layout
jb302@37 1138 step
jb302@37 1139 \end_layout
jb302@37 1140
jb302@37 1141 \end_inset
jb302@37 1142 </cell>
jb302@37 1143 <cell alignment="left" valignment="top" topline="true" leftline="true" usebox="none">
jb302@37 1144 \begin_inset Text
jb302@37 1145
jb302@37 1146 \begin_layout Plain Layout
jb302@37 1147 -
jb302@37 1148 \end_layout
jb302@37 1149
jb302@37 1150 \end_inset
jb302@37 1151 </cell>
jb302@37 1152 <cell alignment="center" valignment="top" topline="true" leftline="true" usebox="none">
jb302@37 1153 \begin_inset Text
jb302@37 1154
jb302@37 1155 \begin_layout Plain Layout
jb302@37 1156 0x00
jb302@37 1157 \end_layout
jb302@37 1158
jb302@37 1159 \end_inset
jb302@37 1160 </cell>
jb302@37 1161 <cell alignment="center" valignment="top" topline="true" leftline="true" usebox="none">
jb302@37 1162 \begin_inset Text
jb302@37 1163
jb302@37 1164 \begin_layout Plain Layout
jb302@37 1165 1
jb302@37 1166 \end_layout
jb302@37 1167
jb302@37 1168 \end_inset
jb302@37 1169 </cell>
jb302@37 1170 <cell alignment="center" valignment="top" topline="true" leftline="true" rightline="true" usebox="none">
jb302@37 1171 \begin_inset Text
jb302@37 1172
jb302@37 1173 \begin_layout Plain Layout
jb302@37 1174 Execute instruction at PC
jb302@37 1175 \end_layout
jb302@37 1176
jb302@37 1177 \end_inset
jb302@37 1178 </cell>
jb302@37 1179 </row>
jb302@37 1180 <row>
jb302@37 1181 <cell alignment="center" valignment="top" topline="true" leftline="true" usebox="none">
jb302@37 1182 \begin_inset Text
jb302@37 1183
jb302@37 1184 \begin_layout Plain Layout
jb302@37 1185 run
jb302@37 1186 \end_layout
jb302@37 1187
jb302@37 1188 \end_inset
jb302@37 1189 </cell>
jb302@37 1190 <cell alignment="left" valignment="top" topline="true" leftline="true" usebox="none">
jb302@37 1191 \begin_inset Text
jb302@37 1192
jb302@37 1193 \begin_layout Plain Layout
jb302@37 1194 -
jb302@37 1195 \end_layout
jb302@37 1196
jb302@37 1197 \end_inset
jb302@37 1198 </cell>
jb302@37 1199 <cell alignment="center" valignment="top" topline="true" leftline="true" usebox="none">
jb302@37 1200 \begin_inset Text
jb302@37 1201
jb302@37 1202 \begin_layout Plain Layout
jb302@37 1203 0x01
jb302@37 1204 \end_layout
jb302@37 1205
jb302@37 1206 \end_inset
jb302@37 1207 </cell>
jb302@37 1208 <cell alignment="center" valignment="top" topline="true" leftline="true" usebox="none">
jb302@37 1209 \begin_inset Text
jb302@37 1210
jb302@37 1211 \begin_layout Plain Layout
jb302@37 1212 1
jb302@37 1213 \end_layout
jb302@37 1214
jb302@37 1215 \end_inset
jb302@37 1216 </cell>
jb302@37 1217 <cell alignment="center" valignment="top" topline="true" leftline="true" rightline="true" usebox="none">
jb302@37 1218 \begin_inset Text
jb302@37 1219
jb302@37 1220 \begin_layout Plain Layout
jb302@37 1221 Execute instructions from PC until a break point is reached
jb302@37 1222 \end_layout
jb302@37 1223
jb302@37 1224 \end_inset
jb302@37 1225 </cell>
jb302@37 1226 </row>
jb302@37 1227 <row>
jb302@37 1228 <cell alignment="center" valignment="top" topline="true" leftline="true" usebox="none">
jb302@37 1229 \begin_inset Text
jb302@37 1230
jb302@37 1231 \begin_layout Plain Layout
jb302@37 1232 set register
jb302@37 1233 \end_layout
jb302@37 1234
jb302@37 1235 \end_inset
jb302@37 1236 </cell>
jb302@37 1237 <cell alignment="left" valignment="top" topline="true" leftline="true" usebox="none">
jb302@37 1238 \begin_inset Text
jb302@37 1239
jb302@37 1240 \begin_layout Plain Layout
jb302@37 1241 register address, value
jb302@37 1242 \end_layout
jb302@37 1243
jb302@37 1244 \end_inset
jb302@37 1245 </cell>
jb302@37 1246 <cell alignment="center" valignment="top" topline="true" leftline="true" usebox="none">
jb302@37 1247 \begin_inset Text
jb302@37 1248
jb302@37 1249 \begin_layout Plain Layout
jb302@37 1250 0x02
jb302@37 1251 \end_layout
jb302@37 1252
jb302@37 1253 \end_inset
jb302@37 1254 </cell>
jb302@37 1255 <cell alignment="center" valignment="top" topline="true" leftline="true" usebox="none">
jb302@37 1256 \begin_inset Text
jb302@37 1257
jb302@37 1258 \begin_layout Plain Layout
jb302@37 1259 3
jb302@37 1260 \end_layout
jb302@37 1261
jb302@37 1262 \end_inset
jb302@37 1263 </cell>
jb302@37 1264 <cell alignment="center" valignment="top" topline="true" leftline="true" rightline="true" usebox="none">
jb302@37 1265 \begin_inset Text
jb302@37 1266
jb302@37 1267 \begin_layout Plain Layout
jb302@37 1268 Set a register
jb302@37 1269 \end_layout
jb302@37 1270
jb302@37 1271 \end_inset
jb302@37 1272 </cell>
jb302@37 1273 </row>
jb302@37 1274 <row>
jb302@37 1275 <cell alignment="center" valignment="top" topline="true" leftline="true" usebox="none">
jb302@37 1276 \begin_inset Text
jb302@37 1277
jb302@37 1278 \begin_layout Plain Layout
jb302@37 1279 get register
jb302@37 1280 \end_layout
jb302@37 1281
jb302@37 1282 \end_inset
jb302@37 1283 </cell>
jb302@37 1284 <cell alignment="left" valignment="top" topline="true" leftline="true" usebox="none">
jb302@37 1285 \begin_inset Text
jb302@37 1286
jb302@37 1287 \begin_layout Plain Layout
jb302@37 1288 register address
jb302@37 1289 \end_layout
jb302@37 1290
jb302@37 1291 \end_inset
jb302@37 1292 </cell>
jb302@37 1293 <cell alignment="center" valignment="top" topline="true" leftline="true" usebox="none">
jb302@37 1294 \begin_inset Text
jb302@37 1295
jb302@37 1296 \begin_layout Plain Layout
jb302@37 1297 0x03
jb302@37 1298 \end_layout
jb302@37 1299
jb302@37 1300 \end_inset
jb302@37 1301 </cell>
jb302@37 1302 <cell alignment="center" valignment="top" topline="true" leftline="true" usebox="none">
jb302@37 1303 \begin_inset Text
jb302@37 1304
jb302@37 1305 \begin_layout Plain Layout
jb302@37 1306 2
jb302@37 1307 \end_layout
jb302@37 1308
jb302@37 1309 \end_inset
jb302@37 1310 </cell>
jb302@37 1311 <cell alignment="center" valignment="top" topline="true" leftline="true" rightline="true" usebox="none">
jb302@37 1312 \begin_inset Text
jb302@37 1313
jb302@37 1314 \begin_layout Plain Layout
jb302@37 1315 Get the value of a register
jb302@37 1316 \end_layout
jb302@37 1317
jb302@37 1318 \end_inset
jb302@37 1319 </cell>
jb302@37 1320 </row>
jb302@37 1321 <row>
jb302@37 1322 <cell alignment="center" valignment="top" topline="true" leftline="true" usebox="none">
jb302@37 1323 \begin_inset Text
jb302@37 1324
jb302@37 1325 \begin_layout Plain Layout
jb302@37 1326 set flag
jb302@37 1327 \end_layout
jb302@37 1328
jb302@37 1329 \end_inset
jb302@37 1330 </cell>
jb302@37 1331 <cell alignment="left" valignment="top" topline="true" leftline="true" usebox="none">
jb302@37 1332 \begin_inset Text
jb302@37 1333
jb302@37 1334 \begin_layout Plain Layout
jb302@37 1335 flag bit, 0 or 1
jb302@37 1336 \end_layout
jb302@37 1337
jb302@37 1338 \end_inset
jb302@37 1339 </cell>
jb302@37 1340 <cell alignment="center" valignment="top" topline="true" leftline="true" usebox="none">
jb302@37 1341 \begin_inset Text
jb302@37 1342
jb302@37 1343 \begin_layout Plain Layout
jb302@37 1344 0x04
jb302@37 1345 \end_layout
jb302@37 1346
jb302@37 1347 \end_inset
jb302@37 1348 </cell>
jb302@37 1349 <cell alignment="center" valignment="top" topline="true" leftline="true" usebox="none">
jb302@37 1350 \begin_inset Text
jb302@37 1351
jb302@37 1352 \begin_layout Plain Layout
jb302@37 1353 3
jb302@37 1354 \end_layout
jb302@37 1355
jb302@37 1356 \end_inset
jb302@37 1357 </cell>
jb302@37 1358 <cell alignment="center" valignment="top" topline="true" leftline="true" rightline="true" usebox="none">
jb302@37 1359 \begin_inset Text
jb302@37 1360
jb302@37 1361 \begin_layout Plain Layout
jb302@37 1362 Turn a flag bit on or off.
jb302@37 1363 LSB = 0, MSB =7
jb302@37 1364 \end_layout
jb302@37 1365
jb302@37 1366 \end_inset
jb302@37 1367 </cell>
jb302@37 1368 </row>
jb302@37 1369 <row>
jb302@37 1370 <cell alignment="center" valignment="top" topline="true" leftline="true" usebox="none">
jb302@37 1371 \begin_inset Text
jb302@37 1372
jb302@37 1373 \begin_layout Plain Layout
jb302@37 1374 get flag
jb302@37 1375 \end_layout
jb302@37 1376
jb302@37 1377 \end_inset
jb302@37 1378 </cell>
jb302@37 1379 <cell alignment="left" valignment="top" topline="true" leftline="true" usebox="none">
jb302@37 1380 \begin_inset Text
jb302@37 1381
jb302@37 1382 \begin_layout Plain Layout
jb302@37 1383 flag bit
jb302@37 1384 \end_layout
jb302@37 1385
jb302@37 1386 \end_inset
jb302@37 1387 </cell>
jb302@37 1388 <cell alignment="center" valignment="top" topline="true" leftline="true" usebox="none">
jb302@37 1389 \begin_inset Text
jb302@37 1390
jb302@37 1391 \begin_layout Plain Layout
jb302@37 1392 0x05
jb302@37 1393 \end_layout
jb302@37 1394
jb302@37 1395 \end_inset
jb302@37 1396 </cell>
jb302@37 1397 <cell alignment="center" valignment="top" topline="true" leftline="true" usebox="none">
jb302@37 1398 \begin_inset Text
jb302@37 1399
jb302@37 1400 \begin_layout Plain Layout
jb302@37 1401 2
jb302@37 1402 \end_layout
jb302@37 1403
jb302@37 1404 \end_inset
jb302@37 1405 </cell>
jb302@37 1406 <cell alignment="center" valignment="top" topline="true" leftline="true" rightline="true" usebox="none">
jb302@37 1407 \begin_inset Text
jb302@37 1408
jb302@37 1409 \begin_layout Plain Layout
jb302@37 1410 Get the value of a flag bit
jb302@37 1411 \end_layout
jb302@37 1412
jb302@37 1413 \end_inset
jb302@37 1414 </cell>
jb302@37 1415 </row>
jb302@37 1416 <row>
jb302@37 1417 <cell alignment="center" valignment="top" topline="true" leftline="true" usebox="none">
jb302@37 1418 \begin_inset Text
jb302@37 1419
jb302@37 1420 \begin_layout Plain Layout
jb302@37 1421 write memory block
jb302@37 1422 \end_layout
jb302@37 1423
jb302@37 1424 \end_inset
jb302@37 1425 </cell>
jb302@37 1426 <cell alignment="left" valignment="top" topline="true" leftline="true" usebox="none">
jb302@37 1427 \begin_inset Text
jb302@37 1428
jb302@37 1429 \begin_layout Plain Layout
jb302@37 1430 address high, address low, length high, length low, [byte array]
jb302@37 1431 \end_layout
jb302@37 1432
jb302@37 1433 \end_inset
jb302@37 1434 </cell>
jb302@37 1435 <cell alignment="center" valignment="top" topline="true" leftline="true" usebox="none">
jb302@37 1436 \begin_inset Text
jb302@37 1437
jb302@37 1438 \begin_layout Plain Layout
jb302@37 1439 0x06
jb302@37 1440 \end_layout
jb302@37 1441
jb302@37 1442 \end_inset
jb302@37 1443 </cell>
jb302@37 1444 <cell alignment="center" valignment="top" topline="true" leftline="true" usebox="none">
jb302@37 1445 \begin_inset Text
jb302@37 1446
jb302@37 1447 \begin_layout Plain Layout
jb302@37 1448 6+
jb302@37 1449 \end_layout
jb302@37 1450
jb302@37 1451 \end_inset
jb302@37 1452 </cell>
jb302@37 1453 <cell alignment="center" valignment="top" topline="true" leftline="true" rightline="true" usebox="none">
jb302@37 1454 \begin_inset Text
jb302@37 1455
jb302@37 1456 \begin_layout Plain Layout
jb302@37 1457 Set a block of memory of arbitrary length with the bytes in the byte array
jb302@37 1458 \end_layout
jb302@37 1459
jb302@37 1460 \end_inset
jb302@37 1461 </cell>
jb302@37 1462 </row>
jb302@37 1463 <row>
jb302@37 1464 <cell alignment="center" valignment="top" topline="true" leftline="true" usebox="none">
jb302@37 1465 \begin_inset Text
jb302@37 1466
jb302@37 1467 \begin_layout Plain Layout
jb302@37 1468 read memory block
jb302@37 1469 \end_layout
jb302@37 1470
jb302@37 1471 \end_inset
jb302@37 1472 </cell>
jb302@37 1473 <cell alignment="left" valignment="top" topline="true" leftline="true" usebox="none">
jb302@37 1474 \begin_inset Text
jb302@37 1475
jb302@37 1476 \begin_layout Plain Layout
jb302@37 1477 address high, address low, length high, length low
jb302@37 1478 \end_layout
jb302@37 1479
jb302@37 1480 \end_inset
jb302@37 1481 </cell>
jb302@37 1482 <cell alignment="center" valignment="top" topline="true" leftline="true" usebox="none">
jb302@37 1483 \begin_inset Text
jb302@37 1484
jb302@37 1485 \begin_layout Plain Layout
jb302@37 1486 0x07
jb302@37 1487 \end_layout
jb302@37 1488
jb302@37 1489 \end_inset
jb302@37 1490 </cell>
jb302@37 1491 <cell alignment="center" valignment="top" topline="true" leftline="true" usebox="none">
jb302@37 1492 \begin_inset Text
jb302@37 1493
jb302@37 1494 \begin_layout Plain Layout
jb302@37 1495 5
jb302@37 1496 \end_layout
jb302@37 1497
jb302@37 1498 \end_inset
jb302@37 1499 </cell>
jb302@37 1500 <cell alignment="center" valignment="top" topline="true" leftline="true" rightline="true" usebox="none">
jb302@37 1501 \begin_inset Text
jb302@37 1502
jb302@37 1503 \begin_layout Plain Layout
jb302@37 1504 Read a block of memory of arbitrary length
jb302@37 1505 \end_layout
jb302@37 1506
jb302@37 1507 \end_inset
jb302@37 1508 </cell>
jb302@37 1509 </row>
jb302@37 1510 <row>
jb302@37 1511 <cell alignment="center" valignment="top" topline="true" leftline="true" usebox="none">
jb302@37 1512 \begin_inset Text
jb302@37 1513
jb302@37 1514 \begin_layout Plain Layout
jb302@37 1515 get A
jb302@37 1516 \end_layout
jb302@37 1517
jb302@37 1518 \end_inset
jb302@37 1519 </cell>
jb302@37 1520 <cell alignment="left" valignment="top" topline="true" leftline="true" usebox="none">
jb302@37 1521 \begin_inset Text
jb302@37 1522
jb302@37 1523 \begin_layout Plain Layout
jb302@37 1524 -
jb302@37 1525 \end_layout
jb302@37 1526
jb302@37 1527 \end_inset
jb302@37 1528 </cell>
jb302@37 1529 <cell alignment="center" valignment="top" topline="true" leftline="true" usebox="none">
jb302@37 1530 \begin_inset Text
jb302@37 1531
jb302@37 1532 \begin_layout Plain Layout
jb302@37 1533 0x08
jb302@37 1534 \end_layout
jb302@37 1535
jb302@37 1536 \end_inset
jb302@37 1537 </cell>
jb302@37 1538 <cell alignment="center" valignment="top" topline="true" leftline="true" usebox="none">
jb302@37 1539 \begin_inset Text
jb302@37 1540
jb302@37 1541 \begin_layout Plain Layout
jb302@37 1542 1
jb302@37 1543 \end_layout
jb302@37 1544
jb302@37 1545 \end_inset
jb302@37 1546 </cell>
jb302@37 1547 <cell alignment="center" valignment="top" topline="true" leftline="true" rightline="true" usebox="none">
jb302@37 1548 \begin_inset Text
jb302@37 1549
jb302@37 1550 \begin_layout Plain Layout
jb302@37 1551 Get value of A
jb302@37 1552 \end_layout
jb302@37 1553
jb302@37 1554 \end_inset
jb302@37 1555 </cell>
jb302@37 1556 </row>
jb302@37 1557 <row>
jb302@37 1558 <cell alignment="center" valignment="top" topline="true" leftline="true" usebox="none">
jb302@37 1559 \begin_inset Text
jb302@37 1560
jb302@37 1561 \begin_layout Plain Layout
jb302@37 1562 get flags
jb302@37 1563 \end_layout
jb302@37 1564
jb302@37 1565 \end_inset
jb302@37 1566 </cell>
jb302@37 1567 <cell alignment="left" valignment="top" topline="true" leftline="true" usebox="none">
jb302@37 1568 \begin_inset Text
jb302@37 1569
jb302@37 1570 \begin_layout Plain Layout
jb302@37 1571 -
jb302@37 1572 \end_layout
jb302@37 1573
jb302@37 1574 \end_inset
jb302@37 1575 </cell>
jb302@37 1576 <cell alignment="center" valignment="top" topline="true" leftline="true" usebox="none">
jb302@37 1577 \begin_inset Text
jb302@37 1578
jb302@37 1579 \begin_layout Plain Layout
jb302@37 1580 0x09
jb302@37 1581 \end_layout
jb302@37 1582
jb302@37 1583 \end_inset
jb302@37 1584 </cell>
jb302@37 1585 <cell alignment="center" valignment="top" topline="true" leftline="true" usebox="none">
jb302@37 1586 \begin_inset Text
jb302@37 1587
jb302@37 1588 \begin_layout Plain Layout
jb302@37 1589 1
jb302@37 1590 \end_layout
jb302@37 1591
jb302@37 1592 \end_inset
jb302@37 1593 </cell>
jb302@37 1594 <cell alignment="center" valignment="top" topline="true" leftline="true" rightline="true" usebox="none">
jb302@37 1595 \begin_inset Text
jb302@37 1596
jb302@37 1597 \begin_layout Plain Layout
jb302@37 1598 Get value of flags
jb302@37 1599 \end_layout
jb302@37 1600
jb302@37 1601 \end_inset
jb302@37 1602 </cell>
jb302@37 1603 </row>
jb302@37 1604 <row>
jb302@37 1605 <cell alignment="center" valignment="top" topline="true" leftline="true" usebox="none">
jb302@37 1606 \begin_inset Text
jb302@37 1607
jb302@37 1608 \begin_layout Plain Layout
jb302@37 1609 get IR
jb302@37 1610 \end_layout
jb302@37 1611
jb302@37 1612 \end_inset
jb302@37 1613 </cell>
jb302@37 1614 <cell alignment="left" valignment="top" topline="true" leftline="true" usebox="none">
jb302@37 1615 \begin_inset Text
jb302@37 1616
jb302@37 1617 \begin_layout Plain Layout
jb302@37 1618 -
jb302@37 1619 \end_layout
jb302@37 1620
jb302@37 1621 \end_inset
jb302@37 1622 </cell>
jb302@37 1623 <cell alignment="center" valignment="top" topline="true" leftline="true" usebox="none">
jb302@37 1624 \begin_inset Text
jb302@37 1625
jb302@37 1626 \begin_layout Plain Layout
jb302@37 1627 0x0A
jb302@37 1628 \end_layout
jb302@37 1629
jb302@37 1630 \end_inset
jb302@37 1631 </cell>
jb302@37 1632 <cell alignment="center" valignment="top" topline="true" leftline="true" usebox="none">
jb302@37 1633 \begin_inset Text
jb302@37 1634
jb302@37 1635 \begin_layout Plain Layout
jb302@37 1636 1
jb302@37 1637 \end_layout
jb302@37 1638
jb302@37 1639 \end_inset
jb302@37 1640 </cell>
jb302@37 1641 <cell alignment="center" valignment="top" topline="true" leftline="true" rightline="true" usebox="none">
jb302@37 1642 \begin_inset Text
jb302@37 1643
jb302@37 1644 \begin_layout Plain Layout
jb302@37 1645 Get Value of IR
jb302@37 1646 \end_layout
jb302@37 1647
jb302@37 1648 \end_inset
jb302@37 1649 </cell>
jb302@37 1650 </row>
jb302@37 1651 <row>
jb302@37 1652 <cell alignment="center" valignment="top" topline="true" leftline="true" usebox="none">
jb302@37 1653 \begin_inset Text
jb302@37 1654
jb302@37 1655 \begin_layout Plain Layout
jb302@37 1656 run for length
jb302@37 1657 \end_layout
jb302@37 1658
jb302@37 1659 \end_inset
jb302@37 1660 </cell>
jb302@37 1661 <cell multirow="3" alignment="left" valignment="top" topline="true" leftline="true" usebox="none">
jb302@37 1662 \begin_inset Text
jb302@37 1663
jb302@37 1664 \begin_layout Plain Layout
jb302@37 1665 length high, length low
jb302@37 1666 \end_layout
jb302@37 1667
jb302@37 1668 \end_inset
jb302@37 1669 </cell>
jb302@37 1670 <cell alignment="center" valignment="top" topline="true" leftline="true" usebox="none">
jb302@37 1671 \begin_inset Text
jb302@37 1672
jb302@37 1673 \begin_layout Plain Layout
jb302@37 1674 0x0B
jb302@37 1675 \end_layout
jb302@37 1676
jb302@37 1677 \end_inset
jb302@37 1678 </cell>
jb302@37 1679 <cell alignment="center" valignment="top" topline="true" leftline="true" usebox="none">
jb302@37 1680 \begin_inset Text
jb302@37 1681
jb302@37 1682 \begin_layout Plain Layout
jb302@37 1683 3
jb302@37 1684 \end_layout
jb302@37 1685
jb302@37 1686 \end_inset
jb302@37 1687 </cell>
jb302@37 1688 <cell alignment="center" valignment="top" topline="true" leftline="true" rightline="true" usebox="none">
jb302@37 1689 \begin_inset Text
jb302@37 1690
jb302@37 1691 \begin_layout Plain Layout
jb302@37 1692 Run for length number of instruction
jb302@37 1693 \end_layout
jb302@37 1694
jb302@37 1695 \end_inset
jb302@37 1696 </cell>
jb302@37 1697 </row>
jb302@37 1698 <row>
jb302@37 1699 <cell alignment="center" valignment="top" topline="true" leftline="true" usebox="none">
jb302@37 1700 \begin_inset Text
jb302@37 1701
jb302@37 1702 \begin_layout Plain Layout
jb302@37 1703 free run
jb302@37 1704 \end_layout
jb302@37 1705
jb302@37 1706 \end_inset
jb302@37 1707 </cell>
jb302@37 1708 <cell alignment="left" valignment="top" topline="true" leftline="true" usebox="none">
jb302@37 1709 \begin_inset Text
jb302@37 1710
jb302@37 1711 \begin_layout Plain Layout
jb302@37 1712 -
jb302@37 1713 \end_layout
jb302@37 1714
jb302@37 1715 \end_inset
jb302@37 1716 </cell>
jb302@37 1717 <cell alignment="center" valignment="top" topline="true" leftline="true" usebox="none">
jb302@37 1718 \begin_inset Text
jb302@37 1719
jb302@37 1720 \begin_layout Plain Layout
jb302@37 1721 0x0C
jb302@37 1722 \end_layout
jb302@37 1723
jb302@37 1724 \end_inset
jb302@37 1725 </cell>
jb302@37 1726 <cell alignment="center" valignment="top" topline="true" leftline="true" usebox="none">
jb302@37 1727 \begin_inset Text
jb302@37 1728
jb302@37 1729 \begin_layout Plain Layout
jb302@37 1730 1
jb302@37 1731 \end_layout
jb302@37 1732
jb302@37 1733 \end_inset
jb302@37 1734 </cell>
jb302@37 1735 <cell alignment="center" valignment="top" topline="true" leftline="true" rightline="true" usebox="none">
jb302@37 1736 \begin_inset Text
jb302@37 1737
jb302@37 1738 \begin_layout Plain Layout
jb302@37 1739 Run forever - Bypass controller
jb302@37 1740 \end_layout
jb302@37 1741
jb302@37 1742 \end_inset
jb302@37 1743 </cell>
jb302@37 1744 </row>
jb302@37 1745 <row>
jb302@37 1746 <cell alignment="center" valignment="top" topline="true" bottomline="true" leftline="true" usebox="none">
jb302@37 1747 \begin_inset Text
jb302@37 1748
jb302@37 1749 \begin_layout Plain Layout
jb302@37 1750 set break point
jb302@37 1751 \end_layout
jb302@37 1752
jb302@37 1753 \end_inset
jb302@37 1754 </cell>
jb302@37 1755 <cell alignment="left" valignment="top" topline="true" bottomline="true" leftline="true" usebox="none">
jb302@37 1756 \begin_inset Text
jb302@37 1757
jb302@37 1758 \begin_layout Plain Layout
jb302@37 1759 break point index, address high, address low
jb302@37 1760 \end_layout
jb302@37 1761
jb302@37 1762 \end_inset
jb302@37 1763 </cell>
jb302@37 1764 <cell alignment="center" valignment="top" topline="true" bottomline="true" leftline="true" usebox="none">
jb302@37 1765 \begin_inset Text
jb302@37 1766
jb302@37 1767 \begin_layout Plain Layout
jb302@37 1768 0x0D
jb302@37 1769 \end_layout
jb302@37 1770
jb302@37 1771 \end_inset
jb302@37 1772 </cell>
jb302@37 1773 <cell alignment="center" valignment="top" topline="true" bottomline="true" leftline="true" usebox="none">
jb302@37 1774 \begin_inset Text
jb302@37 1775
jb302@37 1776 \begin_layout Plain Layout
jb302@37 1777 4
jb302@37 1778 \end_layout
jb302@37 1779
jb302@37 1780 \end_inset
jb302@37 1781 </cell>
jb302@37 1782 <cell alignment="center" valignment="top" topline="true" bottomline="true" leftline="true" rightline="true" usebox="none">
jb302@37 1783 \begin_inset Text
jb302@37 1784
jb302@37 1785 \begin_layout Plain Layout
jb302@37 1786 Set 1 of 8 possible break points
jb302@37 1787 \end_layout
jb302@37 1788
jb302@37 1789 \end_inset
jb302@37 1790 </cell>
jb302@37 1791 </row>
jb302@37 1792 </lyxtabular>
jb302@37 1793
jb302@37 1794 \end_inset
jb302@37 1795
jb302@37 1796
jb302@37 1797 \end_layout
jb302@37 1798
jb302@38 1799 \begin_layout Standard
jb302@38 1800 \begin_inset ERT
jb302@38 1801 status open
jb302@38 1802
jb302@38 1803 \begin_layout Plain Layout
jb302@38 1804
jb302@38 1805
jb302@38 1806 \backslash
jb302@38 1807 bigskip
jb302@37 1808 \end_layout
jb302@37 1809
jb302@38 1810 \end_inset
jb302@38 1811
jb302@38 1812
jb302@38 1813 \end_layout
jb302@38 1814
jb302@38 1815 \begin_layout Standard
jb302@38 1816 \begin_inset Newpage pagebreak
jb302@38 1817 \end_inset
jb302@38 1818
jb302@38 1819
jb302@38 1820 \end_layout
jb302@38 1821
jb302@38 1822 \begin_layout Standard
jb302@38 1823 Here are pseudo-code representations of the execution control functions.
jb302@38 1824 \end_layout
jb302@38 1825
jb302@38 1826 \begin_layout Standard
jb302@38 1827 \begin_inset ERT
jb302@38 1828 status open
jb302@38 1829
jb302@38 1830 \begin_layout Plain Layout
jb302@38 1831
jb302@38 1832
jb302@38 1833 \backslash
jb302@38 1834 bigskip
jb302@38 1835 \end_layout
jb302@38 1836
jb302@38 1837 \end_inset
jb302@38 1838
jb302@38 1839
jb302@38 1840 \end_layout
jb302@38 1841
jb302@38 1842 \begin_layout Standard
jb302@38 1843 \begin_inset listings
jb302@38 1844 lstparams "basicstyle={\ttfamily},frame=tb,framexbottommargin=1em,framextopmargin=1em,keywordstyle={\color{blue}},tabsize=4"
jb302@38 1845 inline false
jb302@38 1846 status open
jb302@38 1847
jb302@38 1848 \begin_layout Plain Layout
jb302@38 1849
jb302@38 1850 step ( )
jb302@38 1851 \end_layout
jb302@38 1852
jb302@38 1853 \begin_layout Plain Layout
jb302@38 1854
jb302@39 1855 get PC
jb302@39 1856 \end_layout
jb302@39 1857
jb302@39 1858 \begin_layout Plain Layout
jb302@39 1859
jb302@39 1860 IR = byte in memory at PC
jb302@38 1861 \end_layout
jb302@38 1862
jb302@38 1863 \begin_layout Plain Layout
jb302@38 1864
jb302@38 1865 decode and execute instruction
jb302@38 1866 \end_layout
jb302@38 1867
jb302@38 1868 \begin_layout Plain Layout
jb302@38 1869
jb302@39 1870 end
jb302@39 1871 \end_layout
jb302@39 1872
jb302@39 1873 \begin_layout Plain Layout
jb302@39 1874
jb302@38 1875 \end_layout
jb302@38 1876
jb302@38 1877 \begin_layout Plain Layout
jb302@38 1878
jb302@38 1879 run ( )
jb302@38 1880 \end_layout
jb302@38 1881
jb302@38 1882 \begin_layout Plain Layout
jb302@38 1883
jb302@39 1884 while PC is not a break point:
jb302@38 1885 \end_layout
jb302@38 1886
jb302@38 1887 \begin_layout Plain Layout
jb302@38 1888
jb302@38 1889 step( )
jb302@38 1890 \end_layout
jb302@38 1891
jb302@38 1892 \begin_layout Plain Layout
jb302@38 1893
jb302@39 1894 end
jb302@39 1895 \end_layout
jb302@39 1896
jb302@39 1897 \begin_layout Plain Layout
jb302@39 1898
jb302@38 1899 \end_layout
jb302@38 1900
jb302@38 1901 \begin_layout Plain Layout
jb302@38 1902
jb302@38 1903 run for length ( length )
jb302@38 1904 \end_layout
jb302@38 1905
jb302@38 1906 \begin_layout Plain Layout
jb302@38 1907
jb302@38 1908 counter = 0
jb302@38 1909 \end_layout
jb302@38 1910
jb302@38 1911 \begin_layout Plain Layout
jb302@38 1912
jb302@39 1913 while counter != length:
jb302@38 1914 \end_layout
jb302@38 1915
jb302@38 1916 \begin_layout Plain Layout
jb302@38 1917
jb302@38 1918 step( )
jb302@38 1919 \end_layout
jb302@38 1920
jb302@38 1921 \begin_layout Plain Layout
jb302@38 1922
jb302@38 1923 \end_layout
jb302@38 1924
jb302@38 1925 \begin_layout Plain Layout
jb302@38 1926
jb302@38 1927 free run ( ):
jb302@38 1928 \end_layout
jb302@38 1929
jb302@38 1930 \begin_layout Plain Layout
jb302@38 1931
jb302@38 1932 loop forever:
jb302@38 1933 \end_layout
jb302@38 1934
jb302@38 1935 \begin_layout Plain Layout
jb302@38 1936
jb302@38 1937 step( )
jb302@38 1938 \end_layout
jb302@38 1939
jb302@38 1940 \end_inset
jb302@38 1941
jb302@38 1942
jb302@38 1943 \end_layout
jb302@38 1944
jb302@38 1945 \begin_layout Standard
jb302@38 1946 \begin_inset Newpage pagebreak
jb302@38 1947 \end_inset
jb302@38 1948
jb302@38 1949
jb302@37 1950 \end_layout
jb302@37 1951
jb302@37 1952 \begin_layout Section
jb302@37 1953 Emulator Implementation
jb302@37 1954 \end_layout
jb302@37 1955
jb302@38 1956 \begin_layout Standard
jb302@38 1957 The Emulator is written in pure C89 to ensure as much cross compiler compatibili
jb302@38 1958 ty as possible.
jb302@38 1959 It source code consists of the following files:
jb302@38 1960 \end_layout
jb302@38 1961
jb302@38 1962 \begin_layout Standard
jb302@38 1963 \begin_inset ERT
jb302@38 1964 status open
jb302@38 1965
jb302@38 1966 \begin_layout Plain Layout
jb302@38 1967
jb302@38 1968
jb302@38 1969 \backslash
jb302@38 1970 bigskip
jb302@38 1971 \end_layout
jb302@38 1972
jb302@38 1973 \end_inset
jb302@38 1974
jb302@38 1975
jb302@38 1976 \end_layout
jb302@38 1977
jb302@38 1978 \begin_layout Standard
jb302@38 1979 \begin_inset Tabular
jb302@38 1980 <lyxtabular version="3" rows="6" columns="2">
jb302@38 1981 <features tabularvalignment="middle">
jb302@38 1982 <column alignment="center" valignment="top" width="0">
jb302@39 1983 <column alignment="left" valignment="top" width="8cm">
jb302@38 1984 <row>
jb302@38 1985 <cell alignment="center" valignment="top" topline="true" bottomline="true" leftline="true" usebox="none">
jb302@38 1986 \begin_inset Text
jb302@38 1987
jb302@38 1988 \begin_layout Plain Layout
jb302@38 1989 File
jb302@38 1990 \end_layout
jb302@38 1991
jb302@38 1992 \end_inset
jb302@38 1993 </cell>
jb302@38 1994 <cell alignment="left" valignment="top" topline="true" bottomline="true" leftline="true" rightline="true" usebox="none">
jb302@38 1995 \begin_inset Text
jb302@38 1996
jb302@38 1997 \begin_layout Plain Layout
jb302@38 1998 Description
jb302@38 1999 \end_layout
jb302@38 2000
jb302@38 2001 \end_inset
jb302@38 2002 </cell>
jb302@38 2003 </row>
jb302@38 2004 <row>
jb302@38 2005 <cell alignment="center" valignment="top" topline="true" leftline="true" usebox="none">
jb302@38 2006 \begin_inset Text
jb302@38 2007
jb302@38 2008 \begin_layout Plain Layout
jb302@38 2009 main.c
jb302@38 2010 \end_layout
jb302@38 2011
jb302@38 2012 \end_inset
jb302@38 2013 </cell>
jb302@38 2014 <cell alignment="left" valignment="top" topline="true" leftline="true" rightline="true" usebox="none">
jb302@38 2015 \begin_inset Text
jb302@38 2016
jb302@38 2017 \begin_layout Plain Layout
jb302@38 2018 Initializes the emulator at boot and controls execution
jb302@38 2019 \end_layout
jb302@38 2020
jb302@38 2021 \end_inset
jb302@38 2022 </cell>
jb302@38 2023 </row>
jb302@38 2024 <row>
jb302@38 2025 <cell alignment="center" valignment="top" topline="true" leftline="true" usebox="none">
jb302@38 2026 \begin_inset Text
jb302@38 2027
jb302@38 2028 \begin_layout Plain Layout
jb302@38 2029 iset.h
jb302@38 2030 \end_layout
jb302@38 2031
jb302@38 2032 \end_inset
jb302@38 2033 </cell>
jb302@38 2034 <cell alignment="left" valignment="top" topline="true" leftline="true" rightline="true" usebox="none">
jb302@38 2035 \begin_inset Text
jb302@38 2036
jb302@38 2037 \begin_layout Plain Layout
jb302@38 2038 Declares a function for each mnemonic in the instruction set.
jb302@39 2039 Declares a 256 byte function pointer table
jb302@38 2040 \end_layout
jb302@38 2041
jb302@38 2042 \end_inset
jb302@38 2043 </cell>
jb302@38 2044 </row>
jb302@38 2045 <row>
jb302@38 2046 <cell alignment="center" valignment="top" topline="true" leftline="true" usebox="none">
jb302@38 2047 \begin_inset Text
jb302@38 2048
jb302@38 2049 \begin_layout Plain Layout
jb302@38 2050 iset.c
jb302@38 2051 \end_layout
jb302@38 2052
jb302@38 2053 \end_inset
jb302@38 2054 </cell>
jb302@38 2055 <cell alignment="left" valignment="top" topline="true" leftline="true" rightline="true" usebox="none">
jb302@38 2056 \begin_inset Text
jb302@38 2057
jb302@38 2058 \begin_layout Plain Layout
jb302@38 2059 Contains a function for each mnemonic in the instruction set
jb302@38 2060 \end_layout
jb302@38 2061
jb302@38 2062 \end_inset
jb302@38 2063 </cell>
jb302@38 2064 </row>
jb302@38 2065 <row>
jb302@38 2066 <cell alignment="center" valignment="top" topline="true" leftline="true" usebox="none">
jb302@38 2067 \begin_inset Text
jb302@38 2068
jb302@38 2069 \begin_layout Plain Layout
jb302@38 2070 mem.h
jb302@38 2071 \end_layout
jb302@38 2072
jb302@38 2073 \end_inset
jb302@38 2074 </cell>
jb302@38 2075 <cell alignment="left" valignment="top" topline="true" leftline="true" rightline="true" usebox="none">
jb302@38 2076 \begin_inset Text
jb302@38 2077
jb302@38 2078 \begin_layout Plain Layout
jb302@38 2079 Declares variables for the various memory structures.
jb302@38 2080 Declares memory access function definitions
jb302@38 2081 \end_layout
jb302@38 2082
jb302@38 2083 \end_inset
jb302@38 2084 </cell>
jb302@38 2085 </row>
jb302@38 2086 <row>
jb302@38 2087 <cell alignment="center" valignment="top" topline="true" bottomline="true" leftline="true" usebox="none">
jb302@38 2088 \begin_inset Text
jb302@38 2089
jb302@38 2090 \begin_layout Plain Layout
jb302@38 2091 mem.c
jb302@38 2092 \end_layout
jb302@38 2093
jb302@38 2094 \end_inset
jb302@38 2095 </cell>
jb302@38 2096 <cell alignment="left" valignment="top" topline="true" bottomline="true" leftline="true" rightline="true" usebox="none">
jb302@38 2097 \begin_inset Text
jb302@38 2098
jb302@38 2099 \begin_layout Plain Layout
jb302@38 2100 Contains memory access functions
jb302@38 2101 \end_layout
jb302@38 2102
jb302@38 2103 \end_inset
jb302@38 2104 </cell>
jb302@38 2105 </row>
jb302@38 2106 </lyxtabular>
jb302@38 2107
jb302@38 2108 \end_inset
jb302@38 2109
jb302@38 2110
jb302@38 2111 \end_layout
jb302@38 2112
jb302@38 2113 \begin_layout Standard
jb302@38 2114 \begin_inset ERT
jb302@38 2115 status open
jb302@38 2116
jb302@38 2117 \begin_layout Plain Layout
jb302@38 2118
jb302@38 2119
jb302@38 2120 \backslash
jb302@38 2121 bigskip
jb302@38 2122 \end_layout
jb302@38 2123
jb302@38 2124 \end_inset
jb302@38 2125
jb302@38 2126
jb302@38 2127 \end_layout
jb302@38 2128
jb302@38 2129 \begin_layout Subsection
jb302@38 2130 main.c
jb302@38 2131 \end_layout
jb302@38 2132
jb302@38 2133 \begin_layout Standard
jb302@39 2134 In this file the 256 byte instruction table is filled with pointers to the
jb302@39 2135 functions in iset.c.
jb302@39 2136 This file also contains the control interface function and execution control
jb302@39 2137 functions.
jb302@39 2138 None of these functions take any arguments or return any data.
jb302@39 2139 \end_layout
jb302@39 2140
jb302@39 2141 \begin_layout Standard
jb302@39 2142 \begin_inset ERT
jb302@39 2143 status open
jb302@39 2144
jb302@39 2145 \begin_layout Plain Layout
jb302@39 2146
jb302@39 2147
jb302@39 2148 \backslash
jb302@39 2149 bigskip
jb302@39 2150 \end_layout
jb302@39 2151
jb302@39 2152 \end_inset
jb302@39 2153
jb302@39 2154
jb302@39 2155 \end_layout
jb302@39 2156
jb302@39 2157 \begin_layout Standard
jb302@39 2158 Below is a list of the functions that appear in this file.
jb302@39 2159 \end_layout
jb302@39 2160
jb302@39 2161 \begin_layout Standard
jb302@39 2162 \begin_inset Tabular
jb302@39 2163 <lyxtabular version="3" rows="7" columns="2">
jb302@39 2164 <features tabularvalignment="middle">
jb302@39 2165 <column alignment="center" valignment="top" width="0">
jb302@39 2166 <column alignment="left" valignment="top" width="8cm">
jb302@39 2167 <row>
jb302@39 2168 <cell alignment="center" valignment="top" topline="true" bottomline="true" leftline="true" usebox="none">
jb302@39 2169 \begin_inset Text
jb302@39 2170
jb302@39 2171 \begin_layout Plain Layout
jb302@39 2172 Function
jb302@39 2173 \end_layout
jb302@39 2174
jb302@39 2175 \end_inset
jb302@39 2176 </cell>
jb302@39 2177 <cell alignment="left" valignment="top" topline="true" bottomline="true" leftline="true" rightline="true" usebox="none">
jb302@39 2178 \begin_inset Text
jb302@39 2179
jb302@39 2180 \begin_layout Plain Layout
jb302@39 2181 Description
jb302@39 2182 \end_layout
jb302@39 2183
jb302@39 2184 \end_inset
jb302@39 2185 </cell>
jb302@39 2186 </row>
jb302@39 2187 <row>
jb302@39 2188 <cell alignment="center" valignment="top" topline="true" leftline="true" usebox="none">
jb302@39 2189 \begin_inset Text
jb302@39 2190
jb302@39 2191 \begin_layout Plain Layout
jb302@39 2192 snd
jb302@39 2193 \end_layout
jb302@39 2194
jb302@39 2195 \end_inset
jb302@39 2196 </cell>
jb302@39 2197 <cell alignment="left" valignment="top" topline="true" leftline="true" rightline="true" usebox="none">
jb302@39 2198 \begin_inset Text
jb302@39 2199
jb302@39 2200 \begin_layout Plain Layout
jb302@39 2201 Puts a character into the serial or file output buffer
jb302@39 2202 \end_layout
jb302@39 2203
jb302@39 2204 \end_inset
jb302@39 2205 </cell>
jb302@39 2206 </row>
jb302@39 2207 <row>
jb302@39 2208 <cell alignment="center" valignment="top" topline="true" leftline="true" usebox="none">
jb302@39 2209 \begin_inset Text
jb302@39 2210
jb302@39 2211 \begin_layout Plain Layout
jb302@39 2212 rcv
jb302@39 2213 \end_layout
jb302@39 2214
jb302@39 2215 \end_inset
jb302@39 2216 </cell>
jb302@39 2217 <cell alignment="left" valignment="top" topline="true" leftline="true" rightline="true" usebox="none">
jb302@39 2218 \begin_inset Text
jb302@39 2219
jb302@39 2220 \begin_layout Plain Layout
jb302@39 2221 Get a character from the serial or file input buffer
jb302@39 2222 \end_layout
jb302@39 2223
jb302@39 2224 \end_inset
jb302@39 2225 </cell>
jb302@39 2226 </row>
jb302@39 2227 <row>
jb302@39 2228 <cell alignment="center" valignment="top" topline="true" leftline="true" usebox="none">
jb302@39 2229 \begin_inset Text
jb302@39 2230
jb302@39 2231 \begin_layout Plain Layout
jb302@39 2232 step
jb302@39 2233 \end_layout
jb302@39 2234
jb302@39 2235 \end_inset
jb302@39 2236 </cell>
jb302@39 2237 <cell alignment="left" valignment="top" topline="true" leftline="true" rightline="true" usebox="none">
jb302@39 2238 \begin_inset Text
jb302@39 2239
jb302@39 2240 \begin_layout Plain Layout
jb302@39 2241 Execute the instruction pointed to by PC
jb302@39 2242 \end_layout
jb302@39 2243
jb302@39 2244 \end_inset
jb302@39 2245 </cell>
jb302@39 2246 </row>
jb302@39 2247 <row>
jb302@39 2248 <cell alignment="center" valignment="top" topline="true" leftline="true" usebox="none">
jb302@39 2249 \begin_inset Text
jb302@39 2250
jb302@39 2251 \begin_layout Plain Layout
jb302@39 2252 run
jb302@39 2253 \end_layout
jb302@39 2254
jb302@39 2255 \end_inset
jb302@39 2256 </cell>
jb302@39 2257 <cell alignment="left" valignment="top" topline="true" leftline="true" rightline="true" usebox="none">
jb302@39 2258 \begin_inset Text
jb302@39 2259
jb302@39 2260 \begin_layout Plain Layout
jb302@39 2261 Execute instructions until a break point is reached
jb302@39 2262 \end_layout
jb302@39 2263
jb302@39 2264 \end_inset
jb302@39 2265 </cell>
jb302@39 2266 </row>
jb302@39 2267 <row>
jb302@39 2268 <cell alignment="center" valignment="top" topline="true" leftline="true" usebox="none">
jb302@39 2269 \begin_inset Text
jb302@39 2270
jb302@39 2271 \begin_layout Plain Layout
jb302@39 2272 controller
jb302@39 2273 \end_layout
jb302@39 2274
jb302@39 2275 \end_inset
jb302@39 2276 </cell>
jb302@39 2277 <cell alignment="left" valignment="top" topline="true" leftline="true" rightline="true" usebox="none">
jb302@39 2278 \begin_inset Text
jb302@39 2279
jb302@39 2280 \begin_layout Plain Layout
jb302@39 2281 Get character from input buffer and deal with accordingly
jb302@39 2282 \end_layout
jb302@39 2283
jb302@39 2284 \end_inset
jb302@39 2285 </cell>
jb302@39 2286 </row>
jb302@39 2287 <row>
jb302@39 2288 <cell alignment="center" valignment="top" topline="true" bottomline="true" leftline="true" usebox="none">
jb302@39 2289 \begin_inset Text
jb302@39 2290
jb302@39 2291 \begin_layout Plain Layout
jb302@39 2292 main
jb302@39 2293 \end_layout
jb302@39 2294
jb302@39 2295 \end_inset
jb302@39 2296 </cell>
jb302@39 2297 <cell alignment="left" valignment="top" topline="true" bottomline="true" leftline="true" rightline="true" usebox="none">
jb302@39 2298 \begin_inset Text
jb302@39 2299
jb302@39 2300 \begin_layout Plain Layout
jb302@39 2301 Make sure free run isn't enabled at boot, call controller function forever
jb302@39 2302 \end_layout
jb302@39 2303
jb302@39 2304 \end_inset
jb302@39 2305 </cell>
jb302@39 2306 </row>
jb302@39 2307 </lyxtabular>
jb302@39 2308
jb302@39 2309 \end_inset
jb302@39 2310
jb302@39 2311
jb302@39 2312 \end_layout
jb302@39 2313
jb302@39 2314 \begin_layout Standard
jb302@39 2315 \begin_inset Newpage pagebreak
jb302@39 2316 \end_inset
jb302@39 2317
jb302@39 2318
jb302@39 2319 \end_layout
jb302@39 2320
jb302@39 2321 \begin_layout Standard
jb302@39 2322 Below is the format of the instruction pointer table initialized in this
jb302@39 2323 file.
jb302@39 2324 Each item in the table is a pointer to a function.
jb302@39 2325 \end_layout
jb302@39 2326
jb302@39 2327 \begin_layout Standard
jb302@39 2328 \begin_inset ERT
jb302@39 2329 status open
jb302@39 2330
jb302@39 2331 \begin_layout Plain Layout
jb302@39 2332
jb302@39 2333
jb302@39 2334 \backslash
jb302@39 2335 bigskip
jb302@39 2336 \end_layout
jb302@39 2337
jb302@39 2338 \end_inset
jb302@39 2339
jb302@39 2340
jb302@39 2341 \end_layout
jb302@39 2342
jb302@39 2343 \begin_layout Standard
jb302@39 2344 According to the program Cdecl, in
jb302@39 2345 \begin_inset Quotes eld
jb302@39 2346 \end_inset
jb302@39 2347
jb302@39 2348 human language
jb302@39 2349 \begin_inset Quotes erd
jb302@39 2350 \end_inset
jb302@39 2351
jb302@39 2352 , it's declaration is:
jb302@39 2353 \begin_inset Quotes eld
jb302@39 2354 \end_inset
jb302@39 2355
jb302@39 2356 declare ops as array 256 of pointer to function (void) returning void
jb302@39 2357 \begin_inset Quotes erd
jb302@39 2358 \end_inset
jb302@39 2359
jb302@39 2360 .
jb302@39 2361 \end_layout
jb302@39 2362
jb302@39 2363 \begin_layout Standard
jb302@39 2364 \begin_inset ERT
jb302@39 2365 status open
jb302@39 2366
jb302@39 2367 \begin_layout Plain Layout
jb302@39 2368
jb302@39 2369
jb302@39 2370 \backslash
jb302@39 2371 bigskip
jb302@39 2372 \end_layout
jb302@39 2373
jb302@39 2374 \end_inset
jb302@39 2375
jb302@39 2376
jb302@39 2377 \end_layout
jb302@39 2378
jb302@39 2379 \begin_layout Standard
jb302@39 2380 The number of the pointers position in the table is the opcode for the instructi
jb302@39 2381 on that the function being pointed to deals with.
jb302@39 2382 \end_layout
jb302@39 2383
jb302@39 2384 \begin_layout Standard
jb302@39 2385 \begin_inset listings
jb302@39 2386 lstparams "basicstyle={\ttfamily},frame=tb,framexbottommargin=1em,framextopmargin=1em,keywordstyle={\color{blue}},tabsize=4"
jb302@39 2387 inline false
jb302@39 2388 status open
jb302@39 2389
jb302@39 2390 \begin_layout Plain Layout
jb302@39 2391
jb302@39 2392 void (*ops[256])(void) = {
jb302@39 2393 \end_layout
jb302@39 2394
jb302@39 2395 \begin_layout Plain Layout
jb302@39 2396
jb302@39 2397 NOP, NOP, NOP, NOP, NOP, NOP, NOP, NOP,
jb302@39 2398 \end_layout
jb302@39 2399
jb302@39 2400 \begin_layout Plain Layout
jb302@39 2401
jb302@39 2402 SET, CLR, SET, CLR, SET, CLR, CPL, CPL,
jb302@39 2403 \end_layout
jb302@39 2404
jb302@39 2405 \begin_layout Plain Layout
jb302@39 2406
jb302@39 2407 XCSD, SFA, LAF, MOV, MOV, MOV, MOV, MOV,
jb302@39 2408 \end_layout
jb302@39 2409
jb302@39 2410 \begin_layout Plain Layout
jb302@39 2411
jb302@39 2412 MOV, MOV, MOV, MOV, MOV, MOV, MOV, MOV,
jb302@39 2413 \end_layout
jb302@39 2414
jb302@39 2415 \begin_layout Plain Layout
jb302@39 2416
jb302@39 2417 MOV, MOV, MOV, MOV, MOV, MOV, MOV, MOV,
jb302@39 2418 \end_layout
jb302@39 2419
jb302@39 2420 \begin_layout Plain Layout
jb302@39 2421
jb302@39 2422 MOV, MOV, MOV, MOV, MOV, MOV, MOV, MOV,
jb302@39 2423 \end_layout
jb302@39 2424
jb302@39 2425 \begin_layout Plain Layout
jb302@39 2426
jb302@39 2427 MOV, MOV, MOV, MOV, MOV, MOV, MOV, MOV,
jb302@39 2428 \end_layout
jb302@39 2429
jb302@39 2430 \begin_layout Plain Layout
jb302@39 2431
jb302@39 2432 MOV, MOV, MOV, MOV, MOV, MOV, MOV, MOV,
jb302@39 2433 \end_layout
jb302@39 2434
jb302@39 2435 \begin_layout Plain Layout
jb302@39 2436
jb302@39 2437 MOV, MOV, MOV, MOV, MOV, MOV, MOV, MOV,
jb302@39 2438 \end_layout
jb302@39 2439
jb302@39 2440 \begin_layout Plain Layout
jb302@39 2441
jb302@39 2442 MOV, MOV, MOV, MOV, MOV, MOV, MOV, MOV,
jb302@39 2443 \end_layout
jb302@39 2444
jb302@39 2445 \begin_layout Plain Layout
jb302@39 2446
jb302@39 2447 MOV, MOV, MOV, MOV, MOV, MOV, MOV, MOV,
jb302@39 2448 \end_layout
jb302@39 2449
jb302@39 2450 \begin_layout Plain Layout
jb302@39 2451
jb302@39 2452 MOV, MOV, MOV, MOV, MOV, MOV, MOV, MOV,
jb302@39 2453 \end_layout
jb302@39 2454
jb302@39 2455 \begin_layout Plain Layout
jb302@39 2456
jb302@39 2457 MOV, MOV, MOV, MOV, MOV, MOV, MOV, MOV,
jb302@39 2458 \end_layout
jb302@39 2459
jb302@39 2460 \begin_layout Plain Layout
jb302@39 2461
jb302@39 2462 MOV, MOV, MOV, MOV, MOV, MOV, MOV, MOV,
jb302@39 2463 \end_layout
jb302@39 2464
jb302@39 2465 \begin_layout Plain Layout
jb302@39 2466
jb302@39 2467 MOV, MOV, MOV, MOV, MOV, MOV, MOV, MOV,
jb302@39 2468 \end_layout
jb302@39 2469
jb302@39 2470 \begin_layout Plain Layout
jb302@39 2471
jb302@39 2472 MOV, MOV, MOV, MOV, MOV, MOV, MOV, MOV,
jb302@39 2473 \end_layout
jb302@39 2474
jb302@39 2475 \begin_layout Plain Layout
jb302@39 2476
jb302@39 2477 ANL, ANL, ANL, ANL, ANL, ANL, ANL, ANL,
jb302@39 2478 \end_layout
jb302@39 2479
jb302@39 2480 \begin_layout Plain Layout
jb302@39 2481
jb302@39 2482 ORL, ORL, ORL, ORL, ORL, ORL, ORL, ORL,
jb302@39 2483 \end_layout
jb302@39 2484
jb302@39 2485 \begin_layout Plain Layout
jb302@39 2486
jb302@39 2487 XRL, XRL, XRL, XRL, XRL, XRL, XRL, XRL,
jb302@39 2488 \end_layout
jb302@39 2489
jb302@39 2490 \begin_layout Plain Layout
jb302@39 2491
jb302@39 2492 RL, RLC, RR, RRC, INC, DEC, INC, DEC,
jb302@39 2493 \end_layout
jb302@39 2494
jb302@39 2495 \begin_layout Plain Layout
jb302@39 2496
jb302@39 2497 ADD, ADD, ADD, ADD, ADD, ADD, ADD, ADD,
jb302@39 2498 \end_layout
jb302@39 2499
jb302@39 2500 \begin_layout Plain Layout
jb302@39 2501
jb302@39 2502 ADDC, ADDC, ADDC, ADDC, ADDC, ADDC, ADDC, ADDC,
jb302@39 2503 \end_layout
jb302@39 2504
jb302@39 2505 \begin_layout Plain Layout
jb302@39 2506
jb302@39 2507 SUB, SUB, SUB, SUB, SUB, SUB, SUB, SUB,
jb302@39 2508 \end_layout
jb302@39 2509
jb302@39 2510 \begin_layout Plain Layout
jb302@39 2511
jb302@39 2512 SUBB, SUBB, SUBB, SUBB, SUBB, SUBB, SUBB, SUBB,
jb302@39 2513 \end_layout
jb302@39 2514
jb302@39 2515 \begin_layout Plain Layout
jb302@39 2516
jb302@39 2517 PJMP, PJMP, PJMP, PJMP, PJMP, PJMP, PJMP, PJMP,
jb302@39 2518 \end_layout
jb302@39 2519
jb302@39 2520 \begin_layout Plain Layout
jb302@39 2521
jb302@39 2522 PCALL, PCALL, PCALL, PCALL, PCALL, PCALL, PCALL, PCALL,
jb302@39 2523 \end_layout
jb302@39 2524
jb302@39 2525 \begin_layout Plain Layout
jb302@39 2526
jb302@39 2527 DJNZ, DJNZ, DJNZ, DJNZ, CJNE, CJNE, CJNE, CJNE,
jb302@39 2528 \end_layout
jb302@39 2529
jb302@39 2530 \begin_layout Plain Layout
jb302@39 2531
jb302@39 2532 LJMP, LCALL, RET, RETI, SJMP, JMP, JMP, CJNE,
jb302@39 2533 \end_layout
jb302@39 2534
jb302@39 2535 \begin_layout Plain Layout
jb302@39 2536
jb302@39 2537 JZ, JNZ, JC, JNC, JPO, JPE, JS, JNS,
jb302@39 2538 \end_layout
jb302@39 2539
jb302@39 2540 \begin_layout Plain Layout
jb302@39 2541
jb302@39 2542 PUSH, PUSH, PUSH, PUSH, PUSH, PUSH, PUSH, PUSH,
jb302@39 2543 \end_layout
jb302@39 2544
jb302@39 2545 \begin_layout Plain Layout
jb302@39 2546
jb302@39 2547 POP, POP, POP, POP, POP, POP, POP, POP,
jb302@39 2548 \end_layout
jb302@39 2549
jb302@39 2550 \begin_layout Plain Layout
jb302@39 2551
jb302@39 2552 MUL, DIV, DA, NOP, IN, OUT, INT, HLT
jb302@39 2553 \end_layout
jb302@39 2554
jb302@39 2555 \begin_layout Plain Layout
jb302@39 2556
jb302@39 2557 };
jb302@39 2558 \end_layout
jb302@39 2559
jb302@39 2560 \end_inset
jb302@39 2561
jb302@39 2562
jb302@39 2563 \end_layout
jb302@39 2564
jb302@39 2565 \begin_layout Standard
jb302@39 2566 \begin_inset Newpage pagebreak
jb302@39 2567 \end_inset
jb302@39 2568
jb302@39 2569
jb302@39 2570 \end_layout
jb302@39 2571
jb302@39 2572 \begin_layout Subsection
jb302@39 2573 iset.c/h
jb302@39 2574 \end_layout
jb302@39 2575
jb302@39 2576 \begin_layout Standard
jb302@39 2577 For every mnemonic in the ELB816 instruction set there is a function in
jb302@39 2578 these files.
jb302@39 2579 These are the functions that are pointed to in the instruction table that
jb302@39 2580 is filled in main.c.
jb302@42 2581 The functions behave according to their description in the ELB816 specification
jb302@42 2582 [1].
jb302@39 2583 \end_layout
jb302@39 2584
jb302@39 2585 \begin_layout Subsection
jb302@39 2586 mem.c/h
jb302@39 2587 \end_layout
jb302@39 2588
jb302@39 2589 \begin_layout Standard
jb302@39 2590 In mem.h the memory structure of the emulator is defined in accordance with
jb302@39 2591 how it was described in the previous section.
jb302@39 2592 mem.c contains the following functions to facilitate access to this memory.
jb302@39 2593 \end_layout
jb302@39 2594
jb302@39 2595 \begin_layout Standard
jb302@39 2596 \begin_inset ERT
jb302@39 2597 status open
jb302@39 2598
jb302@39 2599 \begin_layout Plain Layout
jb302@39 2600
jb302@39 2601
jb302@39 2602 \backslash
jb302@39 2603 bigskip
jb302@39 2604 \end_layout
jb302@39 2605
jb302@39 2606 \end_inset
jb302@39 2607
jb302@39 2608
jb302@39 2609 \end_layout
jb302@39 2610
jb302@39 2611 \begin_layout Standard
jb302@39 2612 \begin_inset Tabular
jb302@39 2613 <lyxtabular version="3" rows="11" columns="4">
jb302@39 2614 <features tabularvalignment="middle">
jb302@39 2615 <column alignment="center" valignment="top" width="0">
jb302@39 2616 <column alignment="center" valignment="top" width="0">
jb302@39 2617 <column alignment="center" valignment="top" width="0">
jb302@39 2618 <column alignment="left" valignment="top" width="6cm">
jb302@39 2619 <row>
jb302@39 2620 <cell alignment="center" valignment="top" topline="true" bottomline="true" leftline="true" usebox="none">
jb302@39 2621 \begin_inset Text
jb302@39 2622
jb302@39 2623 \begin_layout Plain Layout
jb302@39 2624 Function
jb302@39 2625 \end_layout
jb302@39 2626
jb302@39 2627 \end_inset
jb302@39 2628 </cell>
jb302@39 2629 <cell alignment="center" valignment="top" topline="true" bottomline="true" leftline="true" usebox="none">
jb302@39 2630 \begin_inset Text
jb302@39 2631
jb302@39 2632 \begin_layout Plain Layout
jb302@39 2633 Arguments
jb302@39 2634 \end_layout
jb302@39 2635
jb302@39 2636 \end_inset
jb302@39 2637 </cell>
jb302@39 2638 <cell alignment="center" valignment="top" topline="true" bottomline="true" leftline="true" usebox="none">
jb302@39 2639 \begin_inset Text
jb302@39 2640
jb302@39 2641 \begin_layout Plain Layout
jb302@39 2642 Returns
jb302@39 2643 \end_layout
jb302@39 2644
jb302@39 2645 \end_inset
jb302@39 2646 </cell>
jb302@39 2647 <cell alignment="left" valignment="top" topline="true" bottomline="true" leftline="true" rightline="true" usebox="none">
jb302@39 2648 \begin_inset Text
jb302@39 2649
jb302@39 2650 \begin_layout Plain Layout
jb302@39 2651 Description
jb302@39 2652 \end_layout
jb302@39 2653
jb302@39 2654 \end_inset
jb302@39 2655 </cell>
jb302@39 2656 </row>
jb302@39 2657 <row>
jb302@39 2658 <cell alignment="center" valignment="top" topline="true" leftline="true" usebox="none">
jb302@39 2659 \begin_inset Text
jb302@39 2660
jb302@39 2661 \begin_layout Plain Layout
jb302@39 2662 get_flag
jb302@39 2663 \end_layout
jb302@39 2664
jb302@39 2665 \end_inset
jb302@39 2666 </cell>
jb302@39 2667 <cell alignment="center" valignment="top" topline="true" leftline="true" usebox="none">
jb302@39 2668 \begin_inset Text
jb302@39 2669
jb302@39 2670 \begin_layout Plain Layout
jb302@39 2671 flag
jb302@39 2672 \end_layout
jb302@39 2673
jb302@39 2674 \end_inset
jb302@39 2675 </cell>
jb302@39 2676 <cell alignment="center" valignment="top" topline="true" leftline="true" usebox="none">
jb302@39 2677 \begin_inset Text
jb302@39 2678
jb302@39 2679 \begin_layout Plain Layout
jb302@39 2680 1 byte
jb302@39 2681 \end_layout
jb302@39 2682
jb302@39 2683 \end_inset
jb302@39 2684 </cell>
jb302@39 2685 <cell alignment="left" valignment="top" topline="true" leftline="true" rightline="true" usebox="none">
jb302@39 2686 \begin_inset Text
jb302@39 2687
jb302@39 2688 \begin_layout Plain Layout
jb302@39 2689 Get the value of a flag (can be 0 or 1)
jb302@39 2690 \end_layout
jb302@39 2691
jb302@39 2692 \end_inset
jb302@39 2693 </cell>
jb302@39 2694 </row>
jb302@39 2695 <row>
jb302@39 2696 <cell alignment="center" valignment="top" topline="true" leftline="true" usebox="none">
jb302@39 2697 \begin_inset Text
jb302@39 2698
jb302@39 2699 \begin_layout Plain Layout
jb302@39 2700 set_flag
jb302@39 2701 \end_layout
jb302@39 2702
jb302@39 2703 \end_inset
jb302@39 2704 </cell>
jb302@39 2705 <cell alignment="center" valignment="top" topline="true" leftline="true" usebox="none">
jb302@39 2706 \begin_inset Text
jb302@39 2707
jb302@39 2708 \begin_layout Plain Layout
jb302@39 2709 flag, on
jb302@39 2710 \end_layout
jb302@39 2711
jb302@39 2712 \end_inset
jb302@39 2713 </cell>
jb302@39 2714 <cell alignment="center" valignment="top" topline="true" leftline="true" usebox="none">
jb302@39 2715 \begin_inset Text
jb302@39 2716
jb302@39 2717 \begin_layout Plain Layout
jb302@39 2718 -
jb302@39 2719 \end_layout
jb302@39 2720
jb302@39 2721 \end_inset
jb302@39 2722 </cell>
jb302@39 2723 <cell alignment="left" valignment="top" topline="true" leftline="true" rightline="true" usebox="none">
jb302@39 2724 \begin_inset Text
jb302@39 2725
jb302@39 2726 \begin_layout Plain Layout
jb302@39 2727 Set a flag to 0 if on == 0, else set flag to 1
jb302@39 2728 \end_layout
jb302@39 2729
jb302@39 2730 \end_inset
jb302@39 2731 </cell>
jb302@39 2732 </row>
jb302@39 2733 <row>
jb302@39 2734 <cell alignment="center" valignment="top" topline="true" leftline="true" usebox="none">
jb302@39 2735 \begin_inset Text
jb302@39 2736
jb302@39 2737 \begin_layout Plain Layout
jb302@39 2738 set_zp
jb302@39 2739 \end_layout
jb302@39 2740
jb302@39 2741 \end_inset
jb302@39 2742 </cell>
jb302@39 2743 <cell alignment="center" valignment="top" topline="true" leftline="true" usebox="none">
jb302@39 2744 \begin_inset Text
jb302@39 2745
jb302@39 2746 \begin_layout Plain Layout
jb302@39 2747 value
jb302@39 2748 \end_layout
jb302@39 2749
jb302@39 2750 \end_inset
jb302@39 2751 </cell>
jb302@39 2752 <cell alignment="center" valignment="top" topline="true" leftline="true" usebox="none">
jb302@39 2753 \begin_inset Text
jb302@39 2754
jb302@39 2755 \begin_layout Plain Layout
jb302@39 2756 -
jb302@39 2757 \end_layout
jb302@39 2758
jb302@39 2759 \end_inset
jb302@39 2760 </cell>
jb302@39 2761 <cell alignment="left" valignment="top" topline="true" leftline="true" rightline="true" usebox="none">
jb302@39 2762 \begin_inset Text
jb302@39 2763
jb302@39 2764 \begin_layout Plain Layout
jb302@39 2765 Set zero and parity flags based on value
jb302@39 2766 \end_layout
jb302@39 2767
jb302@39 2768 \end_inset
jb302@39 2769 </cell>
jb302@39 2770 </row>
jb302@39 2771 <row>
jb302@39 2772 <cell alignment="center" valignment="top" topline="true" leftline="true" usebox="none">
jb302@39 2773 \begin_inset Text
jb302@39 2774
jb302@39 2775 \begin_layout Plain Layout
jb302@39 2776 get_wide
jb302@39 2777 \end_layout
jb302@39 2778
jb302@39 2779 \end_inset
jb302@39 2780 </cell>
jb302@39 2781 <cell alignment="center" valignment="top" topline="true" leftline="true" usebox="none">
jb302@39 2782 \begin_inset Text
jb302@39 2783
jb302@39 2784 \begin_layout Plain Layout
jb302@39 2785 register
jb302@39 2786 \end_layout
jb302@39 2787
jb302@39 2788 \end_inset
jb302@39 2789 </cell>
jb302@39 2790 <cell alignment="center" valignment="top" topline="true" leftline="true" usebox="none">
jb302@39 2791 \begin_inset Text
jb302@39 2792
jb302@39 2793 \begin_layout Plain Layout
jb302@39 2794 2 bytes
jb302@39 2795 \end_layout
jb302@39 2796
jb302@39 2797 \end_inset
jb302@39 2798 </cell>
jb302@39 2799 <cell alignment="left" valignment="top" topline="true" leftline="true" rightline="true" usebox="none">
jb302@39 2800 \begin_inset Text
jb302@39 2801
jb302@39 2802 \begin_layout Plain Layout
jb302@39 2803 Get the value of a 16-bit register
jb302@39 2804 \end_layout
jb302@39 2805
jb302@39 2806 \end_inset
jb302@39 2807 </cell>
jb302@39 2808 </row>
jb302@39 2809 <row>
jb302@39 2810 <cell alignment="center" valignment="top" topline="true" leftline="true" usebox="none">
jb302@39 2811 \begin_inset Text
jb302@39 2812
jb302@39 2813 \begin_layout Plain Layout
jb302@39 2814 set_wide
jb302@39 2815 \end_layout
jb302@39 2816
jb302@39 2817 \end_inset
jb302@39 2818 </cell>
jb302@39 2819 <cell alignment="center" valignment="top" topline="true" leftline="true" usebox="none">
jb302@39 2820 \begin_inset Text
jb302@39 2821
jb302@39 2822 \begin_layout Plain Layout
jb302@39 2823 register, value
jb302@39 2824 \end_layout
jb302@39 2825
jb302@39 2826 \end_inset
jb302@39 2827 </cell>
jb302@39 2828 <cell alignment="center" valignment="top" topline="true" leftline="true" usebox="none">
jb302@39 2829 \begin_inset Text
jb302@39 2830
jb302@39 2831 \begin_layout Plain Layout
jb302@39 2832 -
jb302@39 2833 \end_layout
jb302@39 2834
jb302@39 2835 \end_inset
jb302@39 2836 </cell>
jb302@39 2837 <cell alignment="left" valignment="top" topline="true" leftline="true" rightline="true" usebox="none">
jb302@39 2838 \begin_inset Text
jb302@39 2839
jb302@39 2840 \begin_layout Plain Layout
jb302@39 2841 Set the value of a 16-bit register
jb302@39 2842 \end_layout
jb302@39 2843
jb302@39 2844 \end_inset
jb302@39 2845 </cell>
jb302@39 2846 </row>
jb302@39 2847 <row>
jb302@39 2848 <cell alignment="center" valignment="top" topline="true" leftline="true" usebox="none">
jb302@39 2849 \begin_inset Text
jb302@39 2850
jb302@39 2851 \begin_layout Plain Layout
jb302@39 2852 inc_pc
jb302@39 2853 \end_layout
jb302@39 2854
jb302@39 2855 \end_inset
jb302@39 2856 </cell>
jb302@39 2857 <cell alignment="center" valignment="top" topline="true" leftline="true" usebox="none">
jb302@39 2858 \begin_inset Text
jb302@39 2859
jb302@39 2860 \begin_layout Plain Layout
jb302@39 2861 n
jb302@39 2862 \end_layout
jb302@39 2863
jb302@39 2864 \end_inset
jb302@39 2865 </cell>
jb302@39 2866 <cell alignment="center" valignment="top" topline="true" leftline="true" usebox="none">
jb302@39 2867 \begin_inset Text
jb302@39 2868
jb302@39 2869 \begin_layout Plain Layout
jb302@39 2870 -
jb302@39 2871 \end_layout
jb302@39 2872
jb302@39 2873 \end_inset
jb302@39 2874 </cell>
jb302@39 2875 <cell alignment="left" valignment="top" topline="true" leftline="true" rightline="true" usebox="none">
jb302@39 2876 \begin_inset Text
jb302@39 2877
jb302@39 2878 \begin_layout Plain Layout
jb302@39 2879 Increment the PC by n
jb302@39 2880 \end_layout
jb302@39 2881
jb302@39 2882 \end_inset
jb302@39 2883 </cell>
jb302@39 2884 </row>
jb302@39 2885 <row>
jb302@39 2886 <cell alignment="center" valignment="top" topline="true" leftline="true" usebox="none">
jb302@39 2887 \begin_inset Text
jb302@39 2888
jb302@39 2889 \begin_layout Plain Layout
jb302@39 2890 fetch
jb302@39 2891 \end_layout
jb302@39 2892
jb302@39 2893 \end_inset
jb302@39 2894 </cell>
jb302@39 2895 <cell alignment="center" valignment="top" topline="true" leftline="true" usebox="none">
jb302@39 2896 \begin_inset Text
jb302@39 2897
jb302@39 2898 \begin_layout Plain Layout
jb302@39 2899 -
jb302@39 2900 \end_layout
jb302@39 2901
jb302@39 2902 \end_inset
jb302@39 2903 </cell>
jb302@39 2904 <cell alignment="center" valignment="top" topline="true" leftline="true" usebox="none">
jb302@39 2905 \begin_inset Text
jb302@39 2906
jb302@39 2907 \begin_layout Plain Layout
jb302@39 2908 1 byte
jb302@39 2909 \end_layout
jb302@39 2910
jb302@39 2911 \end_inset
jb302@39 2912 </cell>
jb302@39 2913 <cell alignment="left" valignment="top" topline="true" leftline="true" rightline="true" usebox="none">
jb302@39 2914 \begin_inset Text
jb302@39 2915
jb302@39 2916 \begin_layout Plain Layout
jb302@39 2917 return the byte in memory at PC, increment PC
jb302@39 2918 \end_layout
jb302@39 2919
jb302@39 2920 \end_inset
jb302@39 2921 </cell>
jb302@39 2922 </row>
jb302@39 2923 <row>
jb302@39 2924 <cell alignment="center" valignment="top" topline="true" leftline="true" usebox="none">
jb302@39 2925 \begin_inset Text
jb302@39 2926
jb302@39 2927 \begin_layout Plain Layout
jb302@39 2928 fetch_wide
jb302@39 2929 \end_layout
jb302@39 2930
jb302@39 2931 \end_inset
jb302@39 2932 </cell>
jb302@39 2933 <cell alignment="center" valignment="top" topline="true" leftline="true" usebox="none">
jb302@39 2934 \begin_inset Text
jb302@39 2935
jb302@39 2936 \begin_layout Plain Layout
jb302@39 2937 -
jb302@39 2938 \end_layout
jb302@39 2939
jb302@39 2940 \end_inset
jb302@39 2941 </cell>
jb302@39 2942 <cell alignment="center" valignment="top" topline="true" leftline="true" usebox="none">
jb302@39 2943 \begin_inset Text
jb302@39 2944
jb302@39 2945 \begin_layout Plain Layout
jb302@39 2946 2 bytes
jb302@39 2947 \end_layout
jb302@39 2948
jb302@39 2949 \end_inset
jb302@39 2950 </cell>
jb302@39 2951 <cell alignment="left" valignment="top" topline="true" leftline="true" rightline="true" usebox="none">
jb302@39 2952 \begin_inset Text
jb302@39 2953
jb302@39 2954 \begin_layout Plain Layout
jb302@39 2955 return the 2 bytes in memory at PC, increment PC by 2
jb302@39 2956 \end_layout
jb302@39 2957
jb302@39 2958 \end_inset
jb302@39 2959 </cell>
jb302@39 2960 </row>
jb302@39 2961 <row>
jb302@39 2962 <cell alignment="center" valignment="top" topline="true" leftline="true" usebox="none">
jb302@39 2963 \begin_inset Text
jb302@39 2964
jb302@39 2965 \begin_layout Plain Layout
jb302@39 2966 get_reg
jb302@39 2967 \end_layout
jb302@39 2968
jb302@39 2969 \end_inset
jb302@39 2970 </cell>
jb302@39 2971 <cell alignment="center" valignment="top" topline="true" leftline="true" usebox="none">
jb302@39 2972 \begin_inset Text
jb302@39 2973
jb302@39 2974 \begin_layout Plain Layout
jb302@39 2975 register
jb302@39 2976 \end_layout
jb302@39 2977
jb302@39 2978 \end_inset
jb302@39 2979 </cell>
jb302@39 2980 <cell alignment="center" valignment="top" topline="true" leftline="true" usebox="none">
jb302@39 2981 \begin_inset Text
jb302@39 2982
jb302@39 2983 \begin_layout Plain Layout
jb302@39 2984 1 byte
jb302@39 2985 \end_layout
jb302@39 2986
jb302@39 2987 \end_inset
jb302@39 2988 </cell>
jb302@39 2989 <cell alignment="left" valignment="top" topline="true" leftline="true" rightline="true" usebox="none">
jb302@39 2990 \begin_inset Text
jb302@39 2991
jb302@39 2992 \begin_layout Plain Layout
jb302@39 2993 Get the value of an 8-bit register
jb302@39 2994 \end_layout
jb302@39 2995
jb302@39 2996 \end_inset
jb302@39 2997 </cell>
jb302@39 2998 </row>
jb302@39 2999 <row>
jb302@39 3000 <cell alignment="center" valignment="top" topline="true" bottomline="true" leftline="true" usebox="none">
jb302@39 3001 \begin_inset Text
jb302@39 3002
jb302@39 3003 \begin_layout Plain Layout
jb302@39 3004 set_reg
jb302@39 3005 \end_layout
jb302@39 3006
jb302@39 3007 \end_inset
jb302@39 3008 </cell>
jb302@39 3009 <cell alignment="center" valignment="top" topline="true" bottomline="true" leftline="true" usebox="none">
jb302@39 3010 \begin_inset Text
jb302@39 3011
jb302@39 3012 \begin_layout Plain Layout
jb302@39 3013 register, value
jb302@39 3014 \end_layout
jb302@39 3015
jb302@39 3016 \end_inset
jb302@39 3017 </cell>
jb302@39 3018 <cell alignment="center" valignment="top" topline="true" bottomline="true" leftline="true" usebox="none">
jb302@39 3019 \begin_inset Text
jb302@39 3020
jb302@39 3021 \begin_layout Plain Layout
jb302@39 3022 -
jb302@39 3023 \end_layout
jb302@39 3024
jb302@39 3025 \end_inset
jb302@39 3026 </cell>
jb302@39 3027 <cell alignment="left" valignment="top" topline="true" bottomline="true" leftline="true" rightline="true" usebox="none">
jb302@39 3028 \begin_inset Text
jb302@39 3029
jb302@39 3030 \begin_layout Plain Layout
jb302@39 3031 Set the value of an 8-bit register
jb302@39 3032 \end_layout
jb302@39 3033
jb302@39 3034 \end_inset
jb302@39 3035 </cell>
jb302@39 3036 </row>
jb302@39 3037 </lyxtabular>
jb302@39 3038
jb302@39 3039 \end_inset
jb302@39 3040
jb302@39 3041
jb302@39 3042 \end_layout
jb302@39 3043
jb302@39 3044 \begin_layout Standard
jb302@39 3045 \begin_inset Newpage pagebreak
jb302@39 3046 \end_inset
jb302@39 3047
jb302@39 3048
jb302@39 3049 \end_layout
jb302@39 3050
jb302@39 3051 \begin_layout Standard
jb302@39 3052 The various register access functions use different register encoding schemes.
jb302@39 3053 These are in the tables below.
jb302@39 3054 \end_layout
jb302@39 3055
jb302@39 3056 \begin_layout Itemize
jb302@39 3057 get_wide/set_wide
jb302@39 3058 \end_layout
jb302@39 3059
jb302@39 3060 \begin_layout Standard
jb302@39 3061 \begin_inset Tabular
jb302@39 3062 <lyxtabular version="3" rows="5" columns="2">
jb302@39 3063 <features tabularvalignment="middle">
jb302@39 3064 <column alignment="center" valignment="top" width="0">
jb302@39 3065 <column alignment="center" valignment="top" width="0">
jb302@39 3066 <row>
jb302@39 3067 <cell alignment="center" valignment="top" topline="true" bottomline="true" leftline="true" usebox="none">
jb302@39 3068 \begin_inset Text
jb302@39 3069
jb302@39 3070 \begin_layout Plain Layout
jb302@39 3071 Register
jb302@39 3072 \end_layout
jb302@39 3073
jb302@39 3074 \end_inset
jb302@39 3075 </cell>
jb302@39 3076 <cell alignment="center" valignment="top" topline="true" bottomline="true" leftline="true" rightline="true" usebox="none">
jb302@39 3077 \begin_inset Text
jb302@39 3078
jb302@39 3079 \begin_layout Plain Layout
jb302@39 3080 Encoding
jb302@39 3081 \end_layout
jb302@39 3082
jb302@39 3083 \end_inset
jb302@39 3084 </cell>
jb302@39 3085 </row>
jb302@39 3086 <row>
jb302@39 3087 <cell alignment="center" valignment="top" topline="true" leftline="true" usebox="none">
jb302@39 3088 \begin_inset Text
jb302@39 3089
jb302@39 3090 \begin_layout Plain Layout
jb302@39 3091 DPTR
jb302@39 3092 \end_layout
jb302@39 3093
jb302@39 3094 \end_inset
jb302@39 3095 </cell>
jb302@39 3096 <cell alignment="center" valignment="top" topline="true" leftline="true" rightline="true" usebox="none">
jb302@39 3097 \begin_inset Text
jb302@39 3098
jb302@39 3099 \begin_layout Plain Layout
jb302@39 3100 00
jb302@39 3101 \end_layout
jb302@39 3102
jb302@39 3103 \end_inset
jb302@39 3104 </cell>
jb302@39 3105 </row>
jb302@39 3106 <row>
jb302@39 3107 <cell alignment="center" valignment="top" topline="true" leftline="true" usebox="none">
jb302@39 3108 \begin_inset Text
jb302@39 3109
jb302@39 3110 \begin_layout Plain Layout
jb302@39 3111 SP
jb302@39 3112 \end_layout
jb302@39 3113
jb302@39 3114 \end_inset
jb302@39 3115 </cell>
jb302@39 3116 <cell alignment="center" valignment="top" topline="true" leftline="true" rightline="true" usebox="none">
jb302@39 3117 \begin_inset Text
jb302@39 3118
jb302@39 3119 \begin_layout Plain Layout
jb302@39 3120 01
jb302@39 3121 \end_layout
jb302@39 3122
jb302@39 3123 \end_inset
jb302@39 3124 </cell>
jb302@39 3125 </row>
jb302@39 3126 <row>
jb302@39 3127 <cell alignment="center" valignment="top" topline="true" leftline="true" usebox="none">
jb302@39 3128 \begin_inset Text
jb302@39 3129
jb302@39 3130 \begin_layout Plain Layout
jb302@39 3131 PC
jb302@39 3132 \end_layout
jb302@39 3133
jb302@39 3134 \end_inset
jb302@39 3135 </cell>
jb302@39 3136 <cell alignment="center" valignment="top" topline="true" leftline="true" rightline="true" usebox="none">
jb302@39 3137 \begin_inset Text
jb302@39 3138
jb302@39 3139 \begin_layout Plain Layout
jb302@39 3140 10
jb302@39 3141 \end_layout
jb302@39 3142
jb302@39 3143 \end_inset
jb302@39 3144 </cell>
jb302@39 3145 </row>
jb302@39 3146 <row>
jb302@39 3147 <cell alignment="center" valignment="top" topline="true" bottomline="true" leftline="true" usebox="none">
jb302@39 3148 \begin_inset Text
jb302@39 3149
jb302@39 3150 \begin_layout Plain Layout
jb302@39 3151 TMPA
jb302@39 3152 \end_layout
jb302@39 3153
jb302@39 3154 \end_inset
jb302@39 3155 </cell>
jb302@39 3156 <cell alignment="center" valignment="top" topline="true" bottomline="true" leftline="true" rightline="true" usebox="none">
jb302@39 3157 \begin_inset Text
jb302@39 3158
jb302@39 3159 \begin_layout Plain Layout
jb302@39 3160 11
jb302@39 3161 \end_layout
jb302@39 3162
jb302@39 3163 \end_inset
jb302@39 3164 </cell>
jb302@39 3165 </row>
jb302@39 3166 </lyxtabular>
jb302@39 3167
jb302@39 3168 \end_inset
jb302@39 3169
jb302@39 3170
jb302@39 3171 \end_layout
jb302@39 3172
jb302@39 3173 \begin_layout Itemize
jb302@39 3174 get_reg/set_reg - These values correspond to the way registers are encoded
jb302@39 3175 into the last 3-bits of many of the ELB816 instructions.
jb302@39 3176 \end_layout
jb302@39 3177
jb302@39 3178 \begin_layout Standard
jb302@39 3179 \begin_inset Tabular
jb302@39 3180 <lyxtabular version="3" rows="9" columns="2">
jb302@39 3181 <features tabularvalignment="middle">
jb302@39 3182 <column alignment="center" valignment="top" width="0">
jb302@39 3183 <column alignment="center" valignment="top" width="0">
jb302@39 3184 <row>
jb302@39 3185 <cell alignment="center" valignment="top" topline="true" bottomline="true" leftline="true" usebox="none">
jb302@39 3186 \begin_inset Text
jb302@39 3187
jb302@39 3188 \begin_layout Plain Layout
jb302@39 3189 Register
jb302@39 3190 \end_layout
jb302@39 3191
jb302@39 3192 \end_inset
jb302@39 3193 </cell>
jb302@39 3194 <cell alignment="center" valignment="top" topline="true" bottomline="true" leftline="true" rightline="true" usebox="none">
jb302@39 3195 \begin_inset Text
jb302@39 3196
jb302@39 3197 \begin_layout Plain Layout
jb302@39 3198 Encoding
jb302@39 3199 \end_layout
jb302@39 3200
jb302@39 3201 \end_inset
jb302@39 3202 </cell>
jb302@39 3203 </row>
jb302@39 3204 <row>
jb302@39 3205 <cell alignment="center" valignment="top" topline="true" leftline="true" usebox="none">
jb302@39 3206 \begin_inset Text
jb302@39 3207
jb302@39 3208 \begin_layout Plain Layout
jb302@39 3209 R0
jb302@39 3210 \end_layout
jb302@39 3211
jb302@39 3212 \end_inset
jb302@39 3213 </cell>
jb302@39 3214 <cell alignment="center" valignment="top" topline="true" leftline="true" rightline="true" usebox="none">
jb302@39 3215 \begin_inset Text
jb302@39 3216
jb302@39 3217 \begin_layout Plain Layout
jb302@39 3218 000
jb302@39 3219 \end_layout
jb302@39 3220
jb302@39 3221 \end_inset
jb302@39 3222 </cell>
jb302@39 3223 </row>
jb302@39 3224 <row>
jb302@39 3225 <cell alignment="center" valignment="top" topline="true" leftline="true" usebox="none">
jb302@39 3226 \begin_inset Text
jb302@39 3227
jb302@39 3228 \begin_layout Plain Layout
jb302@39 3229 R1
jb302@39 3230 \end_layout
jb302@39 3231
jb302@39 3232 \end_inset
jb302@39 3233 </cell>
jb302@39 3234 <cell alignment="center" valignment="top" topline="true" leftline="true" rightline="true" usebox="none">
jb302@39 3235 \begin_inset Text
jb302@39 3236
jb302@39 3237 \begin_layout Plain Layout
jb302@39 3238 001
jb302@39 3239 \end_layout
jb302@39 3240
jb302@39 3241 \end_inset
jb302@39 3242 </cell>
jb302@39 3243 </row>
jb302@39 3244 <row>
jb302@39 3245 <cell alignment="center" valignment="top" topline="true" leftline="true" usebox="none">
jb302@39 3246 \begin_inset Text
jb302@39 3247
jb302@39 3248 \begin_layout Plain Layout
jb302@39 3249 R2
jb302@39 3250 \end_layout
jb302@39 3251
jb302@39 3252 \end_inset
jb302@39 3253 </cell>
jb302@39 3254 <cell alignment="center" valignment="top" topline="true" leftline="true" rightline="true" usebox="none">
jb302@39 3255 \begin_inset Text
jb302@39 3256
jb302@39 3257 \begin_layout Plain Layout
jb302@39 3258 010
jb302@39 3259 \end_layout
jb302@39 3260
jb302@39 3261 \end_inset
jb302@39 3262 </cell>
jb302@39 3263 </row>
jb302@39 3264 <row>
jb302@39 3265 <cell alignment="center" valignment="top" topline="true" leftline="true" usebox="none">
jb302@39 3266 \begin_inset Text
jb302@39 3267
jb302@39 3268 \begin_layout Plain Layout
jb302@39 3269 R3
jb302@39 3270 \end_layout
jb302@39 3271
jb302@39 3272 \end_inset
jb302@39 3273 </cell>
jb302@39 3274 <cell alignment="center" valignment="top" topline="true" leftline="true" rightline="true" usebox="none">
jb302@39 3275 \begin_inset Text
jb302@39 3276
jb302@39 3277 \begin_layout Plain Layout
jb302@39 3278 011
jb302@39 3279 \end_layout
jb302@39 3280
jb302@39 3281 \end_inset
jb302@39 3282 </cell>
jb302@39 3283 </row>
jb302@39 3284 <row>
jb302@39 3285 <cell alignment="center" valignment="top" topline="true" leftline="true" usebox="none">
jb302@39 3286 \begin_inset Text
jb302@39 3287
jb302@39 3288 \begin_layout Plain Layout
jb302@39 3289 DPH
jb302@39 3290 \end_layout
jb302@39 3291
jb302@39 3292 \end_inset
jb302@39 3293 </cell>
jb302@39 3294 <cell alignment="center" valignment="top" topline="true" leftline="true" rightline="true" usebox="none">
jb302@39 3295 \begin_inset Text
jb302@39 3296
jb302@39 3297 \begin_layout Plain Layout
jb302@39 3298 100
jb302@39 3299 \end_layout
jb302@39 3300
jb302@39 3301 \end_inset
jb302@39 3302 </cell>
jb302@39 3303 </row>
jb302@39 3304 <row>
jb302@39 3305 <cell alignment="center" valignment="top" topline="true" leftline="true" usebox="none">
jb302@39 3306 \begin_inset Text
jb302@39 3307
jb302@39 3308 \begin_layout Plain Layout
jb302@39 3309 DPL
jb302@39 3310 \end_layout
jb302@39 3311
jb302@39 3312 \end_inset
jb302@39 3313 </cell>
jb302@39 3314 <cell alignment="center" valignment="top" topline="true" leftline="true" rightline="true" usebox="none">
jb302@39 3315 \begin_inset Text
jb302@39 3316
jb302@39 3317 \begin_layout Plain Layout
jb302@39 3318 101
jb302@39 3319 \end_layout
jb302@39 3320
jb302@39 3321 \end_inset
jb302@39 3322 </cell>
jb302@39 3323 </row>
jb302@39 3324 <row>
jb302@39 3325 <cell alignment="center" valignment="top" topline="true" leftline="true" usebox="none">
jb302@39 3326 \begin_inset Text
jb302@39 3327
jb302@39 3328 \begin_layout Plain Layout
jb302@39 3329 SPH
jb302@39 3330 \end_layout
jb302@39 3331
jb302@39 3332 \end_inset
jb302@39 3333 </cell>
jb302@39 3334 <cell alignment="center" valignment="top" topline="true" leftline="true" rightline="true" usebox="none">
jb302@39 3335 \begin_inset Text
jb302@39 3336
jb302@39 3337 \begin_layout Plain Layout
jb302@39 3338 110
jb302@39 3339 \end_layout
jb302@39 3340
jb302@39 3341 \end_inset
jb302@39 3342 </cell>
jb302@39 3343 </row>
jb302@39 3344 <row>
jb302@39 3345 <cell alignment="center" valignment="top" topline="true" bottomline="true" leftline="true" usebox="none">
jb302@39 3346 \begin_inset Text
jb302@39 3347
jb302@39 3348 \begin_layout Plain Layout
jb302@39 3349 SPL
jb302@39 3350 \end_layout
jb302@39 3351
jb302@39 3352 \end_inset
jb302@39 3353 </cell>
jb302@39 3354 <cell alignment="center" valignment="top" topline="true" bottomline="true" leftline="true" rightline="true" usebox="none">
jb302@39 3355 \begin_inset Text
jb302@39 3356
jb302@39 3357 \begin_layout Plain Layout
jb302@39 3358 111
jb302@39 3359 \end_layout
jb302@39 3360
jb302@39 3361 \end_inset
jb302@39 3362 </cell>
jb302@39 3363 </row>
jb302@39 3364 </lyxtabular>
jb302@39 3365
jb302@39 3366 \end_inset
jb302@39 3367
jb302@39 3368
jb302@39 3369 \end_layout
jb302@39 3370
jb302@39 3371 \begin_layout Section
jb302@39 3372 Porting to Intel MCS-51
jb302@39 3373 \end_layout
jb302@39 3374
jb302@39 3375 \begin_layout Standard
jb302@39 3376 In order make this code compile for an 8052 using Keil C51 a few changes
jb302@39 3377 to were needed.
jb302@39 3378 These are detailed below.
jb302@39 3379 \end_layout
jb302@39 3380
jb302@39 3381 \begin_layout Subsection
jb302@39 3382 main.c
jb302@39 3383 \end_layout
jb302@39 3384
jb302@39 3385 \begin_layout Standard
jb302@39 3386 In the PC version of the emulator, the function table is declared as:
jb302@39 3387 \end_layout
jb302@39 3388
jb302@39 3389 \begin_layout Standard
jb302@39 3390 \begin_inset listings
jb302@41 3391 lstparams "basicstyle={\ttfamily},frame=tb,framexbottommargin=1em,framextopmargin=1em,language=C"
jb302@39 3392 inline false
jb302@39 3393 status open
jb302@39 3394
jb302@39 3395 \begin_layout Plain Layout
jb302@39 3396
jb302@39 3397 FUNCTION_TABLE const iset
jb302@39 3398 \end_layout
jb302@39 3399
jb302@39 3400 \end_inset
jb302@39 3401
jb302@39 3402
jb302@39 3403 \end_layout
jb302@39 3404
jb302@39 3405 \begin_layout Standard
jb302@39 3406 Since the instruction set is 256 bytes long and the 8052 only has 256 bytes
jb302@39 3407 of internal RAM, this data structure must be redeclared to exist in code
jb302@39 3408 memory space.
jb302@39 3409 \end_layout
jb302@39 3410
jb302@39 3411 \begin_layout Standard
jb302@39 3412 \begin_inset listings
jb302@41 3413 lstparams "basicstyle={\ttfamily},frame=tb,framexbottommargin=1em,framextopmargin=1em,language=C"
jb302@39 3414 inline false
jb302@39 3415 status open
jb302@39 3416
jb302@39 3417 \begin_layout Plain Layout
jb302@39 3418
jb302@39 3419 FUNCTION_TABLE const code iset
jb302@39 3420 \end_layout
jb302@39 3421
jb302@39 3422 \end_inset
jb302@39 3423
jb302@39 3424
jb302@39 3425 \end_layout
jb302@39 3426
jb302@39 3427 \begin_layout Standard
jb302@39 3428 \begin_inset Newpage pagebreak
jb302@39 3429 \end_inset
jb302@39 3430
jb302@39 3431
jb302@39 3432 \end_layout
jb302@39 3433
jb302@39 3434 \begin_layout Standard
jb302@39 3435 The PC version of the emulator uses a file buffer to communicate with the
jb302@39 3436 debugger.
jb302@39 3437 On the 8052 communication uses a serial interface.
jb302@39 3438 Because of this the snd() functions differ.
jb302@39 3439 \end_layout
jb302@39 3440
jb302@39 3441 \begin_layout Standard
jb302@39 3442 On the PC
jb302@39 3443 \end_layout
jb302@39 3444
jb302@39 3445 \begin_layout Standard
jb302@39 3446 \begin_inset listings
jb302@41 3447 lstparams "basicstyle={\ttfamily},frame=tb,framexbottommargin=1em,framextopmargin=1em,language=C"
jb302@39 3448 inline false
jb302@39 3449 status open
jb302@39 3450
jb302@39 3451 \begin_layout Plain Layout
jb302@39 3452
jb302@39 3453 snd(BYTE c) {
jb302@39 3454 \end_layout
jb302@39 3455
jb302@39 3456 \begin_layout Plain Layout
jb302@39 3457
jb302@39 3458 fp = fopen("out", "a");
jb302@39 3459 \end_layout
jb302@39 3460
jb302@39 3461 \begin_layout Plain Layout
jb302@39 3462
jb302@39 3463 fputc(c, fp);
jb302@39 3464 \end_layout
jb302@39 3465
jb302@39 3466 \begin_layout Plain Layout
jb302@39 3467
jb302@39 3468 fclose(fp);
jb302@39 3469 \end_layout
jb302@39 3470
jb302@39 3471 \begin_layout Plain Layout
jb302@39 3472
jb302@39 3473 }
jb302@39 3474 \end_layout
jb302@39 3475
jb302@39 3476 \end_inset
jb302@39 3477
jb302@39 3478
jb302@39 3479 \end_layout
jb302@39 3480
jb302@39 3481 \begin_layout Standard
jb302@39 3482 Becomes on the 8052, simply:
jb302@39 3483 \end_layout
jb302@39 3484
jb302@39 3485 \begin_layout Standard
jb302@39 3486 \begin_inset listings
jb302@41 3487 lstparams "basicstyle={\ttfamily},frame=tb,framexbottommargin=1em,framextopmargin=1em,language=C"
jb302@39 3488 inline false
jb302@39 3489 status open
jb302@39 3490
jb302@39 3491 \begin_layout Plain Layout
jb302@39 3492
jb302@39 3493 snd(BYTE c) {
jb302@39 3494 \end_layout
jb302@39 3495
jb302@39 3496 \begin_layout Plain Layout
jb302@39 3497
jb302@39 3498 putchar(c);
jb302@39 3499 \end_layout
jb302@39 3500
jb302@39 3501 \begin_layout Plain Layout
jb302@39 3502
jb302@39 3503 }
jb302@39 3504 \end_layout
jb302@39 3505
jb302@39 3506 \end_inset
jb302@39 3507
jb302@39 3508
jb302@39 3509 \end_layout
jb302@39 3510
jb302@39 3511 \begin_layout Standard
jb302@39 3512 The 8052's serial point also needs to be configures at the start of main
jb302@39 3513 execution like this:
jb302@39 3514 \end_layout
jb302@39 3515
jb302@39 3516 \begin_layout Standard
jb302@39 3517 \begin_inset listings
jb302@41 3518 lstparams "basicstyle={\ttfamily},frame=tb,framexbottommargin=1em,framextopmargin=1em,language=C"
jb302@39 3519 inline false
jb302@39 3520 status open
jb302@39 3521
jb302@39 3522 \begin_layout Plain Layout
jb302@39 3523
jb302@41 3524 SCON = 0x50; * SCON - mode 1, 8-bit UART, enable rcvr
jb302@41 3525 \end_layout
jb302@41 3526
jb302@41 3527 \begin_layout Plain Layout
jb302@41 3528
jb302@41 3529 TMOD |= 0x20; * TMOD - timer 1, mode 2, 8-bit reload
jb302@41 3530 \end_layout
jb302@41 3531
jb302@41 3532 \begin_layout Plain Layout
jb302@41 3533
jb302@41 3534 TH1 = 0xE8; * TH1 - reload value for 1200 baud@12MHz
jb302@41 3535 \end_layout
jb302@41 3536
jb302@41 3537 \begin_layout Plain Layout
jb302@41 3538
jb302@41 3539 TR1 = 1; * TR1 - timer 1 run
jb302@41 3540 \end_layout
jb302@41 3541
jb302@41 3542 \begin_layout Plain Layout
jb302@41 3543
jb302@41 3544 TI = 1; * TI - set TI to send first char of UART
jb302@39 3545 \end_layout
jb302@39 3546
jb302@39 3547 \end_inset
jb302@39 3548
jb302@39 3549
jb302@39 3550 \end_layout
jb302@39 3551
jb302@39 3552 \begin_layout Subsection
jb302@39 3553 mem.h
jb302@39 3554 \end_layout
jb302@39 3555
jb302@39 3556 \begin_layout Standard
jb302@39 3557 The 8052 development board available during this project had 32K of external
jb302@39 3558 RAM available.
jb302@39 3559 This meant the size of the emulators Von Neumann memory space had to be
jb302@39 3560 halved and declared to exist in external data memory.
jb302@39 3561 \end_layout
jb302@39 3562
jb302@39 3563 \begin_layout Standard
jb302@39 3564 On the PC:
jb302@39 3565 \end_layout
jb302@39 3566
jb302@39 3567 \begin_layout Standard
jb302@39 3568 \begin_inset listings
jb302@41 3569 lstparams "basicstyle={\ttfamily},frame=tb,framexbottommargin=1em,framextopmargin=1em,keywordstyle={\color{blue}},language=C"
jb302@39 3570 inline false
jb302@39 3571 status open
jb302@39 3572
jb302@39 3573 \begin_layout Plain Layout
jb302@39 3574
jb302@39 3575 BYTE mem[0x10000];
jb302@39 3576 \end_layout
jb302@39 3577
jb302@39 3578 \end_inset
jb302@39 3579
jb302@39 3580
jb302@39 3581 \end_layout
jb302@39 3582
jb302@39 3583 \begin_layout Standard
jb302@39 3584 On the 8052
jb302@39 3585 \end_layout
jb302@39 3586
jb302@39 3587 \begin_layout Standard
jb302@39 3588 \begin_inset listings
jb302@41 3589 lstparams "basicstyle={\ttfamily},frame=tb,framexbottommargin=1em,framextopmargin=1em,keywordstyle={\color{blue}},language=C"
jb302@39 3590 inline false
jb302@39 3591 status open
jb302@39 3592
jb302@39 3593 \begin_layout Plain Layout
jb302@39 3594
jb302@39 3595 BYTE xdata mem[0x8000];
jb302@39 3596 \end_layout
jb302@39 3597
jb302@39 3598 \end_inset
jb302@39 3599
jb302@39 3600
jb302@39 3601 \end_layout
jb302@39 3602
jb302@39 3603 \begin_layout Standard
jb302@39 3604 \begin_inset Newpage pagebreak
jb302@39 3605 \end_inset
jb302@39 3606
jb302@38 3607
jb302@38 3608 \end_layout
jb302@38 3609
jb302@37 3610 \begin_layout Section
jb302@37 3611 Emulator Testing
jb302@37 3612 \end_layout
jb302@37 3613
jb302@41 3614 \begin_layout Standard
jb302@41 3615 The assemblers memory structures and access functions were tested by using
jb302@41 3616 the access function to set the memory structures to know values, and then
jb302@41 3617 request the values back and write them to a file.
jb302@41 3618 The file was then inspected by hand.
jb302@41 3619 The test files and results can be found in the Supporting Material.
jb302@41 3620
jb302@41 3621 \end_layout
jb302@41 3622
jb302@41 3623 \begin_layout Standard
jb302@41 3624 \begin_inset ERT
jb302@41 3625 status open
jb302@41 3626
jb302@41 3627 \begin_layout Plain Layout
jb302@41 3628
jb302@41 3629
jb302@41 3630 \backslash
jb302@41 3631 bigskip
jb302@41 3632 \end_layout
jb302@41 3633
jb302@41 3634 \end_inset
jb302@41 3635
jb302@41 3636
jb302@41 3637 \end_layout
jb302@41 3638
jb302@41 3639 \begin_layout Standard
jb302@41 3640 The emulator could be more rigorously tested in conjunction with the debugger
jb302@41 3641 and assembler.
jb302@41 3642 Below is a pseudo-code representation of an automated test procedure that
jb302@41 3643 could be implemented with the debug class in python.
jb302@41 3644 \end_layout
jb302@41 3645
jb302@41 3646 \begin_layout Standard
jb302@41 3647 \begin_inset ERT
jb302@41 3648 status open
jb302@41 3649
jb302@41 3650 \begin_layout Plain Layout
jb302@41 3651
jb302@41 3652
jb302@41 3653 \backslash
jb302@41 3654 bigskip
jb302@41 3655 \end_layout
jb302@41 3656
jb302@41 3657 \end_inset
jb302@41 3658
jb302@41 3659
jb302@41 3660 \end_layout
jb302@41 3661
jb302@41 3662 \begin_layout Standard
jb302@41 3663 \begin_inset listings
jb302@41 3664 lstparams "basicstyle={\ttfamily},frame=tb,framexbottommargin=1em,framextopmargin=1em,language=C"
jb302@41 3665 inline false
jb302@41 3666 status open
jb302@41 3667
jb302@41 3668 \begin_layout Plain Layout
jb302@41 3669
jb302@41 3670 for instruction in instruction set:
jb302@41 3671 \end_layout
jb302@41 3672
jb302@41 3673 \begin_layout Plain Layout
jb302@41 3674
jb302@41 3675 reset emulator memory state
jb302@41 3676 \end_layout
jb302@41 3677
jb302@41 3678 \begin_layout Plain Layout
jb302@41 3679
jb302@41 3680 assemble instruction
jb302@41 3681 \end_layout
jb302@41 3682
jb302@41 3683 \begin_layout Plain Layout
jb302@41 3684
jb302@41 3685 write instruction to memory
jb302@41 3686 \end_layout
jb302@41 3687
jb302@41 3688 \begin_layout Plain Layout
jb302@41 3689
jb302@41 3690 execute instruction
jb302@41 3691 \end_layout
jb302@41 3692
jb302@41 3693 \begin_layout Plain Layout
jb302@41 3694
jb302@41 3695
jb302@41 3696 \end_layout
jb302@41 3697
jb302@41 3698 \begin_layout Plain Layout
jb302@41 3699
jb302@41 3700 get all registers
jb302@41 3701 \end_layout
jb302@41 3702
jb302@41 3703 \begin_layout Plain Layout
jb302@41 3704
jb302@41 3705 get all flags
jb302@41 3706 \end_layout
jb302@41 3707
jb302@41 3708 \begin_layout Plain Layout
jb302@41 3709
jb302@41 3710 get any affected memory cells
jb302@41 3711 \end_layout
jb302@41 3712
jb302@41 3713 \begin_layout Plain Layout
jb302@41 3714
jb302@41 3715 \end_layout
jb302@41 3716
jb302@41 3717 \begin_layout Plain Layout
jb302@41 3718
jb302@41 3719 if and only if expected register changes occoured:
jb302@41 3720 \end_layout
jb302@41 3721
jb302@41 3722 \begin_layout Plain Layout
jb302@41 3723
jb302@41 3724 register test passed
jb302@41 3725 \end_layout
jb302@41 3726
jb302@41 3727 \begin_layout Plain Layout
jb302@41 3728
jb302@41 3729 if and only if expected flag changes occoured:
jb302@41 3730 \end_layout
jb302@41 3731
jb302@41 3732 \begin_layout Plain Layout
jb302@41 3733
jb302@41 3734 flag test passed
jb302@41 3735 \end_layout
jb302@41 3736
jb302@41 3737 \begin_layout Plain Layout
jb302@41 3738
jb302@41 3739 if expected memory modification occoured:
jb302@41 3740 \end_layout
jb302@41 3741
jb302@41 3742 \begin_layout Plain Layout
jb302@41 3743
jb302@41 3744 memory test passed
jb302@41 3745 \end_layout
jb302@41 3746
jb302@41 3747 \end_inset
jb302@41 3748
jb302@41 3749
jb302@41 3750 \end_layout
jb302@41 3751
jb302@37 3752 \end_body
jb302@37 3753 \end_document