The Nand Game | Software programs
Описание
Programs for FUNCTIONS levels
###################
# CALL
# DEFINE SHARED CONSTANTS
# ARGS = 1
# LOCALS = 2
# RETVAL = 6
# PUSH ARGS
A= ARGS
D=*A
PUSH_D
# PUSH LOCALS
A= LOCALS
D=*A
PUSH_D
# PUSH ADDRESS AFTER JUMP
A= BACK
D=A
PUSH_D
# CALCULATE NEW ARGS ADDRESS
A=0
D=*A
A= argumentCount
D=D-A
A=3
D=D-A
A= ARGS
*A=D
# JUMP TO GIVEN ADDRESS
A= functionName
JMP
# RESTORE STATE
BACK:
# STORE ARGS TEMPORARILY (at 0xFF)
A= ARGS
D=*A
A=0xFF
*A=D
# RESTORE LOCALS FROM STACK
POP_D
A= LOCALS
*A=D
# RESTORE ARGS FROM STACK
POP_D
A= ARGS
*A=D
# SP = PREVIOUS ARGS VALUE
A= 0xFF
D=*A
A=0
*A=D
# PUSH RETVAL ON STACK
A= RETVAL
D=*A
PUSH_D
#####################
# FUNCTION
functionName:
A=0
D=*A
A= LOCALS
*A=D
A=0
D=*A
A= localsCount
D=D+A
A=0
*A=D
#####################
# RETURN
POP_D
A= RETVAL
*A=D
A= LOCALS
D=*A
A=0
*A=D
POP_D
A=D
JMP
####################
# PUSH_ARG
A= ARGS
D=*A
A= index
D=D+A
A=D
D=*A
PUSH_D
####################
# POP_ARG
A=ARGS
D=*A
A= index
D=D+A
# USE RETVAL AS TEMPORARY SLOT
# TO STORE ADDRESS
A= RETVAL
*A=D
POP_D
A= RETVAL
A=*A
*A=D
##################
# PUSH_LOCAL
A= LOCALS
D=*A
A= index
D=D+A
A=D
D=*A
PUSH_D
###################
# POP_LOCAL
A= LOCALS
D=*A
A= index
D=D+A
# USE RETVAL AS TEMPORARY SLOT
# TO STORE ADDRESS
A= RETVAL
*A=D
POP_D
A= RETVAL
A=*A
*A=D
#########################
2022 playlist https://youtube.com/playlist?list=PLXyMbqxbNx1AP2mJaXw5GWfqJaF4q-cBk
2020 playlist : https://youtube.com/playlist?list=PLXyMbqxbNx1A9_cTnZ4hI2vYttfJCvYJA
Рекомендуемые видео



















