Page 1 of 1

MultiMaze Listing

PostPosted: Aug Mon 27, 2007 3:46 pm
by jburke71
Using Adobe Reader 8 and UltraEdit, I was able to cut the code out of the First Book of Kim (poor mans OCR) and dump it into a text file. UltraEdit was used to do column cut-n-paste. Here's the listing, mostly proof read, for MultiMaze (the formatting is slightly out of wack)...

Code: Select all
MULTI-MAZE BY JIM BUTTERFIELD                                         
                                                                       
Description: Find your way out of the maze. You are the               
flashing light in the centre of the display. As you move               
up (key 9) , down (1), left (4) or right (6), KIM will keep           
you in the central display; you'll see the walls of the maze           
moving by as you travel. Like walking through a real maze,             
you'll only see a small part of the maze as you pass through.         
If you can get out, you'll find yourself in a large open               
area; that means you've won. Press GO at any time for                 
a new maze. Program starts at address 0200.                           
                                                                       
Listing:                                                               
                                                                       
0200 E6 DO          START          INC RND              random seed           
0202 20 40 IF                 JSR KEYIN                                  
0205 DO F9                    BNE START                               
0207 A2 07                    LDX #7                patch the maze         
0209 26 DO          LP1         ROL RND             in 8 places           
020B 90 17                    BCC NXUP                                 
020D BC 08 03                 LDY PLACE,X                             
0210 BD 10 03                 LDA POINT1,X                             
0213 59 DE 02                 EOR MAZE,Y                               
0216 99 DE 02                 STA MAZE,Y                               
0219 C8                                INY                                     
021A C8                       INY                                     
024B BD 18 03                 LDA POINT2,X                             
021E 59 DE 02                 EOR MAZE,Y                               
0221 99 DE 02                 STA MAZE,Y                               
0224 CA              NXUP        DEX                                     
0225 10 E2                    BPL LP1                                 
0227 A2 02                    LDX #2                                   
0229 D8                       CLD                                     
022A 30 D4           SLINK       BMI START                               
022C BD DB 02     SETUP       LDA INIT,X                               
022F 95 D2                    STA MZPT,X                               
0231 CA                       DEX                 3 values from INIT     
0232 10 F8                    BPL SETUP                                 
                  ; pick out specific part of maze                     
0234 A0 0B        MAP         LDY #11                                 
0236 Bl D2        GETMOR      LDA (MZPT) ,Y     6 rows x 2             
0238 99 D8 00                 STA WORK,Y                               
023B 88                       DEY                                     
023C 10 F8                    BPL GETMOR                               
                           ; shift for vertical position                       
023E A2 0A                              LDX #10              for each of 6 rows     
0240 A4 D4            NXDIG       LDY POSIT         ..shift Y positions   
0242 A9 FF                    LDA #$FF          filling with 'walls'   
0244 38           REROL       SEC               ...on both sides       
0245 36 D9                    ROL WORK+1,X                             
0247 36 D8                    ROL WORK,X           roll 'em               
0249 2A                       ROL A                                   
024A 88                       DEY                                     
024B D0 F7                    BNE REROL                               
                           ; calculate segments                                 
024D 29 07                              AND #7                                   
024F A8                       TAY                                     
0250 B9 C6 02                 LDA TAB1,Y            3 bits to segment     
0253 95 D8                    STA WORK,X        ..stored               
0255 CA                       DEX                                     
0256 CA                       DEX                                     
0257 10 E7                    BPL NXDIG                               
                           ; test flasher                                       
0259 C6 D5            LIGHT            DEC PLUG          time out?             
025B 10 0A                    BPL MUG           . .no                 
025D A9 05                    LDA #5            ..yes, reset           
025F 85 D5                    STA PLUG          ..and..               
0261 A5 DE                    LDA WORK+6        ..flip..               
0263 49 40                    EOR #$40          ..flasher             
0265 85 DE                    STA WORK+6                               
                           ; light display                                     
0267 A9 7F          MUG               LDA #$7F                open the gate         
0269 8D 41 17                 STA SADD                                 
026C A0 09                    LDY #$09                                 
026E A2 0A                    LDX #10                                 
0270 B5 D8        SHOW        LDA WORK,X            tiptoe thru..         
0272 8D 40 17                 STA SAD           ..the segments         
0275 8C 42 17                 STA SBD                                 
0278 C6 D6        STl         DEC STALL               ..pausing             
027A D0 FC                    BNE STl           ..the segments         
027C C8                       INĀ„                                     
027D C8                       INT                                     
027E CA                       DEX                                     
027F CA                       DEX                                     
0280 10 EE                    BPL SHOW                                 
                          ; test new key depression                           
0282 20 40 IF                       JSR KEYIN             set dir reg           
0285 20 6A IF                 JSR GETKEY                               
0288 C5 D7                    CMP SOK               same as last?         
028A F0 CD                    BEQ LIGHT                               
028C 85 D7                    STA SOK                                 
                          ; test which key                                     
028E A2 04                               LDX #4                   5 items in table       
0290 DD CE 02     SCAN        CMP TAB2,X                               
0293 F0 05                    BEQ FOUND                               
0295 CA                       DEX                                     
0296 10 F8                    BPL SCAN                                 
0298 30 BC                    BMI LIGHT                               
029A CA                 FOUND       DEX                                     
029B 30 8D                    BMI SLINK              go key?               
029D BC D3 02                 LDY TAB3,X                               
02A0 B9 D8 00                 LDA WORK,Y                               
02A3 3D D7 02                 AND TAB4,X                               
02A6 D0 Bl                    BNE LIGHT                               
                        ; move                                               
02A8 CA                                DEX                                     
02A9 10 04                    BPL NOTUP                               
02AB C6 D4                    DEC POSIT              upward move           
02AD D0 85           MLINK       BNE MAP           l.o.n.g branch         
02AF D0 04        NOTUP       BNE SIDEWY                               
02B1 E6 D4                    INC POSIT             downward move         
02B3 D0 F8                    BNE MLINK                               
02B5 CA                SIDEWY      DEX                                     
02B6 D0 06                    BNE LEFT                                 
02B8 C6 D2             RIGHT       DEC MZPT                right move             
02BA C6 D2                    DEC MZPT                                 
02BC D0 EF                    BNE MLINK                               
02BE E6 D2            LEFT        INC MZPT                left move             
02C0 E6 D2                    INC MZPT                                 
02C2 D0 E9                    BNE MLINK                               
02C4 F0 F2                    BEQ RIGHT                               
                           ; tables follow in Hex format                       
02C6 TAB1       00 08 40 48 01 09 41 49                                 
02CE TAB2     13 09 01 06 04                                           
02D3 TABS     06 06 04 08                                             
02D7 TAB4     01 08 40 40                                             
02DB INIT     DA 02 08                                                 
02DE MAZE     FF FF 04 00 F5 7F 15 00 41 FE 5F 04 51 7D 5D 04         
              51 B6 54 14 F7 D5 04 54 7F 5E 01 00 FD FF 00 00         
              00 00 00 00 00 00 00 00 00 00                           
0308 PLACE     05 0B lA 10 14 18 17 10                                 
0310 POINT1   01 04 80 10 80 02 40 40                                 
0318 POINT2   02 02 40 01 10 04 80 10                                 
                           ; end of program                                     


Enjoy,

Jason