@program prog_code,prog_name map equ 0 youx equ 336 youy equ 338 youxv equ 340 youyv equ 342 level equ 344 lives equ 346 score equ 348 numgot equ 350 easy equ 352 exp equ 354 oldcs equ 356 head equ 756 tail equ 758 LEVELS equ 11 prog_code: lea program(pc),a0 move.l #760,d1 moveq #50,d0 move.w #$61,$600016 jsr skittles[check_version] move.w #$b2,$600016 rts ldtt: moveq #0,d0 moveq #0,d1 move.b (a5)+,d0 move.b (a5)+,d1 lea (a5),a1 jsr skittles[text] lfe: tst.b (a5)+ bne.s lfe dbra d7,ldtt rts program: lea (a1),a6 move.w #(760/4)-1,d0 lclr: clr.l (a1)+ dbra d0,lclr addq.w #3,lives(a6) jsr skittles[cllcd] lea bla(pc),a5 moveq #3,d7 bsr.s ldtt move.l #$ffffff00,d0 move.l d0,77*30+18+LCD_MEM move.l d0,92*30+18+LCD_MEM lea 77*30+17+LCD_MEM,a0 moveq #15,d0 framed: bset #0,(a0) bset #7,4(a0) lea 30(a0),a0 dbra d0,framed move.w #$2000,sr moveq #0,d7 loopt: moveq #10,d1 moveq #7,d2 moveq #2,d5 move.l d7,d0 moveq #1,d4 jsr skittle2[put_dec] lea 78*30+18+LCD_MEM,a0 move.w d7,d0 mulu #42,d0 lea data(pc),a1 add.w d0,a1 moveq #13,d1 ldp: move.b (a1)+,(a0)+ move.b (a1)+,(a0)+ move.b (a1)+,(a0)+ lea 27(a0),a0 dbra d1,ldp ldlc: tst.w $75b0 beq.s ldlc clr.w $75b0 move.w $75b2,d1 st easy(a6) clr.w score(a6) cmp.w #$31,d1 beq.s games sf easy(a6) move.w #200,score(a6) cmp.w #$33,d1 beq.s games cmp.w #264,d1 beq.s bye cmp.w #338,d1 beq.s up___ cmp.w #342,d1 beq.s up___ cmp.w #339,d1 beq.s up___ cmp.w #344,d1 beq.s down___ cmp.w #345,d1 beq.s down___ cmp.w #348,d1 beq.s down___ eol: bra loopt bye: rts up___: addq.w #1,d7 cmp.w #LEVELS,d7 bne.s eol moveq #0,d7 bra.s eol down___: subq.w #1,d7 bge.s eol moveq #LEVELS-1,d7 bra.s eol games: move.w d7,level(a6) move.w #$2700,sr gamel: addq.w #1,lives(a6) beq lose cmp.w #LEVELS,level(a6) beq win jsr skittles[cllcd] lea LCD_MEM+180,a0 moveq #29,d6 ldb: st 3450(a0) st (a0)+ dbra d6,ldb moveq #4,d7 lea strs(pc),a5 bsr ldtt move.l #1,youxv(a6) clr.l youx(a6) clr.l head(a6) clr.w numgot(a6) lea data,a0 lea LCD_MEM+240,a2 move.w level(a6),d0 mulu #42,d0 lea 0(a0,d0.w),a0 lea (a6),a1 moveq #13,d0 unpack_row: moveq #2,d1 unpack_group: move.b (a0)+,d2 moveq #7,d3 unpack_cell: lsl.b #1,d2 scs (a1)+ bcc.s none moveq #%01010101,d6 move.b d6,(a2) move.b d6,120(a2) not.b d6 move.b d6,60(a2) move.b d6,180(a2) none: addq.l #1,a2 dbra d3,unpack_cell dbra d1,unpack_group lea 216(a2),a2 dbra d0,unpack_row newmouse: moveq #24,d0 jsr flib[random] move.w d0,d1 moveq #14,d0 jsr flib[random] move.w d0,d2 mulu #24,d0 add.w d1,d0 move.b 0(a6,d0.w),d3 bne.s newmouse addq.b #1,0(a6,d0.w) addq.w #1,d2 mulu #240,d2 add.w d1,d2 moveq #24,d0 lea LCD_MEM+30,a0 add.w d2,a0 move.b d0,(a0) move.b d0,30(a0) move.b d0,120(a0) move.b d0,150(a0) moveq #126,d0 move.b d0,60(a0) move.b d0,90(a0) add.w #80,score(a6) addq.w #1,numgot(a6) addq.w #8,exp(a6) cmp.w #12,numgot(a6) beq winlev igl: subq.w #1,score(a6) bge.s nn clr.w score(a6) nn: move.w youy(a6),d0 addq.w #1,d0 mulu #240,d0 add.w youx(a6),d0 lea LCD_MEM,a0 add.w d0,a0 moveq #126,d0 move.b d0,(a0) move.b d0,210(a0) not.b d0 move.b d0,30(a0) move.b d0,60(a0) move.b d0,90(a0) move.b d0,120(a0) move.b d0,150(a0) move.b d0,180(a0) move.w head(a6),d0 lea oldcs(a6),a0 add.w d0,a0 move.w youx(a6),(a0) move.w youy(a6),2(a0) addq.w #4,d0 cmp.w #400,d0 bne.s nhr moveq #0,d0 nhr: move.w d0,head(a6) MOVE.W #$feff,$600018 bsr updateinfo btst #6,$60001b bne.s nesc rts nesc: move.w #$fffe,$600018 tst.w youxv(a6) bne.s cmv mh: move.b $60001b,d7 btst #4,d7 bne.s nleft clr.w youyv(a6) move.w #-1,youxv(a6) nleft: btst #6,d7 bne.s nright clr.w youyv(a6) move.w #1,youxv(a6) nright: tst.b $600017 bne.s mh bra.s md cmv: move.b $60001b,d7 btst #7,d7 bne.s ndown clr.w youxv(a6) move.w #1,youyv(a6) ndown: btst #5,d7 bne.s nup clr.w youxv(a6) move.w #-1,youyv(a6) nup: tst.b $600017 bne.s cmv md: move.w youx(a6),d0 add.w youxv(a6),D0 move.w d0,youx(a6) blt hitleft cmp.w #24,d0 bge hitright xr: move.w youy(a6),d0 add.w youyv(a6),D0 move.w d0,youy(a6) blt hittop cmp.w #14,d0 bge hitbottom yr: subq.w #1,exp(a6) bge.s nshr addq.w #1,exp(a6) move.w tail(a6),d0 lea oldcs(a6),a0 add.w d0,a0 move.w (a0),d1 move.w 2(a0),d2 move.w d1,d4 move.w d2,d5 addq.w #4,d0 cmp.w #400,d0 bne.s ntr moveq #0,d0 ntr: move.w d0,tail(a6) mulu #24,d2 add.w d1,d2 moveq #0,d3 move.b d3,0(a6,d2.w) mulu #240,d5 add.w d4,d5 lea LCD_MEM+240,a0 add.w d5,a0 move.b d3,(a0) move.b d3,30(a0) move.b d3,60(a0) move.b d3,90(a0) move.b d3,120(a0) move.b d3,150(a0) move.b d3,180(a0) move.b d3,210(a0) nshr: move.w youy(a6),d0 mulu #24,d0 add.w youx(a6),d0 move.b 0(a6,d0.w),d1 st 0(a6,d0.w) tst.b d1 bgt newmouse beq igl dead: subq.w #2,lives(a6) bra gamel hitleft: tst.w easy(a6) beq.s dead move.w #23,youx(a6) bra xr hitright: tst.w easy(a6) beq.s dead clr.w youx(a6) bra xr hittop: tst.w easy(a6) beq.s dead move.w #13,youy(a6) bra yr hitbottom: tst.w easy(a6) beq.s dead clr.w youy(a6) bra yr updateinfo: move.w lives(a6),d0 ext.l d0 moveq #3,d4 moveq #7,d1 moveq #25,d2 jsr skittle2[put_dec] move.w level(a6),d0 ext.l d0 moveq #3,d4 moveq #10,d1 moveq #25,d2 jsr skittle2[put_dec] move.w score(a6),d0 ext.l d0 lsr.l #4,d0 moveq #3,d4 moveq #25,d2 moveq #13,d1 jmp skittle2[put_dec] winlev: addq.w #1,level(a6) add.w #100,score(a6) clr.w exp(a6) bra gamel win: add.w #1000,score(a6) lose: bsr.s updateinfo lea gov(pc),a1 move.w #199,d0 moveq #123,d1 jsr skittles[tinytext] jsr skittles[wait_esc] move.w score(a6),d7 ext.l d7 lea hstable,a5 lsr.l #4,d7 jmp skittle2[high_score] hstable: dc.b "Default score ",0 dc.l 100 dc.b "Default score ",0 dc.l 50 dc.b "Default score ",0 dc.l 40 dc.b "Default score ",0 dc.l 40 dc.b "Default score ",0 dc.l 40 dc.b "Default score ",0 dc.l 30 dc.b "Default score ",0 dc.l 30 dc.b "Default score ",0 dc.l 30 dc.b "Default score ",0 dc.l 20 dc.b "Default score ",0 dc.l 20 dc.b "Default score ",0 dc.l 20 dc.b "Default score ",0 dc.l 10 dc.b "Default score ",0 dc.l 10 dc.b "Default score ",0 dc.l 10 data: dc.b %00000000,%00000000,%00000000 dc.b %00000000,%00000000,%00000000 dc.b %00000000,%00000000,%00000000 dc.b %00000000,%00000000,%00000000 dc.b %00000000,%00000000,%00000000 dc.b %00000001,%00000000,%10000000 dc.b %00000001,%00000000,%10000000 dc.b %00000001,%00000000,%10000000 dc.b %00000001,%00000000,%10000000 dc.b %00000000,%00000000,%00000000 dc.b %00000000,%00000000,%00000000 dc.b %00000000,%00000000,%00000000 dc.b %00000000,%00000000,%00000000 dc.b %00000000,%00000000,%00000000 dc.b %00000000,%00000000,%00000000 dc.b %00000000,%00000000,%00000000 dc.b %00000000,%00000000,%00000000 dc.b %00000000,%00000000,%00000000 dc.b %00111111,%11110000,%00000000 dc.b %00000000,%00000000,%00000000 dc.b %00000000,%00000000,%00000000 dc.b %00000000,%00000000,%00000000 dc.b %00000000,%00000000,%00000000 dc.b %00000000,%00001111,%11111100 dc.b %00000000,%00000000,%00000000 dc.b %00000000,%00000000,%00000000 dc.b %00000000,%00000000,%00000000 dc.b %00000000,%00000000,%00000000 dc.b %00000000,%00000000,%00000000 dc.b %00000000,%00000000,%00000000 dc.b %00001100,%00000000,%00000000 dc.b %00000000,%00000000,%00110000 dc.b %00000000,%00000000,%11000000 dc.b %00000000,%00000011,%00000000 dc.b %00000000,%00001100,%00000000 dc.b %00000000,%00110000,%00000000 dc.b %00000000,%11000000,%00000000 dc.b %00000011,%00000000,%00000000 dc.b %00001100,%00000000,%00110000 dc.b %00000000,%00000000,%00000000 dc.b %00000000,%00000000,%00000000 dc.b %00000000,%00000000,%00000000 dc.b %00000000,%00000000,%00000000 dc.b %00000000,%00000000,%00000000 dc.b %00000000,%00000000,%00000000 dc.b %00000000,%00000000,%00000000 dc.b %00111111,%11111000,%00000100 dc.b %00100000,%00000000,%00000100 dc.b %00100000,%00000000,%00000100 dc.b %00100000,%00000000,%00000100 dc.b %00100000,%00000000,%00000100 dc.b %00100000,%00011111,%11111100 dc.b %00000000,%00000000,%00000000 dc.b %00000000,%00000000,%00000000 dc.b %00000000,%00000000,%00000000 dc.b %00000000,%00000000,%00000000 dc.b %00000000,%00000000,%00000000 dc.b %00000000,%00000000,%00000000 dc.b %00001111,%10000001,%11111000 dc.b %00000000,%10000001,%00000000 dc.b %00000000,%10000001,%00000000 dc.b %00000000,%10000001,%00000000 dc.b %00000000,%10000001,%00000000 dc.b %00000000,%10000001,%00000000 dc.b %00000000,%10000001,%00000000 dc.b %00000000,%10000001,%00000000 dc.b %00000000,%10000001,%00000000 dc.b %00001111,%10000001,%11111000 dc.b %00000000,%00000000,%00000000 dc.b %00000000,%00000000,%00000000 dc.b %00000000,%00000000,%00111111 dc.b %00000000,%00000000,%01000000 dc.b %00000000,%00000000,%10000000 dc.b %00000000,%00000001,%00000000 dc.b %00000000,%00000010,%00000000 dc.b %00000000,%00000100,%00000000 dc.b %00000000,%00000000,%00000000 dc.b %00000000,%00000000,%00000000 dc.b %00000000,%00100000,%00000000 dc.b %00000000,%01000000,%00000000 dc.b %00000000,%10000000,%00000000 dc.b %00000001,%00000000,%00000000 dc.b %00000010,%00000000,%00000000 dc.b %11111100,%00000000,%00000000 dc.b %00000000,%00000000,%00000000 dc.b %00000000,%00000000,%00000000 dc.b %00000000,%00000000,%00000000 dc.b %01111100,%00111100,%01111100 dc.b %01111110,%01111110,%01111110 dc.b %01111110,%01111110,%01111110 dc.b %01111110,%01111110,%01111110 dc.b %01111100,%01111110,%01111110 dc.b %01000000,%01000010,%01111110 dc.b %01000000,%01000010,%01111110 dc.b %01000000,%01000010,%01111100 dc.b %00000000,%00000000,%00000000 dc.b %00000000,%00000000,%00000000 dc.b %00000000,%00000000,%00000000 dc.b %00000000,%00000000,%00000000 dc.b %00000000,%00000000,%00000000 dc.b %00000000,%00000000,%00000000 dc.b %01111100,%10011111,%00011100 dc.b %00010000,%10011111,%00100010 dc.b %00010000,%10011111,%00000010 dc.b %00010000,%10011111,%00000100 dc.b %00010000,%10000001,%00001000 dc.b %00010000,%10000001,%00010000 dc.b %00010000,%10000001,%00100000 dc.b %00010000,%10011111,%00111110 dc.b %00000000,%00000000,%00000000 dc.b %00000000,%00000000,%00000000 dc.b %00000000,%00000000,%00000000 dc.b %00000000,%00000000,%00000000 dc.b %00000000,%00000000,%00000000 dc.b %00111111,%11111111,%11111100 dc.b %00000000,%00000000,%00000100 dc.b %00000000,%00000000,%00000100 dc.b %00000000,%00111100,%00000100 dc.b %00111111,%10111101,%11111100 dc.b %00100000,%00111100,%00000000 dc.b %00100000,%00111100,%00000000 dc.b %00100000,%00000000,%00000000 dc.b %00111111,%11111111,%11111100 dc.b %00000000,%00000000,%00000000 dc.b %00111100,%00111100,%00111100 dc.b %00000000,%00000000,%00000000 DC.B %00000000,%00000000,%00000000 DC.B %00100000,%00000000,%00000010 DC.B %00101000,%00000000,%00001010 DC.B %00101010,%00000000,%00101010 DC.B %00001010,%10000000,%10101000 DC.B %00000010,%10100010,%10100000 DC.B %00000000,%10101010,%10000000 DC.B %00000000,%10101010,%10000000 DC.B %00000010,%10100010,%10100000 DC.B %00001010,%10000000,%10101000 DC.B %00101010,%00000000,%00101010 DC.B %00101000,%00000000,%00001010 DC.B %00100000,%00000000,%00000010 DC.B %00000000,%00000000,%00000000 DC.B %00000000,%00000000,%00000000 DC.B %01100000,%11111111,%00000010 DC.B %01101000,%00001000,%00001010 DC.B %01101010,%00001000,%00101010 DC.B %00001010,%10001000,%10101000 DC.B %00000010,%10101010,%10100000 DC.B %00000000,%10101010,%10000000 DC.B %00000000,%10101010,%10000000 DC.B %00000010,%10101010,%10100000 DC.B %00001010,%10001000,%10101000 DC.B %01101010,%00001000,%00101010 DC.B %01101000,%00001000,%00001010 DC.B %01100000,%11111111,%00000010 DC.B %00000000,%00000000,%00000000 strs: dc.b 192,20,"Nibbles0",0 dc.b 198,30,"by PAD",0 dc.b 198,48,"LIVES:",0 dc.b 198,72,"LEVEL:",0 dc.b 198,96,"SCORE:",0 bla: dc.b 10,10,"NIBBLES 0 ---- EXPERIMENTAL VERSION",0 title_2: dc.b 10,30,"by Patrick Davidson (ariwsi@juno.com)",0 title_3: dc.b 10,50,"1 = Easy Mode 3 = Hard Mode",0 dc.b 16,80,"Level ------>",0 gov: dc.b "Press ESC",0 prog_name: dc.b "Nibbles 0 by ARIWSI - V31",0 reloc_open add_library skittles add_library skittle2 add_library hexlib add_library flib reloc_close end