;Clear CHAR for loading RSSB CHAR RSSB CHAR RSSB CHAR ;Load the current character POINTER: RSSB STRING RSSB ZERO RSSB ZERO RSSB CHAR ;Negate char RSSB TEMP RSSB TEMP RSSB TEMP RSSB CHAR RSSB ZERO RSSB ZERO RSSB TEMP RSSB CHAR RSSB CHAR RSSB CHAR RSSB TEMP RSSB CHAR RSSB CHAR ;CHAR += PREV_OUT RSSB ACC RSSB ACC RSSB PREV_OUT RSSB ZERO RSSB ZERO RSSB CHAR ;Store PREV_OUT-CHAR in PREV_OUT ;only if CHAR>=0 RSSB ACC RSSB ACC RSSB CHAR RSSB PREV_OUT ;Store PREV_OUT-CHAR in PREV_OUT ;only if CHAR<0 RSSB ACC RSSB ACC RSSB CHAR RSSB NEG RSSB PREV_OUT ;Output if CHAR>=0 RSSB ACC RSSB ACC RSSB CHAR RSSB OUT ;Output if CHAR<0 RSSB ACC RSSB ACC RSSB CHAR RSSB NEG RSSB OUT ;Load the next character RSSB CHAR RSSB CHAR RSSB CHAR NEXT_POINTER: RSSB STRING+1 RSSB ZERO RSSB ZERO RSSB CHAR ;Increment the pointer RSSB ACC RSSB ACC RSSB POS RSSB ZERO RSSB ZERO RSSB POINTER ;Increment NEXT_POINTER RSSB ACC RSSB ACC RSSB POS RSSB ZERO RSSB ZERO RSSB NEXT_POINTER ;If the next character is -1 then ;replace the code "RSSB PC" with "RSSB ACC" RSSB ACC RSSB ACC RSSB CHAR RSSB ZERO RSSB $+4 ;Jump to MAIN RSSB ACC RSSB ACC RSSB $+3 RSSB PC RSSB ZERO RSSB $-MAIN-1 ;Exit RSSB ACC RSSB ACC RSSB PC RSSB PC STRING: RSSB 'H' RSSB 'e' RSSB 'l' RSSB 'l' RSSB 'o' RSSB ',' RSSB ' ' RSSB 'W' RSSB 'o' RSSB 'r' RSSB 'l' RSSB 'd' RSSB '!' RSSB 'n' RSSB -1 ;HELLO PREV_OUT: RSSB 0 CHAR: RSSB 0 TEMP: RSSB 0