* P.O.V 10 * Menu re-written for 1/2 meg owners BUFFER_SIZE: EQU 16*8 WIDTH: EQU 16 go: BASE: equ $66000 ;screen base for border scroller start: move.l sp,a5 move.l 4(a5),a5 ;get basepage move.l $C(a5),d0 ;text segment add.l $14(a5),d0 ;data segment add.l $1C(a5),d0 ;unitialized add.l #$100,d0 ;basepage size move.l d0,-(sp) move.l a5,-(sp) move.w d0,-(sp) move.w #$4a,-(sp) trap #1 add.l #12,sp ;okay that's it memory free & allocated bsr set_super wait_for_drive: tst.w $43e bne.s wait_for_drive bsr hide_cursor bsr save_pal bsr set_palette bsr get_base move.l #BASE,a0 ;screen_base bsr set_low_rez move.l #BASE+32000,a0 move.w #20,d0 clr1: move.w #8*40-1,d1 clr2: clr.l (a0)+ dbf d1,clr2 dbf d0,clr1 bsr show_pic ;set up for no botton border ori.w #$700,sr move.l $70,old70 move.l $120,old120 move.b $fffffa07,olda07 move.b $fffffa09,olda09 move.b $fffffa17,olda17 move.b $fffffa1b,olda1b move.b $fffffa21,olda21 MOVE.L #vert_isr,$70.W MOVE.L #horiz_isr,$120.W MOVE.B #1,$FFFFFA07.W CLR.B $FFFFFA09.W BCLR #0,$FFFFFA0F.W BSET #0,$FFFFFA13.W BCLR #3,$FFFFFA17.W CLR.B $FFFFFA1B.W CLR.B $FFFFFA21.W MOVE.W #$2300,SR ;initialise system scroller lea scroll_line,a0 move.l a0,line_ptr ;init tune ;******************************************* ;* There is more than one tune here..... ;* 1=AUTOMATION 51 ;* 2=TUNE 2 move.w #1,c2 move.w #$ffff,horiz_sync main_loop: tst.w horiz_sync bne main_loop ; move.w $ffff8240.w,-(sp) ; move.w #$070,$ffff8240.w bsr scroll bsr scroll2 bsr scroll bsr scroll bsr scroll2 ; move.w (sp)+,$ffff8240.w MOVE.W #$FFFF,horiz_sync move.b $fffc02,d0 ; cmp.b #01,d0 ;escape ; beq exit cmp.b #$b,d0 ;0 key bne.s not_zero tst.w zero_counter bne.s aa eor.w #$111,pic+2 move.w #10,zero_counter bra.s main_loop zero_counter: dc.w 0 not_zero: tst.w zero_counter beq.s car aa: sub.w #1,zero_counter car: cmp.b #2,d0 ;1 key blt.s main_loop cmp.b #6,d0 ;5 key bge.s main_loop move.l d0,-(sp) bsr isr_off move.l old_base,a0 ;screen_base bsr set_low_rez move.l (sp)+,d0 ;key is in D0.L and.l #$ff,d0 lea filenames,a6 sub.b #2,d0 cmp.b #2,d0 beq.s exit mulu #14,d0 add.w d0,a6 tst.w zero_counter beq.s hz50 eor.b #2,$ff820a hz50: bsr user_mode pea go pea go move.l a6,-(sp) clr.w -(sp) move.w #$4b,-(sp) trap #1 add.l #16,sp bsr set_super pop: move.w $116,$ff8240 nop nop bra.s pop exit: bsr isr_off bsr show_cursor ;reset rez move.l old_base,a0 ; bsr set_med_rez bsr set_low_rez ; bsr restore_pal bsr user_mode clr.w -(sp) move.w #$4c,-(sp) trap #1 addq.l #4,sp rts isr_off: ORI.W #$700,SR CLR.B $FFFF8260.W MOVE.B olda07,$FFFFFA07 MOVE.B olda09,$FFFFFA09 MOVE.B olda17,$FFFFFA17 move.b olda1b,$fffffa1b move.b olda21,$fffffa21 move.l old120,$120 move.l old70,$70 MOVE.W #$2300,SR endmusic: lea $ff8800,a0 move.l #$8080000,(a0) move.l #$9090000,(a0) move.l #$a0a0000,(a0) rts vert_isr: CLR.B $FFFF8260.W MOVEM.L D0-d7,-(A7) MOVEM.L pic+2(PC),d0-d7 MOVEM.L d0-d7,$FFFF8240.W MOVEM.L (A7)+,D0-d7 MOVE.B #49,counter ;49/50 of a second MOVE.L #horiz_isr,$120.W clr.w horiz_sync bsr tuneisr MOVE.B #8,$FFFFFA1B.W MOVE.B #3,$FFFFFA21.W rte horiz_isr: move.b #4,$fffffa21.w ;4/50 of a second (a frame) makes it in the move.l #go_border,$120.w ;border. (at the start of a refresh) rte go_border: subq.b #1,counter beq.s extended_scan rte extended_scan: nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop CLR.B $FFFF820A.W nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop MOVE.B #2,$FFFF820A.W f1: MOVE.L #L3DBD0,$120.W rte L3DBD0 ;move.b #0,$ffff8260.w ;set rez (can be changed to get a med rez scroller) clr.b $FFFFFA21.w clr.b $FFFFFA1B.w rte stack_save: dc.l 0 old70: dc.l 0 old120: dc.l 0 olda07: dc.l 0 olda09: dc.b 0 olda17: dc.b 0 olda1b: dc.b 0 olda21: dc.b 0 even horiz_sync: dc.w 0 old_base: dc.l 0 counter: dc.w 0 scroll: move.l line_ptr,a0 ;need a new letter? cmp.b #$ff,(a0) bne loop3 lea scroll_line,a0 ;restart message move.l a0,line_ptr loop3: tst.w scroll_number bne.s loop2 move.w #WIDTH,scroll_number clr.w d0 move.b (a0)+,d0 move.l a0,line_ptr moveq #0,d1 sub.w #32,d0 lsl.w #7,d0 ;*128 lea font,a0 add.w d0,a0 ;letter address is in A0 ;transfer letter into buffer lea buffer,a1 move.l (a0)+,(a1)+ move.l (a0)+,(a1)+ move.l (a0)+,(a1)+ move.l (a0)+,(a1)+ move.l (a0)+,(a1)+ move.l (a0)+,(a1)+ move.l (a0)+,(a1)+ move.l (a0)+,(a1)+ move.l (a0)+,(a1)+ move.l (a0)+,(a1)+ move.l (a0)+,(a1)+ move.l (a0)+,(a1)+ move.l (a0)+,(a1)+ move.l (a0)+,(a1)+ move.l (a0)+,(a1)+ move.l (a0)+,(a1)+ move.l (a0)+,(a1)+ move.l (a0)+,(a1)+ move.l (a0)+,(a1)+ move.l (a0)+,(a1)+ move.l (a0)+,(a1)+ move.l (a0)+,(a1)+ move.l (a0)+,(a1)+ move.l (a0)+,(a1)+ move.l (a0)+,(a1)+ move.l (a0)+,(a1)+ move.l (a0)+,(a1)+ move.l (a0)+,(a1)+ move.l (a0)+,(a1)+ move.l (a0)+,(a1)+ move.l (a0)+,(a1)+ move.l (a0),(a1) loop2: move.l #BASE,a0 add.w #32480,a0 move.l a0,a2 add.w #152,a2 lea buffer,a1 ;scroll buffer into right pixel of screen ready for scrolling move.w #16-1,d1 loop: roxl.w (a1) move.w (a1),d0 and.w #1,d0 or.w d0,(a2) roxl.w 2(a1) move.w 2(a1),d0 and.w #1,d0 or.w d0,2(a2) roxl.w 4(a1) move.w 4(a1),d0 and.w #1,d0 or.w d0,4(a2) roxl.w 6(a1) move.w 6(a1),d0 and.w #1,d0 or.w d0,6(a2) addq.w #8,a1 add.w #160,a2 dbf d1,loop move.w #4-1,d1 ;4 planes of screen. shift: move.w #16-1,d0 loopy: roxl.w 152(a0) roxl.w 144(a0) roxl.w 136(a0) roxl.w 128(a0) roxl.w 120(a0) roxl.w 112(a0) roxl.w 104(a0) roxl.w 96(a0) roxl.w 88(a0) roxl.w 80(a0) roxl.w 72(a0) roxl.w 64(a0) roxl.w 56(a0) roxl.w 48(a0) roxl.w 40(a0) roxl.w 32(a0) roxl.w 24(a0) roxl.w 16(a0) roxl.w 8(a0) move.w (a0),d7 and.w #$7fff,d7 roxl.w #1,d7 move.w d7,(a0) add.w #160,a0 dbf d0,loopy sub.w #160*16,a0 addq.w #2,a0 dbf d1,shift sub.w #1,scroll_number rts scroll2: move.l line_ptr2,a0 ;need a new letter? cmp.b #$ff,(a0) bne loop3b lea scroll_line2,a0 ;restart message move.l a0,line_ptr2 loop3b: tst.w scroll_number2 bne.s loop2b move.w #WIDTH,scroll_number2 clr.w d0 move.b (a0)+,d0 move.l a0,line_ptr2 moveq #0,d1 sub.w #32,d0 lsl.w #7,d0 ;*128 lea font,a0 add.w d0,a0 ;letter address is in A0 ;transfer letter into buffer lea buffer2,a1 move.l (a0)+,(a1)+ move.l (a0)+,(a1)+ move.l (a0)+,(a1)+ move.l (a0)+,(a1)+ move.l (a0)+,(a1)+ move.l (a0)+,(a1)+ move.l (a0)+,(a1)+ move.l (a0)+,(a1)+ move.l (a0)+,(a1)+ move.l (a0)+,(a1)+ move.l (a0)+,(a1)+ move.l (a0)+,(a1)+ move.l (a0)+,(a1)+ move.l (a0)+,(a1)+ move.l (a0)+,(a1)+ move.l (a0)+,(a1)+ move.l (a0)+,(a1)+ move.l (a0)+,(a1)+ move.l (a0)+,(a1)+ move.l (a0)+,(a1)+ move.l (a0)+,(a1)+ move.l (a0)+,(a1)+ move.l (a0)+,(a1)+ move.l (a0)+,(a1)+ move.l (a0)+,(a1)+ move.l (a0)+,(a1)+ move.l (a0)+,(a1)+ move.l (a0)+,(a1)+ move.l (a0)+,(a1)+ move.l (a0)+,(a1)+ move.l (a0)+,(a1)+ move.l (a0),(a1) loop2b: move.l #BASE,a0 add.l #32480+(18*160),a0 move.l a0,a2 add.w #152,a2 lea buffer2,a1 ;scroll buffer into right pixel of screen ready for scrolling move.w #16-1,d1 loopb: roxl.w (a1) move.w (a1),d0 and.w #1,d0 or.w d0,(a2) roxl.w 2(a1) move.w 2(a1),d0 and.w #1,d0 or.w d0,2(a2) roxl.w 4(a1) move.w 4(a1),d0 and.w #1,d0 or.w d0,4(a2) roxl.w 6(a1) move.w 6(a1),d0 and.w #1,d0 or.w d0,6(a2) addq.w #8,a1 add.w #160,a2 dbf d1,loopb move.w #4-1,d1 ;4 planes of screen. shiftb: move.w #16-1,d0 loopyb: roxl.w 152(a0) roxl.w 144(a0) roxl.w 136(a0) roxl.w 128(a0) roxl.w 120(a0) roxl.w 112(a0) roxl.w 104(a0) roxl.w 96(a0) roxl.w 88(a0) roxl.w 80(a0) roxl.w 72(a0) roxl.w 64(a0) roxl.w 56(a0) roxl.w 48(a0) roxl.w 40(a0) roxl.w 32(a0) roxl.w 24(a0) roxl.w 16(a0) roxl.w 8(a0) move.w (a0),d7 and.w #$7fff,d7 roxl.w #1,d7 move.w d7,(a0) add.w #160,a0 dbf d0,loopyb sub.w #160*16,a0 addq.w #2,a0 dbf d1,shiftb sub.w #1,scroll_number2 rts set_super: clr.l -(sp) ;set supervisor mode move.w #32,-(sp) trap #1 addq.l #6,sp move.l d0,stack_save rts user_mode: move.l stack_save,-(sp) move.w #$20,-(sp) trap #1 addq.l #6,sp rts save_pal: lea old_pal,a1 lea $ffff8240,a0 move.w #16-1,d0 save_p: move.w (a0)+,(a1)+ dbf d0,save_p rts restore_pal: lea old_pal,a0 bra.s set_p set_palette: lea pic+2,a0 set_p: lea $ffff8240,a1 move.w #16-1,d0 set_pal: move.w (a0)+,(a1)+ dbf d0,set_pal rts get_base: move.w #3,-(sp) trap #14 addq.l #2,sp move.l d0,old_base rts set_med_rez: move.w #1,-(sp) bra.s set_rez set_low_rez: clr.w -(sp) set_rez: move.l a0,-(sp) move.l a0,-(sp) move.w #5,-(sp) trap #14 add.l #12,sp rts show_pic: lea pic+34,a0 move.l #BASE,a1 move.w #32000/4-1,d0 d_pic: move.l (a0)+,(a1)+ dbf d0,d_pic rts hide_cursor: pea di_mouse move.w #$2-1,-(sp) move.w #$19,-(sp) trap #14 addq.l #8,sp rts show_cursor: pea ei_mouse move.w #$2-1,-(sp) move.w #$19,-(sp) trap #14 addq.l #8,sp rts tuneisr: movem.l d0-d7/a0-a6,-(sp) addq.w #1,c1 tst.w c2 beq.s skip bmi spook move.w d0,-(sp) move.w c2,d0 subq.w #1,d0 jsr TUNE move.w (sp)+,d0 bra top spook: jsr TUNE+$1c top: clr.w c2 skip: tst.w c3 beq.s nomore move.w d0,-(sp) move.w c3,d0 jsr TUNE+$2a move.w (sp)+,d0 clr.w c3 nomore: jsr TUNE+$e movem.l (sp)+,d0-d7/a0-a6 rts c1: dc.w 0 c2: dc.w 0 c3: dc.b 0 ;laser if <>0 c4: dc.b 0 ;other sounds! ;C4: ; 1=laser b=fire2 ; 2=a hit low c=hit ; 3=a hit high d=collect item ; 4=warble e=thug ; 5=whoop 1 f=blurble ; 6=whoop 2 10=hit ; 7=laser 2 11=hit ; 8=blurp!! 12=fart ; 9=white noise 13=hit ; a=fire1 14+=whishy washy TUNE: Incbin "WAS51.IMG" pic incbin "pov10.pi1" ******** * Data * ******** scroll_number: dc.w 16 scroll_number2: dc.w 16 old_pal: ds.b 32 line_ptr: dc.l scroll_line line_ptr2: dc.l scroll_line2 buffer: dcb.b 0,BUFFER_SIZE buffer2: dcb.b 0,BUFFER_SIZE scroll_line: dc.b " WELCOME TO P.O.V. DISC 10. " dc.b "P.O.V. ARE . . . . " dc.b "MAC SYS DATA BORIS DR.SYNE" DC.B " AND ALY " dc.b "HELLO TO THE FOLLOWING ... " dc.b "AUTOMATION, " dc.b "ALAN.R, " dc.b "TCB, " DC.B "BASHER, " DC.B "THE LOST BOYS " DC.B "AND " dc.b "FRANCIS (AN AMIGA OWNER - WELL HE IS SOUTH AFRICAN) " dc.b "THE TUNE WAS STOLEN FROM " DC.B "BEYOND THE ICE PALACE BY MAC SYS DATA. " dc.b " ALL CODING BY MAC SYS DATA, " dc.b "CENTRE PIC BY ALY, ALL OTHER ARTWORK BY MAC SYS DATA. " dc.b "INFO: THE TIME IS NOW 11:36 ON 31/12/89 AND IN A SHORT TIME " DC.B "IT'LL BE 1990. I'VE BEEN TO THE LOCAL PUB BUT IT'S SO PACKED " DC.B "YOU HAVE TO WAIT 15 MINUTES TO GET SERVED, SO I'VE COME BACK " DC.B "HOME WHERE IT'S QUIET. I'VE GOT RADIO 1 ON, IT'S BLASTING " DC.B "ANNIE NIGHTINGALE OUT - OH YEAH IT'S R.E.M. TRA-LA-LA...... " DC.B " I THINK I'LL OPEN A BOTTLE OF 'SOL' OR MY 'EKA EDELBOCK' 'COS " DC.B "I'M P*SSED OFF. WELL WHAT'LL HAPPEN " DC.B "IN 1990? ANSWER: BUGGER ALL. " DC.B " INFO TIME >>->> " DC.B "I WENT SHOPPING TO BLACKPOOL ON SATURDAY 30/12/89 TO " DC.B "GET SOME JOKES AND THINGS FOR TONIGHT, AS I WAS LEAVING THE SHOP, A BLOKE WALKED " DC.B "IN. MY MATE (HI ANDY) STARTED STARING AT THE BLOKE SO I THOUGHT " DC.B "'WHO'S HE LOOKING AT?' RIGHT " DC.B "AT THIS POINT I'LL GIVE YOU A CLUE TO WHO THIS PERSON WAS..... " DC.B "HE STARRED IN THE YOUNG ONES, IN THE COMIC STRIP, IN FILTHY-RICH AND CAT " DC.B "FLAP AND IN THE BAND 'BAD NEWS'. NO, IT'S NOW RICK MAYELL.... " DC.B "WELL? YES, THAT'S " DC.B "HIM, IT WAS ADE EDMONSON!!!!!! " DC.B " MY CLAIM TO FAME IS THAT I MET ADE EDMONSON IN BLACKPOOL. IF YOU'RE " DC.B "READING THIS ADE, I WAS THE GUY WHO HAD THE MOLTESE CROSS HELMET AND I MUST " DC.B "SAY THAT I THINK YOU'RE THE BEST ACTOR IN THE WORLD. " DC.B "TIME CHECK: IT'S 11:50 PM. HEY U2 HAVE JUST COME ON THE RADIO. " DC.B " I THINK I'LL HAVE A PAUSE NOW UNTIL MIDNIGHT. " dc.b " TIME CHECK: 00:00:00 HELLLOOOOOOO " DC.B "AND WELCOME TO 1/1/90. AS IT'S NOW A NEW YEAR I WOULD LIKE TO WISH ALL THE PEOPLE " DC.B "I KNOW A HAPPY NEW YEAR AND TO ALL COMPUTER HACKERS, CRACKERS AND PACKERS " DC.B "I WOULD LIKE TO SAY - HAVE A GREAT YEAR IN 1990. " DC.B " THAT'S IT, GOT TO GO, BYE....." dc.b "..............................> " DC.B " " dc.b $ff,$ff,$ff,$ff even scroll_line2: dc.b " THIS IS THE MEGA-BASE SCROLLER! IF YOU CAN'T READ THIS VERY WELL THEN BUY A MONITOR!!! " dc.b " A MESSAGE TO STEW OF 'STEW DEMO COMPILATION DISC 1' - TRY LEARNING MACHINE CODE AND WRITE A " dc.b "DECENT INTRO INSTEAD OF USING GFA CRAP, ALSO TRY SINGLE PARTING STUFF USING YOUR BRAIN INSTEAD OF USING PAMPUK! (IT MAY WORK " dc.b "BUT IT ALSO NAFFS UP SOME OF THE DEMOS). IF YOU WANT A HINT ON PACKING, TRY LOOKING AT ADDRESS $84. - SORRY TO ALL THE OTHER " DC.B "PACKING PEOPLE BUT I'M SICK OF HALF BIT PEOPLE CLAIMING THE WORLD WHEN ALL THEY ARE FIT FOR IS WASHING OUT PUBLIC TOILETS WITH " DC.B "A TOOTH-BRUSH. OH YEAH, IF YOU'RE READING THIS BORIS THEN GET A MOVE ON WITH DISC 7!" dc.b $ff,$ff,$ff,$ff font: incbin "pov10fnt.dat" even di_mouse: dc.b $12,$1a even ei_mouse: dc.b $14,8 even filenames: dc.b "MODEL.RUN",0,0,0,0,0 dc.b "JOE90.",0,0,0,0,0,0,0,0 dc.b "power.",0,0,0,0,0,0,0,0 ;auto folder run prog. dc.b "info.pov",0,0,0,0,0,0