Enclosed find a mouse trap game program which will work for anyone having Pixie Graphic capability (1861 chip). It uses less than 256 bytes. A speaker should be connected to the Q-line as shown in Sept. 76 issue of "Popular Electronics". The speed of the mouse can be varied by the input byte. The Input switch controls the trap. There is on-screen scoring and sound effects.
| R0 | Program counter |
| R1 | Interrupt |
| R2 | Stack |
| R3 | Main |
| R4 | Spare |
| R5 | Spare |
| R6 | # of Lines |
| R7 | # of Bytes |
| R8 | Store 1st Byte on Line |
| R9 | Store Address of First Line |
| RA | Store Address of First Line |
| RB | Freq. |
| RC | Mouse's Score |
| RD | Your Score |
| RE | Time Register for Speed or Mouse |
| RF | Game Board Pointer & Searcher & End of Game Test |
; MOUSE TRAP - A GAME FOR PIXIE GRAPHICS ; ; WRITTEN BY DAN RUBIS ; ; INITIALIZATION SECTION 0000 90 GHI R0 ; INITIALIZE - HIGH 0001 B1 PHI R1 ; BYTES 0002 B2 PHI R2 ; OF 0003 B3 PHI R3 ; SOME 0004 B4 PHI R4 ; REGISTERS 0005 F8 2D LDI MAIN ; INITIALIZE MAIN 0007 A3 PLO R3 ; PROGRAM P-COUNTER 0008 F8 BD LDI STACK-1 ; INITIALIZE STACK 000A A2 PLO R2 ; POINTER 000B F8 11 LDI INTRPT ; INITIALIZE INTERRUPT 000D A1 PLO R1 ; HANDLER P-COUNTER 000E D3 SEP R3 ; GO TO MAINLINE ; INTERRUPT HANDLER 000F 72 INTRTN: LDXA ; RESTORE D REG. 0010 70 RET ; RETURN FROM INTERRUPT 0011 22 INTRPT: DEC R2 ; R2 IS THE STACK POINTER 0012 78 SAV ; SAVE T REG ON STACK 0013 22 DEC R2 0014 52 STR R2 ; SAVE D REG. ON STACK 0015 C4 NOP ; SYNC 0016 C4 NOP ; SYNC 0017 C4 NOP ; SYNC 0018 F8 00 LDI #00 001A B0 PHI R0 001B F8 00 LDI #00 001D A0 PLO R0 001E 80 REFRSH: GLO R0 ; GET LINE START ADDRESS 001F E2 SEX R2 0020 E2 SEX R2 ; NOP 0021 20 DEC R0 0022 A0 PLO R0 0023 E2 SEX R2 ; NOP 0024 20 DEC R0 0025 A0 PLO R0 0026 E2 SEX R2 ; NOP 0027 20 DEC R0 0028 A0 PLO R0 0029 3C 1E BN1 REFRSH ; LOOP TIL 'DISPLAY STATUS' LOW 002B 30 0F BR INTRTN ; MAIN LINE 002D E2 MAIN: SEX R2 ; TURN ON TV 002E 69 INP 1 002F F8 C0 AF +DLDI BOARD,R15 ; RF POINTS TO DISPLAY AREA 0032 F8 00 BF 0035 F8 00 BLANK: LDI #00 ; BLANK OUT BITE IN 0037 5F STR RF ; DISPLAY AREA 0038 8F GLO RF ; CHECK FOR END OF BOARD 0039 FB FF XRI #FF ; ( IE. END OF PAGE) 003B 32 40 BZ MOUSE ; - YES - CONTINUE ON 003D 1F INC RF ; - NO - INC. TO NEXT 003E 30 35 BR BLANK ; BYTE AND BACK FOR NEXT 0040 F8 D0 MOUSE: LDI #D0 ; SET REG. RF TO POINT 0042 AF PLO RF ; TO MOUSE PICTURE 0043 F8 01 LDI #01 ; AND STORE THE 0045 5F STR RF ; MOUSE 0046 F8 CB LDI #CB ; SET REG. RF TO POINT 0048 AF PLO RF ; TO GAME BOARD PICTURE 0049 F8 05 LDI #05 ; AND STORE PART OF 004B 5F STR RF ; GAME BOARD 004C F8 DB LDI #DB ; AND THEN 004E AF PLO RF ; DO SECOND 004F F8 05 LDI #05 ; PART OF 0051 5F STR RF ; BOARD 0052 F8 00 LDI #00 0054 B9 PHI R9 0055 BA PHI RA 0056 BC PHI RC 0057 BD PHI RD 0058 F8 DD LDI #DD ; INITIALIZE SCORE 005A AD PLO RD ; BOARD 005B F8 DE LDI #DE 005D AC PLO RC 005E F8 D0 LOOP: LDI #D0 ; INITIALIZE ADDRESS 0060 A9 PLO R9 ; OF TRACK 0061 AA PLO RA 0062 F8 07 LDI #07 ; R7 = NUMBER OF BYTES - 1 0064 A7 PLO R7 ; IN TRACK 0065 09 LDN R9 ; STORE FIRST BYTE ON LINE 0066 B8 PHI R8 0067 76 SHRC ; ROTATE RIGHT 0068 19 INC R9 ; MOVE POINTER TO NEXT BYTE ON LINE 0069 09 LDN R9 006A 76 SHRC ; ROTATE RIGHT 006B 59 STR R9 ; RESTORE BYTE 006C 27 DEC R7 ; ONE LESS BYTE 006D 6C INP 4 ; READ MOUSE SPEED FROM KEYBOARD 006E AE PLO RE ; AND SAVE IN TIME REGISTER 006F 2E DELAY: DEC RE ; DELAY LOOP 0070 8E GLO RE 0071 3A 6F BNZ DELAY 0073 87 GLO R7 ; ALL BYTES SHIFTED? 0074 3A 68 BNZ #68 0076 98 GHI R8 ; SHIFT FIRST BYTE ON LINE 0077 76 SHRC 0078 5A STR RA ; AND STORE 0079 37 70 B4 SKIP ; CONTINUE SHIFTING 007B 30 5E BR LOOP ; UNTIL 'IN' ON 007D F8 D3 SKIP: LDI #D3 007F AF PLO RF 0080 0F LDN RF ; TEST IF MOUSE 0081 FB 02 XRI #02 ; IS CAUGHT 0083 3A 91 BNZ #91 0085 F8 01 LDI #01 ; SCORE 1 FOR YOU 0087 5D STR RD 0088 8D GLO RD 0089 FC 08 ADI #08 008B AD PLO RD 008C F8 20 LDI #20 ; SET BUZZER 008E AB PLO RB ; FREQUENCY 008F 30 9B BR BUZZER ; AND BUZZZZ 0091 F8 01 LDI #01 ; SCORE 1 FOR THE MOUSE 0093 5C STR RC 0094 8C GLO RC 0095 FC 08 ADI #08 0097 AC PLO RC 0098 F8 FF LDI #FF ; SET BUZZER 009A AB PLO RB ; FREQUENCY 009B 7B BUZZER: SEQ 009C 8B GLO RB 0090 FF 01 BUZON: SMI #01 009F 3A 9D BNZ BUZON 00A1 7A REQ 00A2 8B GLO RB 00A3 FF 01 BUZOFF: SMI #01 00A5 3A A3 BNZ BUZOFF 00A7 37 9B B4 BUZZER ; BUZZ WHILE 'IN' IS ON 00A9 F8 FD LDI #FD ; END OF GAME? 00AB AF PLO RF 00AC 4F LDA RF 00AD FB 01 XRI #01 00AF 32 B8 BZ HALT 00B1 0F LDN RF 00B2 FB 01 XRI #01 00B4 32 B8 BZ HALT 00B6 30 5E BR LOOP ; LOOP BACK FOR ANOTHER PASS 00B8 30 B8 HALT: BR HALT ; END OF GAME HANG UP 00BA 00 00 .DBYTE 0000,0000 00BC 00 00 ; STACK STARTS HERE 00BE STACK: ; GAME BOARD STARTS HERE = 00 C0 .ORG #C0 00C0 BOARD: .END USER SYMBOL TABLE BLANK 0035 BOARD 00C0 BUZOFF 00A3 BUZON 009D BUZZER 0098 DELAY 006F HALT 00B8 INTRPT 0011 INTRTN 000F LOOP 005E MAIN 002D MOUSE 0040 REFRSH 001E SKIP 007D STACK 00BE PROGRAM SIZE = 00C0 0 ERRORS DETECTED