diff --git a/ass1/bonus-snake.asm b/ass1/bonus-snake.asm new file mode 100644 index 0000000..b894606 --- /dev/null +++ b/ass1/bonus-snake.asm @@ -0,0 +1,102 @@ +MOJPRG START 0 + +FIRST LDS #255 + LDA G_SCRN + STA @CURSCR + STA @SVEC +LOOP JSUB DRAW + ADD #4 + STA @SVEC + J LOOP + +HALT J HALT + +DRAW JSUB PUSH + RMO T, A + JSUB PUSH + RMO S, A + JSUB PUSH + + LDA #0 .COUNTER + LDT @OFFSET +STRT COMP @LEN + JEQ END + + JSUB PUSH + LDA SVEC + ADD @OFFSET + STA ADDR + LDA @ADDR + STA @BASEY + + CLEAR A + +LOOP1 COMP FOUR + JEQ LEND + LDS @BASE + MUL #64 + ADDR A, S + DIV #64 + STS @BASEY + JSUB PUSH + CLEAR A + +LOOP2 COMP FOUR + JEQ LEND2 + LDS @BASEY + ADDR A, S + STS @CUR + + LDS #255 + STS @CUR + + ADD #1 + J LOOP2 + +LEND2 JSUB POP + ADD #1 + J LOOP1 + +LEND JSUB POP + ADD #1 + JSUB PUSH + LDA #3 + ADDR A, T + JSUB POP + J STRT + +END JSUB POP + RMO A, T + JSUB POP + RMO A, S + JSUB POP + RSUB + + +PUSH STA @S_PTR + LDA S_PTR + ADD #3 + STA S_PTR + RSUB + +POP LDA S_PTR + SUB #3 + STA S_PTR + LDA @S_PTR + RSUB + +FOUR WORD X'000004' +ADDR WORD X'000000' +CUR WORD X'000000' +BASE WORD X'000000' +BASEY WORD X'000000' +LEN WORD X'000000' +G_SCRN WORD X'00A000' +CURSCR WORD X'000000' +KEY_IN WORD X'00C000' +S_PTR WORD X'000100' +SVEC WORD X'001000' +SVECMV WORD X'003000' +OFFSET WORD X'000000' + + END FIRST