The opening stanzas of Space Voyage 9900…
Addr Code Line# Source Statement
0000 02E0 014E 00001 SPAVOY lwpi WRKSPC ; Load workspace
0004 020F 014E 00002 li R15,STACK ; Load "stack pointer"
0008 0201 022C 00003 li R1,TITLE
000C 06A0 00A2 00004 bl @PSTRNG ; Output title
0010 0201 0177 00005 li R1,STPSFL
0014 04C0 00006 SETUP clr R0 ; Clear all temp storage
0016 DC40 00007 movb R0,*R1+
0018 0281 0218 00008 ci R1,MOVTBL
001C 16FB (0014) 00009 jne SETUP
001E 0201 023F 00010 li R1,SHTLNG ; Short or long version?
0022 06A0 00A2 00011 bl @PSTRNG
0026 05A0 016F 00012 SEED0 inc @RNDM ; Increment 0th byte of random number seed
002A 06A0 00C4 00013 bl @STAT ; until user types answer
002E 13FB (0026) 00014 jeq SEED0
0030 06A0 00EC 00015 bl @INCH
0034 0280 5300 00016 ci R0,'S'*256
0038 1305 (0044) 00017 jeq SHORT
003A 0280 7300 00018 ci R0,'s'*256
003E 1302 (0044) 00019 jeq SHORT
0040 05A0 01AC 00020 inc @LENGTH ; If long set flag
0044 B800 016F 00021 SHORT ab R0,@RNDM ; Add to seed
0048 0201 0426 00022 li R1,INTRO0 ; Out password prompt
004C 06A0 00A2 00023 bl @PSTRNG
0050 0201 01C4 00024 li R1,PASWRD ; Get password
0054 05A0 0171 00025 SEED1 inc @RNDM+2 ; Increment 1st byte of random number seed
0058 06A0 00C4 00026 bl @STAT ; until user types answer
005C 13FB (0054) 00027 jeq SEED1
005E 06A0 00EC 00028 bl @INCH
0062 DC40 00029 movb R0,*R1+ ; Save it
0064 B800 0171 00030 ab R0,@RNDM+2 ; Add to seed
0068 05A0 0173 00031 SEED2 inc @RNDM+4 ; Increment 2nd byte of random number seed
006C 06A0 00C4 00032 bl @STAT ; until user types answer
0070 13FB (0068) 00033 jeq SEED2
0072 06A0 00EC 00034 bl @INCH
0076 DC40 00035 movb R0,*R1+ ; Save it
0078 B800 0173 00036 ab R0,@RNDM+4 ; Add to seed
007C 05A0 0175 00037 SEED3 inc @RNDM+6 ; Increment 3rd byte of random number seed
0080 06A0 00C4 00038 bl @STAT ; until user types answer
0084 13FB (007C) 00039 jeq SEED3
0086 06A0 00EC 00040 bl @INCH
008A DC40 00041 movb R0,*R1+ ; Save it
008C B800 0175 00042 ab R0,@RNDM+6 ; Add to seed
0090 06A0 0102 00043 bl @RVERIFY ; Ensure random number seed is valid
0094 0201 01C8 00044 li R1,QUDMAP ; Point to quadrant map
0098 0203 0040 00045 li R3,64
009C 06A0 00F0 00046 SETUP0 bl @RANDOM ; Setup number of Klingons
Notice the code peeking through the registers until the workspace pointer is loaded.
The last two instructions “push” the return address in R11 onto the “stack.”
A later
mov *R15+,R11
recovers the return address.