Canola Questions

Questions to be put to a real 1614P.

All these questions are with the decimal point dial set to “F”, and the rounding switch set to “5/4”.

The [SM3] notation means the [SM3~] key followed by the [3] key, similarly for memories larger than 3, and similarly for [+Mn], [SMn], [CMn], and [RMn] notations. Think of it as the opcode, rather than the key sequence needed to produce the opcode.

  1. in which column is RV printed?
    (file canola/calculator/gnome.cc, line 973)
  2. in which column is SFJ printed?
    (file canola/calculator/gnome.cc, line 980)
  3. in which column is SUJ printed?
    (file canola/calculator/gnome.cc, line 987)
  4. in which column is SRJ printed?
    (file canola/calculator/gnome.cc, line 994)
  5. in which column is [->] printed?
    (file canola/calculator/gnome.cc, line 1001)
  6. in which column is CHG_SIGN printed?
    (file canola/calculator/gnome.cc, line 1008)
  7. in which column is SM printed?
    (file canola/calculator/gnome.cc, line 1071)
  8. In the Test Run Program, what is displayed at each ENTRY light?
    (file datadir/program-card-package/test-run-program.txt, line 28)
  9. In LRN mode, with the Program Selector Switch is set to "I+II", if the display address is more than 121, what happends if the Program Selector Switch is set to "I"? Does the address change? If so, to what?
    (file lib/calculator.cc, line 142)
  10. In LRN mode, with the Program Selector Switch is set to "I+II", if the display address is less than 120, what happends if the Program Selector Switch is set to "II"? Does the address change? If so, to what?
    (file lib/calculator.cc, line 153)
  11. If executing in bank II, does UJ find FJ in bank I?
    (file lib/calculator.cc, line 282)
  12. does UJ ignore the Program Select Switch when looking for FJ?
    (file lib/calculator.cc, line 309)
  13. When searching for a FJ label, how many steps can it scan per second? The Instruction Manual says distant jumps are slower, but how much slower?
    (file lib/calculator.cc, line 327)
  14. How many instructions are executed per second?
    (file lib/calculator/execute_one_instruction.cc, line 28)
  15. Do all instructions execute at the same speed? We already know that PRINT (420ms) and FEED (290ms) take longer than other opcodes.
    (file lib/calculator/execute_one_instruction.cc, line 32)
  16. Does opcode $000 mean "goto 1" or does opcode $000 mean "skip 1"?

    How to tell the difference:
    If I use the program bank selector switch, put a program in bank I and a second program in bank II, then set the program bank selector switch to I+II. When the program is executed, at the end of bank I (hitting a $000 opcode) does it goto address 1, or does it execute the first opcode in bank II?
    (file lib/calculator/execute_one_instruction.cc, line 57)

  17. If we have [2] [EJ] {flag} in a program, and execution reaches the EJ opcode, does pressing [3] display "3" or "23" or something else?
    (file lib/calculator/execute_one_instruction.cc, line 171)
  18. How deep is the subroutine call stack? Or, to ask it another way, can you nest SUJ calls?
    (file lib/calculator/execute_one_instruction.cc, line 247)
  19. What happens when you SUJ to a non-existent SFJ?
    (file lib/calculator/execute_one_instruction.cc, line 258)
  20. What happens when you SRJ but no subroutine was called?
    (file lib/calculator/execute_one_instruction.cc, line 263)
  21. Does program execution stop if M1 overflows?
    (file lib/calculator/on_opcode_ope.cc, line 31)
  22. Is the K constant negative when you use [-=] ?
    (file lib/calculator/on_opcode_ope.cc, line 124)
  23. What does "[K] 2 [X] 3 [-=] 5 [+=]" display?
    (file lib/calculator/on_opcode_ope.cc, line 152)
  24. When in AM1 mode, is the x-register rounded before or after adding it to M1?
    (file lib/calculator/on_opcode_ope.cc, line 200)
  25. Do the examples on Instruction Mananual p.25 work?
    (file lib/calculator/on_opcode_ope.cc, line 244)
  26. What does "[C] 2 [sqrt] [RV]" display?
    (file lib/calculator/on_opcode_ope.cc, line 490)
  27. What does "[C] 3 [+M1] [C] [RM1] 2 [sqrt] [RV]" dispay?
    (file lib/calculator/on_opcode_ope.cc, line 491)
  28. Does the [sqrt] key clear the K constant?
    (file lib/calculator/on_opcode_ope.cc, line 525)
  29. In OPE mode, with a program running, what happens when the UJ key is pressed? I've seen suggestions that this will halt execution. Does execution stop immediately, or does it wait for the second key?
    (file lib/calculator/on_opcode_ope.cc, line 585)
  30. Does program executuion stop if [+M9] overflows?
    (file lib/calculator/on_opcode_ope.cc, line 621)
  31. Does program executuion stop if [-M2] overflows?
    (file lib/calculator/on_opcode_ope.cc, line 622)
  32. What does "1 m2 m2 c rm2 .3 m1 2 +=" display?
    (file lib/calculator/on_opcode_ope.cc, line 644)
  33. What does [5] [x] [-m1] [3] [+=] display?
    (file lib/calculator/on_opcode_ope.cc, line 726)
  34. What does [1] [2] [SM9] [3] display?
    (file lib/calculator/on_opcode_ope.cc, line 765)
  35. What does "[C] [2] [SM5] [4]" display?
    (file lib/calculator/on_opcode_ope.cc, line 784)
  36. What does "[RM2] .3 [SM9] 4" display?
    (file lib/calculator/on_opcode_ope.cc, line 792)
  37. What does "[C] [2] [sqrt] [SM9] [3]" display?
    (file lib/calculator/on_opcode_ope.cc, line 798)
  38. What does "5 [x] 6 [SM9] [7] [+=]" display?
    (file lib/calculator/on_opcode_ope.cc, line 809)
  39. What does "5 [x] 0.6 [SM9] 7 [+=]" display?
    (file lib/calculator/on_opcode_ope.cc, line 815)
  40. What does "5 [x] 2 [sqrt] [SM9] 7 [+=]" display?
    (file lib/calculator/on_opcode_ope.cc, line 821)
  41. What does "3 +M1 C 5 SM9 c RM1 2 RM9 +=" display?
    (file lib/calculator/on_opcode_ope.cc, line 856)
  42. What does "3 +M1 C 5 SM9 C RM1 .2 RM9 +=" display?
    (file lib/calculator/on_opcode_ope.cc, line 864)
  43. What does "7 [M1] [C] [RM1] [2] [CI] [3] [RV]" display?
    (file lib/calculator/on_opcode_ope.cc, line 962)
  44. What does "7 [M1] [C] [RM1] [2] [CI] [3] [RV] [RV]" display?
    (file lib/calculator/on_opcode_ope.cc, line 964)
  45. What does "12 [x] 34 [ci] 56 [+=]" display?
    (file lib/calculator/on_opcode_ope.cc, line 992)
  46. What does "[C] [2] [X] [.] [3] [CI] 4 [RV]" display?
    (file lib/calculator/on_opcode_ope.cc, line 1000)
  47. Does the ENT opcode terminate numeric entry, or can add digits?
    (file lib/calculator/on_opcode_ope.cc, line 1358)
  48. Does the EJ opcode terminate numeric entry, or can add digits?
    (file lib/calculator/on_opcode_ope.cc, line 1363)
  49. What does "[1] [.] [2] [DrintDisp] [3]" do?
    (file lib/calculator/on_opcode_ope.cc, line 1390)
  50. What happens in OPE CHE when an ENT opcode is seen? Does it display the x-register so you can enter a number? Does the SJ key take you to address 1, like in OPE mode?
    (file lib/calculator/on_opcode_ope_che.cc, line 45)
  51. What happens in OPE CHE when an SJ opcode is seen? Does it display the x-register so you can decide? Does the SJ key take you to the branch destination?
    (file lib/calculator/on_opcode_ope_che.cc, line 53)
  52. What happens in OPE CHE when an EJ opcode is seen? Does it display the x-register so you can enter a number? Does the SJ key take you to address 1, like in OPE mode?
    (file lib/calculator/on_opcode_ope_che.cc, line 76)
  53. In OPE CHE mode, does the C key also clear overflow? Does it also clear x-register and y-register?
    (file lib/calculator/on_opcode_ope_che.cc, line 178)
  54. What does the dot in digit 16 mean in LRN mode? Does PRO CHE mode have the dot in a different column?
    (file lib/calculator/update_display.cc, line 62)
  55. Does division strip redundant decimal places to the right of the decimal point?
    (file lib/number/division.cc, line 53)
  56. Is zero supression active for overflowed values? It probably should not be, cponsidering there are valid digits to the left of those displayed.
    (file lib/number/get_display.cc, line 53)
  57. What happens if too many decimal places are added? What is displayed when "[C] 1234567890.123456" has been entered, and the [7] is pressed? Does it overflow, does it discard the 7 and leave the display unchanged, or something else?
    (file lib/number/insert.cc, line 42)
  58. Does multiply strip redundant decimal places to the right of the decimal point? Does "1.25 [times] 1.22 [+=]" display "1.525" or "1.5250"?
    (file lib/number/multiplication.cc, line 47)
  59. When you have an overflow on the screen (e.g. divide by zero, 9999999999999999) when you press [->] what is displayed? Is it "0.", "999999999999999.", or something else?
    (file lib/number/right-shift.cc, line 26)
  60. When a calculation overflows, an you press [->] to clear it, what happens to the display? Is the overflow light cleared, but the value on the screen changes? Does the value on the screen becoem 15 digits, with a leading 0 digit? Does the 17th digit get shifted in?
    (file lib/number/right-shift.cc, line 46)
  61. When rounding UP to zero decimals, does 2.01 become 2 or 3? This is a question of does it only consult the first decimal, or all the decimals to be round up? (One is fast, the other is accurate.)
    (file lib/number/round.cc, line 48)
  62. Does sqrt strip redundant zero decimal places to the right of the decimal point? Does [9] [sqrt] display "3." or "3.0000000000000000"?
    (file lib/number/sqrt.cc, line 73)
  63. When execution flows past an SFJ opcode, is it a no-op?
    (file man/man5/canola-asm.5, line 220)
  64. what does "3 M1 M1 C RM1 2 CI 5 +=" display?
    (file test/01/t0122a.sh, line 22)
  65. what does "7 M1 M1 C RM1 .2 CI 5 +=" display?
    (file test/01/t0123a.sh, line 22)
  66. what does "7 M1 M1 C RM1 .2 CI RV" display?
    (file test/01/t0123a.sh, line 23)