#ifndef VVS_STDLIB_HEAP #define VVS_STDLIB_HEAP @@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@ @ Description: @ This function writes pattern into the memory locations: @ startaddr -> startaddr+count @ Call Stack: @ pattern @ startaddr @ count <-- TOS @ Return Stack: @ @@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@ NSSVTTSSSN | Mark: 11000 (memset) @ Prepare the stack for computation. @ Addr | Contents @ 0 | count @ 1 | startaddr @ 2 | pattern SSSSN | PUSH 0 (ptr) SNT | SWAP TTS | STORE SSSTN | PUSH 1 (ptr) SNT | SWAP TTS | STORE SSSTSN | PUSH 2 (ptr) SNT | SWAP TTS | STORE @ Store pattern into one memory location on each pass through this loop. NSSVSSSTTSSSSSSSSSSSN | Mark: 00011000 00000000 SSSSN | PUSH 0 (ptr) TTT | LOAD SSSTN | PUSH 1 (ptr) TTT | LOAD TSSS | ADD SSSTSN | PUSH 2 (ptr) TTT | LOAD TTS | STORE @ Decrement and check for loop end condition count == 0. SSSSN | PUSH 0 (ptr) TTT | LOAD SNS | DUP NTSSSSTTSSSSSSSSSSTN | BRZ > 00011000 00000001 SSSTN | PUSH 1 TSST | SUBTRACT SSSSN | PUSH 0 (ptr) SNT | SWAP TTS | STORE NSNSSSTTSSSSSSSSSSSN | JMP > 00011000 00000000 @ Clean up and return NSSVSSSTTSSSSSSSSSSTN | Mark: 00011000 00000001 SNN | DROP NTN | RTS @@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@ @ Description: @ This function copies count+1 words from source to destination. @ Call Stack: @ source @ destination @ count <-- TOS @ Return Stack: @ @@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@ NSSVTTSSTN | Mark: 11001 (memcpy) @ Prepare the stack for computation. @ Addr | Contents @ 0 | count @ 1 | destination @ 2 | source SSSSN | PUSH 0 (ptr) SNT | SWAP TTS | STORE SSSTN | PUSH 1 (ptr) SNT | SWAP TTS | STORE SSSTSN | PUSH 2 (ptr) SNT | SWAP TTS | STORE @ Copy one word on each pass through this loop. NSSVSSSTTSSTSSSSSSSSN | Mark: 00011001 00000000 SSSTN | PUSH 1 (ptr) TTT | LOAD SSSSN | PUSH 0 (ptr) TTT | LOAD TSSS | ADD SSSTSN | PUSH 2 (ptr) TTT | LOAD SSSSN | PUSH 0 (ptr) TTT | LOAD TSSS | ADD TTT | LOAD TTS | STORE @ Decrement and check for loop end conditions. SSSSN | PUSH 0 (ptr) TTT | LOAD SNS | DUP NTSSSSTTSSTSSSSSSSTN | BRZ > 00011001 00000001 SSSTN | PUSH 1 TSST | SUBTRACT SSSSN | PUSH 0 (ptr) SNT | SWAP TTS | STORE NSNSSSTTSSTSSSSSSSSN | JMP > 00011001 00000000 @ Clean up and return NSSVSSSTTSSTSSSSSSSTN | Mark: 00011001 00000001 SNN | DROP NTN | RTS @@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@ @ Description: @ This function writes random words into the memory locations: @ startaddr -> startaddr+count @ Call Stack: @ count @ startaddr <-- TOS @ Return Stack: @ @@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@ NSSVTTSTSN | Mark: 11010 (memrand) SSSSN | PUSH 0 (ptr) SNT | SWAP TTS | STORE @ Store random word into one memory location on each pass through this loop. NSSVSSSTTSTSSSSSSSSSN | Mark: 00011010 00000000 SNS | DUP SSSSN | PUSH 0 (ptr) TTT | LOAD TSSS | ADD NSTTSSSSN | JSR > 10000 (random) TTS | STORE @ Decrement and check loop end conditions SNS | DUP NTSSSSTTSTSSSSSSSSTN | BRZ > 00011010 00000001 SSSTN | PUSH 1 TSST | SUBTRACT NSNSSSTTSTSSSSSSSSSN | JMP > 00011010 00000000 NNN @ Clean up and return NSSVSSSTTSTSSSSSSSSTN | Mark: 00011010 00000001 SNN | DROP NTN | RTS #include #endif