spo/ass1/bonus-snake.asm
2025-10-29 20:28:16 +01:00

102 lines
1.8 KiB
NASM

SNAKE 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