diff --git a/0.jpg b/0.jpg new file mode 100644 index 0000000..70ad1e5 Binary files /dev/null and b/0.jpg differ diff --git a/1.jpg b/1.jpg new file mode 100644 index 0000000..cb65576 Binary files /dev/null and b/1.jpg differ diff --git a/2.jpg b/2.jpg new file mode 100644 index 0000000..11971f0 Binary files /dev/null and b/2.jpg differ diff --git a/3.jpg b/3.jpg new file mode 100644 index 0000000..157bb02 Binary files /dev/null and b/3.jpg differ diff --git a/4.jpg b/4.jpg new file mode 100644 index 0000000..b537722 Binary files /dev/null and b/4.jpg differ diff --git a/5.jpg b/5.jpg new file mode 100644 index 0000000..e9b64c1 Binary files /dev/null and b/5.jpg differ diff --git a/6.jpg b/6.jpg new file mode 100644 index 0000000..46e7067 Binary files /dev/null and b/6.jpg differ diff --git a/7.jpg b/7.jpg new file mode 100644 index 0000000..146cbb2 Binary files /dev/null and b/7.jpg differ diff --git a/8.jpg b/8.jpg new file mode 100644 index 0000000..a7aee6e Binary files /dev/null and b/8.jpg differ diff --git a/monet_09.jpg b/9.jpg similarity index 100% rename from monet_09.jpg rename to 9.jpg diff --git a/GetUserChoice+StepUpdate+WinState.ipynb b/GetUserChoice+StepUpdate+WinState.ipynb deleted file mode 100644 index 6fd2247..0000000 --- a/GetUserChoice+StepUpdate+WinState.ipynb +++ /dev/null @@ -1,339 +0,0 @@ -{ - "cells": [ - { - "cell_type": "code", - "execution_count": 49, - "metadata": { - "scrolled": true - }, - "outputs": [ - { - "name": "stdout", - "output_type": "stream", - "text": [ - "Assembled! Use %dis or %dump to examine; use %exe to run.\n" - ] - } - ], - "source": [ - ".ORIG x3000\n", - ".SET MODE TERMINAL\n", - " JSR GETCHOICE\n", - " TRAP x22\n", - " AND R0, #0\n", - " ADD R0, R0, #15\n", - " ADD R0, R0, #15\n", - " ADD R0, R0, #15\n", - " ADD R0, R0, #4\n", - " ADD R5, R5, #1\n", - " ;TRAP x23\n", - " JSR GETSTEP\n", - " HALT\n", - " \n", - "GETCHOICE: AND R0, #0\n", - " LEA R0, ASKFORCHOICE\n", - " RET\n", - " \n", - ";;R1 -- UPDATE THE RESULT\n", - ";;R5 -- STEP LIMIT\n", - ";;R6 -- ADDRESS IN R7(return address)\n", - ";;R2 -- GOAL\n", - "\n", - "GETSTEP: ADD R0, R0, #-15\n", - " ADD R0, R0, #-15\n", - " ADD R0, R0, #-15\n", - " ;;;;;;;;;;;;;;;;;;;;start stack\n", - " LD R6, REG7_TOP\n", - " STR R7, R6, #0\n", - " ;;;;;;;;;;;;;;;;;;;;Finish pushing R7 on stack\n", - " ADD R0, R0, #-4\n", - " BRz OPERATION1\n", - " ADD R6, R6, #-1\n", - " LDR R7, R6, #0\n", - " ;;;;;;;;;;;;;;;;;;;;Finish poping \n", - " ;ST R6, REG6\n", - " ADD R0, R0, #-1\n", - " BRz OPERATION2\n", - " ADD R0, R0, #-1\n", - " BRz OPERATION3\n", - " RET\n", - "\n", - "OPERATION1: ;;;;;;;;;;;;;;;;; operations(need to change @Eileen)\n", - " ADD R1, R1, #5\n", - " ;;;;;;;;;;;;;;;;; start stack\n", - " ADD R6, R6, #1\n", - " STR R7, R6, #0\n", - " ;;;;;;;;;;;;;;;;; Finish pushing R7 on stack\n", - " JSR CHECKSTEP\n", - " ADD R6, R6, #-1\n", - " LDR R7, R6, #0\n", - " ;;;;;;;;;;;;;;;;; Finish poping \n", - " RET\n", - "\n", - "OPERATION2: ADD R1,R1,#5\n", - " ;JSR CHECKSTEP\n", - " RET\n", - "\n", - "OPERATION3: ADD R1,R1,#8\n", - " ;JSR CHECKSTEP\n", - " RET\n", - " \n", - "CHECKSTEP: ;;;;;;;;;;;;;;;;;; update step\n", - " ;;;;;;;;;;;;;;;;;; start stack\n", - " ADD R6, R6, #1\n", - " STR R7, R6, #0\n", - " ;;;;;;;;;;;;;;;;;; finish pushing R7\n", - " ADD R5, R5, #-1\n", - " BRz FINALSTATE\n", - " ADD R6, R6, #-1\n", - " LDR R7, R6, #0\n", - " ;;;;;;;;;;;;;;;;;; FINISH POPING\n", - " ;;BRp CHECK_NUM\n", - " RET\n", - "\n", - "FINALSTATE:;;;;;;;;;;;;;;;;;; when step limit is consumed \n", - " ;;;;;;;;;;;;;;;;; start stack\n", - " ADD R6, R6, #1\n", - " STR R7, R6, #0\n", - " ;;;;;;;;;;;;;;;;;; finish pushing R7\n", - " LD R2, GOAL\n", - " NOT R2, R2\n", - " ADD R2, R2, #1\n", - " ADD R1, R1, R2\n", - " BRz WIN_STATE\n", - " ADD R6, R6, #-1\n", - " LDR R7, R6, #0\n", - " ;;;;;;;;;;;;;;;;;; FINISH POPING\n", - " ;;JSR LOSE_STATE\n", - " RET\n", - "\n", - "LOSE_STATE: RET \n", - "\n", - "WIN_STATE: ;;;;;;;;;;;;;;;;; start stack\n", - " ADD R6, R6, #1\n", - " STR R7, R6, #0\n", - " ;;;;;;;;;;;;;;;;;; finish pushing R7\n", - " JSR WIN_MES\n", - " TRAP x22\n", - " ADD R6, R6, #-1\n", - " LDR R7, R6, #0\n", - " ;;;;;;;;;;;;;;;;;; FINISH POPING\n", - " ;;;;;;;;;;;;;;;;; start stack\n", - " ADD R6, R6, #1\n", - " STR R7, R6, #0\n", - " ;;;;;;;;;;;;;;;;;; finish pushing R7\n", - " AND R0, #0\n", - " JSR WIN_PIC\n", - " TRAP x22\n", - " ;ADD R6, R6, #-1\n", - " LDR R7, R6, #0\n", - " ;;;;;;;;;;;;;;;;;; FINISH POPING\n", - " HALT\n", - " \n", - "WIN_MES: AND R0, #0\n", - " LEA R0, WIN_M\n", - " RET\n", - " \n", - "WIN_PIC: AND R0, #0\n", - " LEA R0, HEADER\n", - " TERMINAL R0, 0\n", - " RET\n", - " \n", - "REG7: .BLKW #10\n", - "REG6: .FILL #0\n", - "REG7_TOP: .FILL REG7\n", - "TEMP: .FILL #0\n", - "TEMP2: .FILL #0\n", - "TEMP3: .FILL #0\n", - "GOAL: .FILL #5\n", - "ASKFORCHOICE: .STRINGZ \"Please enter your choice(1 or 2 or 3):\"\n", - "GAMEOPS: .STRINGZ \"(1)A -= 1 (2)A /= 2 (if A%2 == 0) (3)A =/ 3(if A%3 == 0)\\n\"\n", - "INITIAL: .STRINGZ \"12\"\n", - "WIN_M: .STRINGZ \"\\nYOU WIN!\"\n", - "HEADER: .STRINGZ \"\" \n", - ".END " - ] - }, - { - "cell_type": "code", - "execution_count": 50, - "metadata": {}, - "outputs": [ - { - "name": "stdout", - "output_type": "stream", - "text": [ - "Please enter your choice(1 or 2 or 3):\n", - "YOU WIN!" - ] - }, - { - "data": { - "text/html": [ - "
" - ], - "text/plain": [ - "" - ] - }, - "metadata": {}, - "output_type": "display_data" - }, - { - "name": "stdout", - "output_type": "stream", - "text": [ - "============================================================\n", - "Computation completed\n", - "============================================================\n", - "Instructions: 2130\n", - "Cycles: 17562 (0.008781 milliseconds)\n", - "\n", - "============================================================\n", - "Registers:\n", - "============================================================\n", - "PC: x048E\n", - "N: 0 Z: 0 P: 1 \n", - "R0: x30D0 R1: x0000 R2: xFFFB R3: x0000 \n", - "R4: x0000 R5: x0000 R6: x3050 R7: x3045 \n" - ] - } - ], - "source": [ - "%exe" - ] - }, - { - "cell_type": "code", - "execution_count": 30, - "metadata": {}, - "outputs": [ - { - "name": "stdout", - "output_type": "stream", - "text": [ - "============================================================\n", - "Memory disassembled:\n", - "============================================================\n", - " x3000: x4809 JSR GETCHOICE [line: 2]\n", - " x3001: xF022 PUTS [line: 3]\n", - " x3002: x5020 AND R0, R0, #0 [line: 4]\n", - " x3003: x102F ADD R0, R0, #15 [line: 5]\n", - " x3004: x102F ADD R0, R0, #15 [line: 6]\n", - " x3005: x102F ADD R0, R0, #15 [line: 7]\n", - " x3006: x1024 ADD R0, R0, #4 [line: 8]\n", - " x3007: x1B61 ADD R5, R5, #1 [line: 9]\n", - " x3008: x4804 JSR GETSTEP [line: 11]\n", - " x3009: xF025 HALT [line: 12]\n", - "GETCHOICE: x300A: x5020 AND R0, R0, #0 [line: 16]\n", - " x300B: xE03C LEA R0, ASKFORCHOICE [line: 17]\n", - " x300C: xC1C0 RET [line: 18]\n", - "GETSTEP: x300D: x1031 ADD R0, R0, #-15 [line: 25]\n", - " x300E: x1031 ADD R0, R0, #-15 [line: 26]\n", - " x300F: x1031 ADD R0, R0, #-15 [line: 27]\n", - " x3010: x2C32 LD R6, REG7_TOP [line: 29]\n", - " x3011: x7F80 STR R7, R6, 0 [line: 30]\n", - " x3012: x103C ADD R0, R0, #-4 [line: 32]\n", - " x3013: x0407 BRz OPERATION1 (or 7) [line: 33]\n", - " x3014: x1DBF ADD R6, R6, #-1 [line: 34]\n", - " x3015: x6F80 LDR R7, R6, 0 [line: 35]\n", - " x3016: x103F ADD R0, R0, #-1 [line: 38]\n", - " x3017: x040A BRz OPERATION2 (or 10) [line: 39]\n", - " x3018: x103F ADD R0, R0, #-1 [line: 40]\n", - " x3019: x040A BRz OPERATION3 (or 10) [line: 41]\n", - " x301A: xC1C0 RET [line: 42]\n", - "OPERATION1: x301B: x1269 ADD R1, R1, #9 [line: 45]\n", - " x301C: x1DA1 ADD R6, R6, #1 [line: 47]\n", - " x301D: x7F80 STR R7, R6, 0 [line: 48]\n", - " x301E: x4807 JSR CHECKSTEP [line: 50]\n", - " x301F: x1DBF ADD R6, R6, #-1 [line: 51]\n", - " x3020: x6F80 LDR R7, R6, 0 [line: 52]\n", - " x3021: xC1C0 RET [line: 54]\n", - "OPERATION2: x3022: x1265 ADD R1, R1, #5 [line: 56]\n", - " x3023: xC1C0 RET [line: 58]\n", - "OPERATION3: x3024: x1268 ADD R1, R1, #8 [line: 60]\n", - " x3025: xC1C0 RET [line: 62]\n", - "CHECKSTEP: x3026: x1DA1 ADD R6, R6, #1 [line: 66]\n", - " x3027: x7F80 STR R7, R6, 0 [line: 67]\n", - " x3028: x1B7F ADD R5, R5, #-1 [line: 69]\n", - " x3029: x0402 BRz FINALSTATE (or 2) [line: 70]\n", - " x302A: x6F80 LDR R7, R6, 0 [line: 72]\n", - " x302B: xC1C0 RET [line: 74]\n", - "FINALSTATE: x302C: x241A LD R2, GOAL [line: 77]\n", - " x302D: x94BF NOT R2, R2 [line: 78]\n", - " x302E: x14BF ADD R2, R2, #-1 [line: 79]\n", - " x302F: x1282 ADD R1, R2, R2 [line: 80]\n", - " x3030: xC1C0 RET [line: 83]\n", - "LOSE_STATE: x3031: xC1C0 RET [line: 85]\n", - "WIN_STATE: x3032: x4804 JSR WIN_MES [line: 87]\n", - " x3033: xF022 PUTS [line: 88]\n", - " x3034: x5020 AND R0, R0, #0 [line: 89]\n", - " x3035: x4804 JSR WIN_PIC [line: 90]\n", - " x3036: xF025 HALT [line: 92]\n", - "WIN_MES: x3037: x5020 AND R0, R0, #0 [line: 94]\n", - " x3038: xE079 LEA R0, WIN_M [line: 95]\n", - " x3039: xC1C0 RET [line: 96]\n", - "WIN_PIC: x303A: x5020 AND R0, R0, #0 [line: 98]\n", - " x303B: xE07F LEA R0, HEADER [line: 99]\n", - " x303C: xC1C0 RET [line: 101]\n", - "REG7: x303D: x3009 ST R0, GOAL [line: 103]\n", - " x303E: x3009 - 12297 \n", - " x303F: x301F - 12319 \n", - " x3040: x301F - 12319 \n", - " x3041: x3009 - 12297 \n", - "REG6: x3042: x0000 NOOP - (no BR to REG7_TOP) (or 0) [line: 104]\n", - "REG7_TOP: x3043: x303D ST R0, x3081 [line: 105]\n", - "TEMP: x3044: x0000 NOOP - (no BR to TEMP2) (or 0) [line: 106]\n", - "TEMP2: x3045: x0000 NOOP - (no BR to TEMP3) (or 0) [line: 107]\n", - "TEMP3: x3046: x0000 NOOP - (no BR to GOAL) (or 0) [line: 108]\n", - "GOAL: x3047: x0005 NOOP - (no BR to x304D) (or 5) [line: 109]\n", - "ASKFORCHOICE: x3048: x0050 NOOP - (no BR to x3099) (or 80, 'P') [line: 110]\n", - " x3049: x006C - 108 (or 108, 'l')\n", - " x304A: x0065 - 101 (or 101, 'e')\n", - " x304B: x0061 - 97 (or 97, 'a')\n", - " x304C: x0073 - 115 (or 115, 's')\n", - " x304D: x0065 - 101 (or 101, 'e')\n", - " x304E: x0020 - 32 (or 32, ' ')\n", - " x304F: x0065 - 101 (or 101, 'e')\n", - " x3050: x006E - 110 (or 110, 'n')\n" - ] - } - ], - "source": [ - "%dis x3000 x3050" - ] - }, - { - "cell_type": "code", - "execution_count": 45, - "metadata": {}, - "outputs": [ - { - "name": "stderr", - "output_type": "stream", - "text": [ - "\u001b[0;31mKeyboard Interrupt!\n", - "\u001b[0m" - ] - } - ], - "source": [ - "%exe" - ] - } - ], - "metadata": { - "kernelspec": { - "display_name": "Calysto LC3", - "language": "asm", - "name": "calysto_lc3" - }, - "language_info": { - "file_extension": ".asm", - "mimetype": "text/x-gas", - "name": "gas" - } - }, - "nbformat": 4, - "nbformat_minor": 2 -} diff --git a/GetUserChoice_StepUpdate_CheckWin_WinState.ipynb b/GetUserChoice_StepUpdate_CheckWin_WinState.ipynb new file mode 100644 index 0000000..723e44b --- /dev/null +++ b/GetUserChoice_StepUpdate_CheckWin_WinState.ipynb @@ -0,0 +1,562 @@ +{ + "cells": [ + { + "cell_type": "code", + "execution_count": 41, + "metadata": {}, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "Assembled! Use %dis or %dump to examine; use %exe to run.\n" + ] + } + ], + "source": [ + ".ORIG x3000\n", + " .SET MODE TERMINAL\n", + " ST R7, REG7\n", + " JSR PUSH \n", + " ADD R5, R5, #4 ; R5 stores the number of min steps\n", + " LD R1, INITIAL\n", + " AND R0, R0, #0\n", + " LEA R0, GAMEINTRO\n", + " TRAP x22\n", + "LOOP: LEA R0, FEEDBACK\n", + " TRAP x22\n", + " AND R0, R0, #0\n", + " AND R3, R3, #0\n", + " LD R3, NUM\n", + " JSR DISP\n", + " TRAP x24\n", + " AND R0, R0, #0\n", + " LEA R0, GOAL_MES\n", + " TRAP x22\n", + " AND R0, R0, #0\n", + " AND R3, R3, #0\n", + " LD R3, GOAL_NUM\n", + " JSR DISP\n", + " TRAP x24\n", + " JSR GETCHOICE\n", + " TRAP x22\n", + " AND R0, R0, #0\n", + " LEA R0, GAMEOPS\n", + " TRAP x22\n", + " JSR GETPROG\n", + " AND R0, R0, #0\n", + " LEA R0, PIC\n", + " TERMINAL R0, 0\n", + " AND R0, #0\n", + " TRAP x23\n", + " JSR GETSTEP\n", + " ST R1, NUM\n", + " ADD R5, R5, #0\n", + " BRp LOOP\n", + " JSR POP ;restore the value for all registers\n", + " LD R7, REG7\n", + " HALT\n", + "\n", + "INITIAL: .FILL #26 ;store the initial number\n", + "FEEDBACK: .STRINGZ \"Number(A) is: \"\n", + "GOAL_MES: .STRINGZ \"\\nReduce the number to: \"\n", + "ASKFORCHOICE: .STRINGZ \"\\nEnter your choice:\\n\"\n", + "GAMEOPS: .STRINGZ \"1) -1\\n2) /2 (A%2==0)\\n3) /3 (A%3==0)\\n\" \n", + "REG7_STACK: .BLKW #10\n", + "REG7_TOP: .FILL REG7_STACK\n", + "NUM: .FILL #26 ; store updated number\n", + "\n", + "PUSH: ST R6, REG6 ;; save R5, R6 to MEMORY\n", + " ST R5, REG5 ;; R7 has return address\n", + " ;; REG7 is in MEMORY already\n", + " ;; R6 and R5 are destroyed\n", + " LD R6, SREG ;; R6 is now TOP of stack\n", + " STR R0, R6, #0 ;; push R0 on stack\n", + " ADD R6, R6, #1 ;; incr\n", + " STR R1, R6, #0 ;; push R1 on stack\n", + " ADD R6, R6, #1 ;; incr\n", + " STR R2, R6, #0 ;; push R2 on stack\n", + " ADD R6, R6, #1 ;; incr\n", + " STR R3, R6, #0 ;; push R3 on stack\n", + " ADD R6, R6, #1 ;; incr\n", + " STR R4, R6, #0 ;; push R4 on stack\n", + " ADD R6, R6, #1 ;; incr\n", + " STR R5, R6, #0 ;; push R5 on stack\n", + " ADD R6, R6, #1 ;; incr\n", + " LD R5, REG6 ;; get R6 from MEMORY (destroys R5)\n", + " STR R5, R6, #0 ;; push R6 on stack\n", + " ADD R6, R6, #1 ;; incr\n", + " LD R5, REG7 ;; get R7 from MEMORY\n", + " STR R5, R6, #0 ;; push R7 on stack\n", + " ADD R6, R6, #1 ;; incr\n", + " ST R6, SREG ;; save incremented SREG\n", + " LD R6, REG6\n", + " LD R5, REG5 ;;\n", + " RET\n", + " \n", + "POP: LD R6, SREG ;; R6 is TOP of stack\n", + " ADD R6, R6, #-1 ;; decr\n", + " LDR R1, R6, #0 ;; load R7\n", + " ST R1, REG7 ;; save to MEMORY\n", + " ADD R6, R6, #-1 ;; decr\n", + " LDR R1, R6, #0 ;; load R6\n", + " ST R1, REG6 ;; save to MEMORY\n", + " ADD R6, R6, #-1 ;; decr\n", + " LDR R5, R6, #0 ;; load R5\n", + " ADD R6, R6, #-1 ;; decr\n", + " LDR R4, R6, #0 ;; load R4\n", + " ADD R6, R6, #-1 ;; decr\n", + " LDR R3, R6, #0 ;; load R3\n", + " ADD R6, R6, #-1 ;; decr\n", + " LDR R2, R6, #0 ;; load R2\n", + " ADD R6, R6, #-1 ;; decr\n", + " LDR R1, R6, #0 ;; load R1\n", + " ADD R6, R6, #-1 ;; decr\n", + " LDR R0, R6, #0 ;; load R0\n", + " ST R6, SREG ;; save decremented TOP\n", + " LD R6, REG6, #0 ;; put R6 back the way it was\n", + " RET\n", + "\n", + "\n", + "REG: .BLKW #8\n", + "SREG: .FILL REG\n", + "REG5: .FILL #0\n", + "REG6: .FILL #0\n", + "REG7: .FILL #0\n", + "HALT \n", + " \n", + "GETCHOICE: AND R0, #0\n", + " LEA R0, ASKFORCHOICE\n", + " RET\n", + " \n", + ";;R1 -- UPDATE THE RESULT\n", + ";;R5 -- STEP LIMIT\n", + ";;R6 -- ADDRESS IN R7(return address)\n", + ";;R2 -- GOAL\n", + "\n", + "GETSTEP: ;;;;;;;;;;;;;;;;;;;;start pushing\n", + " LD R6, REG7_TOP\n", + " STR R7, R6, #0\n", + " ;;;;;;;;;;;;;;;;;;;;Finish pushing R7 on stack\n", + " ADD R0, R0, #-15\n", + " ADD R0, R0, #-15\n", + " ADD R0, R0, #-15\n", + " ADD R0, R0, #-4\n", + " BRz OPERATION1\n", + " ADD R0, R0, #-1\n", + " BRz OPERATION2\n", + " ADD R0, R0, #-1\n", + " BRz OPERATION3\n", + " ;;;;;;;;;;;;;;;;;;;; start poping\n", + " ADD R6, R6, #-1\n", + " LDR R7, R6, #0\n", + " ;;;;;;;;;;;;;;;;;;;;Finish poping\n", + " RET\n", + "\n", + "GETPROG:;;;;;;;;;;;;;;;;; start stack\n", + " ADD R6, R6, #1\n", + " STR R7, R6, #0\n", + " ;;;;;;;;;;;;;;;;; Finish pushing R7 on stack \n", + " LD R2, INITIAL\n", + " NOT R1, R1\n", + " ADD R1, R1, #1\n", + " ADD R3, R1, R2\n", + " ADD R1, R1, #-1\n", + " NOT R1, R1\n", + " JSR MULT\n", + " JSR DIV\n", + " ADD R0, R0, #15\n", + " ADD R0, R0, #15\n", + " ADD R0, R0, #15\n", + " ADD R0, R0, #3\n", + " LD R3, PICUPDATE\n", + " STR R0, R3, #0\n", + " ;;;;;;;;;;;;;;;;;;;; start poping\n", + " LDR R7, R6, #0\n", + " ;;;;;;;;;;;;;;;;;;;;Finish poping\n", + " RET\n", + " \n", + "GOAL_NUM: .FILL #3\n", + "GAMEINTRO: .STRINGZ \"Challenge: reduce A to B in min steps\\n\"\n", + "PIC: .STRINGZ \"\" \n", + "PICUPDATE: .FILL x3177\n", + "\n", + "DISP: AND R0, R0, #0\n", + " LD R0, TEMP\n", + " ;LD R3, NUM\n", + " \n", + "TEN: ADD R3, R3, #-10\n", + " BRn ONE\n", + " ADD R0, R0, #1\n", + " ADD R3, R3, #0\n", + " BRp TEN\n", + " \n", + "ONE: ADD R3, R3, #10\n", + " BRp #0\n", + " \n", + "CALC: ADD R3, R3, #-1\n", + " BRn #3\n", + " LD R4, SEC\n", + " ADD R0, R0, R4\n", + " ADD R3, R3, #0\n", + " BRp CALC\n", + " ST R0, NUMUP\n", + " LEA R0, NUMUP\n", + " RET\n", + "\n", + "GOAL: .FILL GOAL_NUM\n", + "NUMUP: .FILL #0\n", + "TERMIN: .FILL x0000\n", + "TEMP: .FILL x3030\n", + "SEC: .FILL x0100\n", + "\n", + "\n", + "MULT: AND R0, R0, #0\n", + " ADD R0, R0, #9\n", + " ADD R4, R3, #0\n", + " ADD R3, R3, R4\n", + " ADD R0, R0, #-1\n", + " BRp #-3 \n", + " RET\n", + "\n", + "DIV: LDI R4, GOAL\n", + " NOT R4, R4\n", + " ADD R4, R4, #1\n", + " ADD R4, R2, R4\n", + " NOT R4, R4\n", + " ADD R4, R4, #1\n", + " AND R0, R0, #0\n", + " ADD R3, R3, R4\n", + " BRn #2\n", + " ADD R0, R0, #1\n", + " BRp #-4\n", + " RET\n", + "\n", + "OPERATION1: ;;;;;;;;;;;;;;;;; operations(need to change @Eileen)\n", + " ADD R1, R1, #-1\n", + " ;;;;;;;;;;;;;;;;; start stack\n", + " ADD R6, R6, #1\n", + " STR R7, R6, #0\n", + " ;;;;;;;;;;;;;;;;; Finish pushing R7 on stack\n", + " JSR CHECKSTEP\n", + " ADD R6, R6, #-1\n", + " LDR R7, R6, #0\n", + " ;;;;;;;;;;;;;;;;; Finish poping \n", + " RET\n", + "\n", + "OPERATION2: ;;;;;;;;;;;;;;;;; start stack\n", + " ADD R6, R6, #1\n", + " STR R7, R6, #0\n", + " ;;;;;;;;;;;;;;;;; Finish pushing R7 on stack\n", + " JSR DIVTWO\n", + " JSR CHECKSTEP\n", + " ADD R6, R6, #-1\n", + " LDR R7, R6, #0\n", + " ;;;;;;;;;;;;;;;;; Finish poping \n", + " RET\n", + "\n", + "DIVTWO: AND R2, R2, #0\n", + " AND R3, R3, #0\n", + " AND R4, R4, #0\n", + " ADD R2, R2, #-2 ; ALWAYS USE R2 TO STORE THE DENOMITOR\n", + " ADD R3, R3, R1 ; R3 to store the current R1\n", + " ADD R4, R4, #0 ; R4 to store the result of calculating\n", + " ADD R1, R1, R2 ; minus R1 by 2\n", + " BRn #4\n", + " BRz #9\n", + " ADD R4, R4, #1\n", + " ADD R1, R1, #0\n", + " BRp #-6\n", + " AND R1, R1, #0\n", + " ADD R1, R1, R3 ; restore the value of R1 if not dividable\n", + " AND R2, R2, #0\n", + " AND R3, R3, #0\n", + " AND R4, R4, #0\n", + " RET\n", + " ADD R1, R1, R4 ; otherwise udpate the value of R1\n", + " ADD R1, R1, #1\n", + " AND R2, R2, #0\n", + " AND R3, R3, #0\n", + " AND R4, R4, #0\n", + " RET\n", + "\n", + "OPERATION3: ;;;;;;;;;;;;;;;;; start stack\n", + " ADD R6, R6, #1\n", + " STR R7, R6, #0\n", + " ;;;;;;;;;;;;;;;;; Finish pushing R7 on stack\n", + " JSR DIVTHREE\n", + " JSR CHECKSTEP\n", + " ADD R6, R6, #-1\n", + " LDR R7, R6, #0\n", + " ;;;;;;;;;;;;;;;;; Finish poping \n", + " RET\n", + "\n", + "\n", + "DIVTHREE: AND R2, R2, #0\n", + " AND R3, R3, #0\n", + " AND R4, R4, #0\n", + " ADD R2, R2, #-3 ; ALWAYS USE R2 TO STORE THE DENOMITOR\n", + " ADD R3, R3, R1 ; R3 to store the current R1\n", + " ADD R4, R4, #0 ; R4 to store the result of calculating\n", + " ADD R1, R1, R2 ; minus R1 by 2\n", + " BRn #4\n", + " BRz #9\n", + " ADD R4, R4, #1\n", + " ADD R1, R1, #0\n", + " BRp #-6\n", + " AND R1, R1, #0\n", + " ADD R1, R1, R3 ; restore the value of R1 if not dividable\n", + " AND R2, R2, #0\n", + " AND R3, R3, #0\n", + " AND R4, R4, #0\n", + " RET\n", + " ADD R1, R1, R4 ; otherwise udpate the value of R1\n", + " ADD R1, R1, #1\n", + " AND R2, R2, #0\n", + " AND R3, R3, #0\n", + " AND R4, R4, #0\n", + " RET\n", + " \n", + "CHECKSTEP: ;;;;;;;;;;;;;;;;;; update step\n", + " ADD R6, R6, #1\n", + " ADD R5, R5, #-1\n", + " BRp #5\n", + " ;;;;;;;;;;;;;;;;;; start stack\n", + " STR R7, R6, #0\n", + " ;;;;;;;;;;;;;;;;;; finish pushing R7\n", + " ADD R5, R5, #0\n", + " BRz FINALSTATE\n", + " ;;;;;;;;;;;;;;;;;; start poping\n", + " ADD R6, R6, #-1\n", + " LDR R7, R6, #0\n", + " ;;;;;;;;;;;;;;;;;; FINISH POPING\n", + " RET\n", + "\n", + "FINALSTATE:;;;;;;;;;;;;;;;;;; when step limit is consumed \n", + " ;;;;;;;;;;;;;;;;; start stack\n", + " ADD R6, R6, #1\n", + " STR R7, R6, #0\n", + " ;;;;;;;;;;;;;;;;;; finish pushing R7\n", + " LDI R2, GOAL\n", + " NOT R2, R2\n", + " ADD R2, R2, #1\n", + " ADD R3, R1, R2\n", + " BRz WIN_STATE\n", + " BRz #3 ; if not lose jump over the lose state\n", + " AND R0, #0 \n", + " LEA R0, LOSE_M ; lose state\n", + " TRAP x22\n", + " ADD R6, R6, #-1\n", + " LDR R7, R6, #0\n", + " ;;;;;;;;;;;;;;;;;; FINISH POPING\n", + " RET\n", + "\n", + "WIN_STATE: ;;;;;;;;;;;;;;;;; start stack\n", + " ADD R6, R6, #1\n", + " STR R7, R6, #0\n", + " ;;;;;;;;;;;;;;;;;; finish pushing R7\n", + " JSR WIN_MES\n", + " TRAP x22\n", + " ADD R6, R6, #-1\n", + " LDR R7, R6, #0\n", + " ;;;;;;;;;;;;;;;;;; FINISH POPING\n", + " ;;;;;;;;;;;;;;;;; start stack\n", + " ADD R6, R6, #1\n", + " STR R7, R6, #0\n", + " ;;;;;;;;;;;;;;;;;; finish pushing R7\n", + " AND R0, #0\n", + " JSR WIN_PIC\n", + " LDR R7, R6, #0\n", + " ;;;;;;;;;;;;;;;;;; FINISH POPING\n", + " HALT\n", + " \n", + "WIN_MES: AND R0, #0\n", + " LEA R0, WIN_M\n", + " RET\n", + " \n", + "WIN_PIC: AND R0, #0\n", + " LEA R0, HEADER\n", + " TERMINAL R0, 0\n", + " RET\n", + " \n", + "\n", + "LOSE_M: .STRINGZ \"SORRY YOU LOSE!\\n\"\n", + "WIN_M: .STRINGZ \"\\nYOU WIN!\"\n", + "HEADER: .STRINGZ \"\" \n", + ".END " + ] + }, + { + "cell_type": "code", + "execution_count": 42, + "metadata": {}, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "Challenge: reduce A to B in min steps\n", + "Number(A) is: 26\n", + "Reduce the number to: 03\n", + "Enter your choice:\n", + "1) -1\n", + "2) /2 (A%2==0)\n", + "3) /3 (A%3==0)\n" + ] + }, + { + "data": { + "text/html": [ + "
" + ], + "text/plain": [ + "" + ] + }, + "metadata": {}, + "output_type": "display_data" + }, + { + "name": "stdout", + "output_type": "stream", + "text": [ + "\n", + "Input a character> 2\n", + "2\n", + "Number(A) is: 13\n", + "Reduce the number to: 03\n", + "Enter your choice:\n", + "1) -1\n", + "2) /2 (A%2==0)\n", + "3) /3 (A%3==0)\n" + ] + }, + { + "data": { + "text/html": [ + "
" + ], + "text/plain": [ + "" + ] + }, + "metadata": {}, + "output_type": "display_data" + }, + { + "name": "stdout", + "output_type": "stream", + "text": [ + "\n", + "Input a character> 1\n", + "1\n", + "Number(A) is: 12\n", + "Reduce the number to: 03\n", + "Enter your choice:\n", + "1) -1\n", + "2) /2 (A%2==0)\n", + "3) /3 (A%3==0)\n" + ] + }, + { + "data": { + "text/html": [ + "
" + ], + "text/plain": [ + "" + ] + }, + "metadata": {}, + "output_type": "display_data" + }, + { + "name": "stdout", + "output_type": "stream", + "text": [ + "\n", + "Input a character> 2\n", + "2\n", + "Number(A) is: 06\n", + "Reduce the number to: 03\n", + "Enter your choice:\n", + "1) -1\n", + "2) /2 (A%2==0)\n", + "3) /3 (A%3==0)\n" + ] + }, + { + "data": { + "text/html": [ + "
" + ], + "text/plain": [ + "" + ] + }, + "metadata": {}, + "output_type": "display_data" + }, + { + "name": "stdout", + "output_type": "stream", + "text": [ + "\n", + "Input a character> 2\n", + "2\n", + "\n", + "YOU WIN!" + ] + }, + { + "data": { + "text/html": [ + "
" + ], + "text/plain": [ + "" + ] + }, + "metadata": {}, + "output_type": "display_data" + }, + { + "name": "stdout", + "output_type": "stream", + "text": [ + "============================================================\n", + "Computation completed\n", + "============================================================\n", + "Instructions: 7557\n", + "Cycles: 60015 (0.030007 milliseconds)\n", + "\n", + "============================================================\n", + "Registers:\n", + "============================================================\n", + "PC: x048E\n", + "N: 0 Z: 0 P: 1 \n", + "R0: x3234 R1: x0003 R2: xFFFD R3: x0000 \n", + "R4: x0000 R5: x0000 R6: x308E R7: x3212 \n" + ] + } + ], + "source": [ + "%exe" + ] + } + ], + "metadata": { + "kernelspec": { + "display_name": "Calysto LC3", + "language": "asm", + "name": "calysto_lc3" + }, + "language_info": { + "file_extension": ".asm", + "mimetype": "text/x-gas", + "name": "gas" + } + }, + "nbformat": 4, + "nbformat_minor": 2 +} diff --git a/Lose_state.ipynb b/Lose_state.ipynb new file mode 100644 index 0000000..9b9eb35 --- /dev/null +++ b/Lose_state.ipynb @@ -0,0 +1,86 @@ +{ + "cells": [ + { + "cell_type": "code", + "execution_count": 4, + "metadata": {}, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "Assembled! Use %dis or %dump to examine; use %exe to run.\n" + ] + } + ], + "source": [ + ".ORIG x3000\n", + ".SET MODE TERMINAL\n", + "ADD R6, R6, #1\n", + "STR R7, R6, #0\n", + "JSR LOSE_MES\n", + "TRAP x22\n", + "\n", + "\n", + "LOSE_MES: AND R0, #0\n", + " LEA R0, LOSE_M\n", + " RET\n", + " \n", + "LOSE_M: .STRINGZ \"YOU LOSE!\"\n", + ".END" + ] + }, + { + "cell_type": "code", + "execution_count": 5, + "metadata": {}, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "YOU LOSE!============================================================\n", + "Computation completed\n", + "============================================================\n", + "Instructions: 115\n", + "Cycles: 946 (0.000473 milliseconds)\n", + "\n", + "============================================================\n", + "Registers:\n", + "============================================================\n", + "PC: x048E\n", + "N: 0 Z: 0 P: 1 \n", + "R0: x3006 R1: x0000 R2: x0000 R3: x0000 \n", + "R4: x0000 R5: x0000 R6: x0000 R7: x3003 \n" + ] + } + ], + "source": [ + "%exe" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": { + "collapsed": true + }, + "outputs": [], + "source": [] + } + ], + "metadata": { + "kernelspec": { + "display_name": "Calysto LC3", + "language": "asm", + "name": "calysto_lc3" + }, + "language_info": { + "file_extension": ".asm", + "mimetype": "text/x-gas", + "name": "gas" + } + }, + "nbformat": 4, + "nbformat_minor": 2 +} diff --git a/Camille Monet on a Garden Bench.jpg b/a.jpg similarity index 100% rename from Camille Monet on a Garden Bench.jpg rename to a.jpg diff --git a/array_update.ipynb b/array_update.ipynb new file mode 100644 index 0000000..cb030b2 --- /dev/null +++ b/array_update.ipynb @@ -0,0 +1,368 @@ +{ + "cells": [ + { + "cell_type": "code", + "execution_count": 59, + "metadata": {}, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "Assembled! Use %dis or %dump to examine; use %exe to run.\n" + ] + } + ], + "source": [ + ".ORIG x3000\n", + ".SET MODE TERMINAL\n", + "ST R7, REG7\n", + "JSR PUSH \n", + "AND R1, R1, 0\n", + "ADD R1, R1, 13\n", + "ST R1, NUM\n", + "ADD R1, R1, #-5\n", + "JSR ARRAY_UPDATE\n", + "JSR POP\n", + "LD R7, REG7\n", + "HALT\n", + "\n", + "PUSH: ST R6, REG6 ;; save R5, R6 to MEMORY\n", + " ST R5, REG5 ;; R7 has return address\n", + " ;; REG7 is in MEMORY already\n", + " ;; R6 and R5 are destroyed\n", + " LD R6, SREG ;; R6 is now TOP of stack\n", + " STR R0, R6, #0 ;; push R0 on stack\n", + " ADD R6, R6, #1 ;; incr\n", + " STR R1, R6, #0 ;; push R1 on stack\n", + " ADD R6, R6, #1 ;; incr\n", + " STR R2, R6, #0 ;; push R2 on stack\n", + " ADD R6, R6, #1 ;; incr\n", + " STR R3, R6, #0 ;; push R3 on stack\n", + " ADD R6, R6, #1 ;; incr\n", + " STR R4, R6, #0 ;; push R4 on stack\n", + " ADD R6, R6, #1 ;; incr\n", + " STR R5, R6, #0 ;; push R5 on stack\n", + " ADD R6, R6, #1 ;; incr\n", + " LD R5, REG6 ;; get R6 from MEMORY (destroys R5)\n", + " STR R5, R6, #0 ;; push R6 on stack\n", + " ADD R6, R6, #1 ;; incr\n", + " LD R5, REG7 ;; get R7 from MEMORY\n", + " STR R5, R6, #0 ;; push R7 on stack\n", + " ADD R6, R6, #1 ;; incr\n", + " ST R6, SREG ;; save incremented SREG\n", + " LD R6, REG6\n", + " LD R5, REG5 ;;\n", + " RET\n", + " \n", + "POP: LD R6, SREG ;; R6 is TOP of stack\n", + " ADD R6, R6, #-1 ;; decr\n", + " LDR R1, R6, #0 ;; load R7\n", + " ST R1, REG7 ;; save to MEMORY\n", + " ADD R6, R6, #-1 ;; decr\n", + " LDR R1, R6, #0 ;; load R6\n", + " ST R1, REG6 ;; save to MEMORY\n", + " ADD R6, R6, #-1 ;; decr\n", + " LDR R5, R6, #0 ;; load R5\n", + " ADD R6, R6, #-1 ;; decr\n", + " LDR R4, R6, #0 ;; load R4\n", + " ADD R6, R6, #-1 ;; decr\n", + " LDR R3, R6, #0 ;; load R3\n", + " ADD R6, R6, #-1 ;; decr\n", + " LDR R2, R6, #0 ;; load R2\n", + " ADD R6, R6, #-1 ;; decr\n", + " LDR R1, R6, #0 ;; load R1\n", + " ADD R6, R6, #-1 ;; decr\n", + " LDR R0, R6, #0 ;; load R0\n", + " ST R6, SREG ;; save decremented TOP\n", + " LD R6, REG6, #0 ;; put R6 back the way it was\n", + " RET\n", + " \n", + " \n", + "REG: .BLKW #8\n", + "SREG: .FILL REG\n", + "REG5: .FILL #0\n", + "REG6: .FILL #0\n", + "REG7: .FILL #0\n", + "HALT\n", + "\n", + ";;;;;;;;;adds number of image-parts to be revealed to array\n", + "ARRAY_UPDATE: JSR PROG\n", + " JSR NINE_MULT\n", + " JSR INT_DIV \n", + " AND R3, R3, #0\n", + " LEA R3, ARRAY\n", + " AND R4, R4, #0\n", + " ADD R4, R4, #1\n", + " ARRAY_ADD: STR R4, R3, #0\n", + " AND R0, R0, #0\n", + " NOT R0, R2\n", + " ADD R0, R0, #1\n", + " ADD R0, R0, R4\n", + " BRz #3\n", + " ADD R3, R3, #1\n", + " ADD R4, R4, #1\n", + " BR ARRAY_ADD\n", + " HALT\n", + "\n", + ";;;;;;;;;gets integer number of image-parts to be revealed\n", + "INT_DIV: AND R4, R4, #0\n", + " ADD R4, R4, #-13\n", + " AND R3, R3, #0\n", + " ADD R3, R3, R2\n", + " AND R2, R2, #0\n", + " DIVLOOP: ADD R3, R3, R4\n", + " BRn #2\n", + " ADD R2, R2, 1\n", + " BR DIVLOOP\n", + " RET\n", + "\n", + ";;;;;;;;;multiplies progress by 9\n", + "NINE_MULT: AND R4, R4, #0\n", + " ADD R4, R4, R2\n", + " AND R3, R3, #0\n", + " ADD R3, R3, #9\n", + " AND R2, R2, 0\n", + " MULTLOOP: ADD R2, R2, R4\n", + " ADD R3, R3, #-1\n", + " BRp MULTLOOP\n", + " RET\n", + "\n", + ";;;;;;;;;calculates progress \n", + "PROG: LD R2, NUM\n", + " NOT R0, R1\n", + " ADD R0, R0, #1\n", + " ADD R2, R2, R0\n", + " RET\n", + "\n", + "ARRAY: .BLKW 9\n", + "NUM: .BLKW 1\n", + ".END" + ] + }, + { + "cell_type": "code", + "execution_count": 60, + "metadata": {}, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "\n", + "============================================================\n", + "Registers:\n", + "============================================================\n", + "PC: x3000\n", + "N: 0 Z: 1 P: 0 \n", + "R0: x0000 R1: x0000 R2: x0000 R3: x0000 \n", + "R4: x0000 R5: x0000 R6: x0000 R7: x0000 \n" + ] + } + ], + "source": [ + "%pc x3000" + ] + }, + { + "cell_type": "code", + "execution_count": 61, + "metadata": {}, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "============================================================\n", + "Computation completed\n", + "============================================================\n", + "Instructions: 122\n", + "Cycles: 823 (0.000411 milliseconds)\n", + "\n", + "============================================================\n", + "Registers:\n", + "============================================================\n", + "PC: x048E\n", + "N: 0 Z: 1 P: 0 \n", + "R0: x0000 R1: x0008 R2: x0003 R3: x3071 \n", + "R4: x0003 R5: x0000 R6: x0000 R7: x3057 \n" + ] + } + ], + "source": [ + "%exe" + ] + }, + { + "cell_type": "code", + "execution_count": 62, + "metadata": {}, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "============================================================\n", + "Memory disassembled:\n", + "============================================================\n", + "ARRAY: x306F: x0001 NOOP - (no BR to x3071) (or 1) [line: 121]\n", + " x3070: x0002 - 2 (or 2)\n", + " x3071: x0003 - 3 (or 3)\n", + " x3072: x0000 - \\0\n", + " x3073: x0000 - \\0\n", + " x3074: x0000 - \\0\n", + " x3075: x0000 - \\0\n", + " x3076: x0000 - \\0\n", + " x3077: x0000 - \\0\n", + "NUM: x3078: x000D NOOP - (no BR to x3086) (or 13) [line: 122]\n" + ] + } + ], + "source": [ + "%dis x306F" + ] + }, + { + "cell_type": "code", + "execution_count": 42, + "metadata": {}, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "============================================================\n", + "Memory disassembled:\n", + "============================================================\n", + " x3000: x3E43 ST R7, REG7 [line: 2]\n", + " x3001: x4808 JSR PUSH [line: 3]\n", + " x3002: x5260 AND R1, R1, #0 [line: 4]\n", + " x3003: x126D ADD R1, R1, #13 [line: 5]\n", + " x3004: x3272 ST R1, NUM [line: 6]\n", + " x3005: x127E ADD R1, R1, #-2 [line: 7]\n", + " x3006: x483F JSR ARRAY_UPDATE [line: 8]\n", + " x3007: x481B JSR POP [line: 9]\n", + " x3008: x2E3B LD R7, REG7 [line: 10]\n", + " x3009: xF025 HALT [line: 11]\n", + "PUSH: x300A: x3C38 ST R6, REG6 [line: 13]\n", + " x300B: x3A36 ST R5, REG5 [line: 14]\n", + " x300C: x2C34 LD R6, SREG [line: 17]\n", + " x300D: x7180 STR R0, R6, 0 [line: 18]\n", + " x300E: x1DA1 ADD R6, R6, #1 [line: 19]\n", + " x300F: x7380 STR R1, R6, 0 [line: 20]\n", + " x3010: x1DA1 ADD R6, R6, #1 [line: 21]\n", + " x3011: x7580 STR R2, R6, 0 [line: 22]\n", + " x3012: x1DA1 ADD R6, R6, #1 [line: 23]\n", + " x3013: x7780 STR R3, R6, 0 [line: 24]\n", + " x3014: x1DA1 ADD R6, R6, #1 [line: 25]\n", + " x3015: x7980 STR R4, R6, 0 [line: 26]\n", + " x3016: x1DA1 ADD R6, R6, #1 [line: 27]\n", + " x3017: x7B80 STR R5, R6, 0 [line: 28]\n", + " x3018: x1DA1 ADD R6, R6, #1 [line: 29]\n", + " x3019: x2A29 LD R5, REG6 [line: 30]\n", + " x301A: x7B80 STR R5, R6, 0 [line: 31]\n", + " x301B: x1DA1 ADD R6, R6, #1 [line: 32]\n", + " x301C: x2A27 LD R5, REG7 [line: 33]\n", + " x301D: x7B80 STR R5, R6, 0 [line: 34]\n", + " x301E: x1DA1 ADD R6, R6, #1 [line: 35]\n", + " x301F: x3C21 ST R6, SREG [line: 36]\n", + " x3020: x2C22 LD R6, REG6 [line: 37]\n", + " x3021: x2A20 LD R5, REG5 [line: 38]\n", + " x3022: xC1C0 RET [line: 39]\n", + "POP: x3023: x2C1D LD R6, SREG [line: 41]\n", + " x3024: x1DBF ADD R6, R6, #-1 [line: 42]\n", + " x3025: x6380 LDR R1, R6, 0 [line: 43]\n", + " x3026: x321D ST R1, REG7 [line: 44]\n", + " x3027: x1DBF ADD R6, R6, #-1 [line: 45]\n", + " x3028: x6380 LDR R1, R6, 0 [line: 46]\n", + " x3029: x3219 ST R1, REG6 [line: 47]\n", + " x302A: x1DBF ADD R6, R6, #-1 [line: 48]\n", + " x302B: x6B80 LDR R5, R6, 0 [line: 49]\n", + " x302C: x1DBF ADD R6, R6, #-1 [line: 50]\n", + " x302D: x6980 LDR R4, R6, 0 [line: 51]\n", + " x302E: x1DBF ADD R6, R6, #-1 [line: 52]\n", + " x302F: x6780 LDR R3, R6, 0 [line: 53]\n", + " x3030: x1DBF ADD R6, R6, #-1 [line: 54]\n", + " x3031: x6580 LDR R2, R6, 0 [line: 55]\n", + " x3032: x1DBF ADD R6, R6, #-1 [line: 56]\n", + " x3033: x6380 LDR R1, R6, 0 [line: 57]\n", + " x3034: x1DBF ADD R6, R6, #-1 [line: 58]\n", + " x3035: x6180 LDR R0, R6, 0 [line: 59]\n", + " x3036: x3C0A ST R6, SREG [line: 60]\n", + " x3037: x2C0B LD R6, REG6 [line: 61]\n", + " x3038: xC1C0 RET [line: 62]\n", + "REG: x3039: xFFCC ;; Invalid TRAP vector: x00CC [line: 65]\n", + " x303A: xFFCD - 65485 \n", + " x303B: xFFCE - 65486 \n", + " x303C: xFFCF - 65487 \n", + " x303D: xFFD0 - 65488 \n", + " x303E: xFFD1 - 65489 \n", + " x303F: xFFD2 - 65490 \n", + " x3040: xFFD3 - 65491 \n", + "SREG: x3041: x3039 ST R0, x307B [line: 66]\n", + "REG5: x3042: x0000 NOOP - (no BR to REG6) (or 0) [line: 67]\n", + "REG6: x3043: x0000 NOOP - (no BR to REG7) (or 0) [line: 68]\n", + "REG7: x3044: x0000 NOOP - (no BR to x3045) (or 0) [line: 69]\n", + " x3045: xF025 HALT [line: 70]\n", + "ARRAY_UPDATE: x3046: x56E0 AND R3, R3, #0 [line: 72]\n", + " x3047: xE626 LEA R3, ARRAY [line: 73]\n", + " x3048: x5920 AND R4, R4, #0 [line: 74]\n", + " x3049: x1921 ADD R4, R4, #1 [line: 75]\n", + "ARRAY_ADD: x304A: x78C0 STR R4, R3, 0 [line: 76]\n", + " x304B: x5020 AND R0, R0, #0 [line: 77]\n", + " x304C: x90BF NOT R0, R2 [line: 78]\n", + " x304D: x1021 ADD R0, R0, #1 [line: 79]\n", + " x304E: x1004 ADD R0, R0, R4 [line: 80]\n", + " x304F: x0403 BRz x3053 (or 3) [line: 81]\n", + " x3050: x16E1 ADD R3, R3, #1 [line: 82]\n", + " x3051: x1921 ADD R4, R4, #1 [line: 83]\n", + " x3052: x0FF7 BRnzp ARRAY_ADD [line: 84]\n", + " x3053: xC1C0 RET [line: 85]\n", + "INT_DIV: x3054: x0E0A BRnzp NINE_MULT (or 10) [line: 87]\n", + " x3055: x5920 AND R4, R4, #0 [line: 88]\n", + " x3056: x1933 ADD R4, R4, #-13 [line: 89]\n", + " x3057: x56E0 AND R3, R3, #0 [line: 90]\n", + " x3058: x16C2 ADD R3, R3, R2 [line: 91]\n", + " x3059: x54A0 AND R2, R2, #0 [line: 92]\n", + "DIVLOOP: x305A: x16C4 ADD R3, R3, R4 [line: 93]\n", + " x305B: x0802 BRn x305E (or 2) [line: 94]\n", + " x305C: x14A1 ADD R2, R2, #1 [line: 95]\n", + " x305D: x0FFC BRnzp DIVLOOP [line: 96]\n", + " x305E: xC1C0 RET [line: 97]\n", + "NINE_MULT: x305F: x0E09 BRnzp PROG (or 9) [line: 99]\n", + " x3060: x5920 AND R4, R4, #0 [line: 100]\n", + " x3061: x1902 ADD R4, R4, R2 [line: 101]\n", + " x3062: x56E0 AND R3, R3, #0 [line: 102]\n", + " x3063: x16E9 ADD R3, R3, #9 [line: 103]\n" + ] + } + ], + "source": [ + "%dis" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": { + "collapsed": true + }, + "outputs": [], + "source": [] + } + ], + "metadata": { + "kernelspec": { + "display_name": "Calysto LC3", + "language": "asm", + "name": "calysto_lc3" + }, + "language_info": { + "file_extension": ".asm", + "mimetype": "text/x-gas", + "name": "gas" + } + }, + "nbformat": 4, + "nbformat_minor": 2 +} diff --git a/game-instruction.ipynb b/game-instruction.ipynb index 3794acb..8f36a16 100644 --- a/game-instruction.ipynb +++ b/game-instruction.ipynb @@ -2,11 +2,7 @@ "cells": [ { "cell_type": "code", -<<<<<<< HEAD - "execution_count": 5, -======= "execution_count": 1, ->>>>>>> c317588ddb37649b8ae39e59f3e4c9fb28f88f32 "metadata": {}, "outputs": [ { @@ -22,25 +18,6 @@ ".SET MODE TERMINAL\n", " ST R7, REG7\n", " JSR PUSH \n", -<<<<<<< HEAD - " ;;;;;;;;;;;;;;;intro \n", - " JSR INTRO\n", - " TRAP x22\n", - " JSR OPONE\n", - " TRAP x22\n", - " JSR OPTWO\n", - " TRAP x22\n", - " ;;;;;;;;;;;;;;;give initial state and goal state\n", - " ;;;;;;;;;;;;;;;assign a register to store the #steps\n", - " ;;;;;;;;;;;;;;;ask for user input\n", - " ;;;;;;;;;;;;;;;update game state\n", - " \n", - " ;;;;;;;;;;;;;;;win cases\n", - " JSR WIN_MES\n", - " TRAP x22\n", - " JSR WIN_PIC\n", - " ;;;;;;;;;;;;;;;lose cases\n", -======= " AND R0, #0\n", " LEA R0, GAMEINTRO\n", " TRAP x22\n", @@ -48,7 +25,6 @@ " TRAP x23\n", " BRp #0\n", " JSR UPDATE\n", ->>>>>>> c317588ddb37649b8ae39e59f3e4c9fb28f88f32 " JSR POP ;restore the value for all registers\n", " LD R7, REG7\n", " HALT\n", @@ -140,8 +116,6 @@ " AND R4, R4, #0\n", " RET\n", "\n", -<<<<<<< HEAD -======= "DIVTHREE: ADD R2, R2, #-3 ; ALWAYS USE R2 TO STORE THE DENOMITOR\n", " ADD R3, R3, R1 ; R3 to store the current R1\n", " ADD R4, R4, #0 ; R4 to store the result of calculating\n", @@ -163,7 +137,6 @@ " AND R3, R3, #0\n", " AND R4, R4, #0\n", " RET\n", ->>>>>>> c317588ddb37649b8ae39e59f3e4c9fb28f88f32 "WIN_MES: AND R0, #0\n", " LEA R0, WIN_M\n", " RET\n", @@ -179,11 +152,7 @@ }, { "cell_type": "code", -<<<<<<< HEAD - "execution_count": 6, -======= "execution_count": 2, ->>>>>>> c317588ddb37649b8ae39e59f3e4c9fb28f88f32 "metadata": {}, "outputs": [ { diff --git a/manarola.jpg b/manarola.jpg deleted file mode 100644 index b53b366..0000000 Binary files a/manarola.jpg and /dev/null differ diff --git a/manarola_01.jpg b/manarola_01.jpg deleted file mode 100644 index 548e4e9..0000000 Binary files a/manarola_01.jpg and /dev/null differ diff --git a/manarola_02.jpg b/manarola_02.jpg deleted file mode 100644 index 6358662..0000000 Binary files a/manarola_02.jpg and /dev/null differ diff --git a/manarola_03.jpg b/manarola_03.jpg deleted file mode 100644 index 265fcc1..0000000 Binary files a/manarola_03.jpg and /dev/null differ diff --git a/manarola_04.jpg b/manarola_04.jpg deleted file mode 100644 index 2347256..0000000 Binary files a/manarola_04.jpg and /dev/null differ diff --git a/manarola_05.jpg b/manarola_05.jpg deleted file mode 100644 index ec41e6f..0000000 Binary files a/manarola_05.jpg and /dev/null differ diff --git a/manarola_06.jpg b/manarola_06.jpg deleted file mode 100644 index d04d4e7..0000000 Binary files a/manarola_06.jpg and /dev/null differ diff --git a/manarola_07.jpg b/manarola_07.jpg deleted file mode 100644 index dc51c2d..0000000 Binary files a/manarola_07.jpg and /dev/null differ diff --git a/manarola_08.jpg b/manarola_08.jpg deleted file mode 100644 index 7ba0b12..0000000 Binary files a/manarola_08.jpg and /dev/null differ diff --git a/manarola_09.jpg b/manarola_09.jpg deleted file mode 100644 index ea50a45..0000000 Binary files a/manarola_09.jpg and /dev/null differ diff --git a/monet5.psd b/monet5.psd new file mode 100644 index 0000000..fbd2859 Binary files /dev/null and b/monet5.psd differ diff --git a/monet_01.jpg b/monet_01.jpg deleted file mode 100644 index d8e785e..0000000 Binary files a/monet_01.jpg and /dev/null differ diff --git a/monet_02.jpg b/monet_02.jpg deleted file mode 100644 index b8ea635..0000000 Binary files a/monet_02.jpg and /dev/null differ diff --git a/monet_03.jpg b/monet_03.jpg deleted file mode 100644 index 371cf98..0000000 Binary files a/monet_03.jpg and /dev/null differ diff --git a/monet_04.jpg b/monet_04.jpg deleted file mode 100644 index 76e946b..0000000 Binary files a/monet_04.jpg and /dev/null differ diff --git a/monet_05.jpg b/monet_05.jpg deleted file mode 100644 index 9913657..0000000 Binary files a/monet_05.jpg and /dev/null differ diff --git a/monet_06.jpg b/monet_06.jpg deleted file mode 100644 index f7aa45a..0000000 Binary files a/monet_06.jpg and /dev/null differ diff --git a/monet_07.jpg b/monet_07.jpg deleted file mode 100644 index 3359d7b..0000000 Binary files a/monet_07.jpg and /dev/null differ diff --git a/monet_08.jpg b/monet_08.jpg deleted file mode 100644 index c95fbb1..0000000 Binary files a/monet_08.jpg and /dev/null differ