********************************** * * Menu coded by MAC SYS DATA of P.O.V................. * * ********************************** OPT o+,w- bsr set_super wait_for_drive move.w $ffff8604.w,d0 btst #7,d0 bne.s wait_for_drive move.b #$12,$fffffc02.w bsr save_pal bsr get_base bsr calc_screen movem.l spec_values,d0-d7 movem.l d0-d7,$ffff8240.w move.l screen_base,a0 ;screen_base bsr set_low_rez bsr shift_pov bsr clear_below_screen move.l screen_base,a0 add.l #160*13,a0 move.l a0,spec_pos ;set up bobs move.l present_table,a1 move.l a1,bob_v_pos add.w #32,a1 ;this alters the space between bobs move.l a1,bob_o_pos add.w #32,a1 ;this alters the space between bobs move.l a1,bob_p_pos move.b $484.w,old484 clr.b $484.w ;************************************************************************ ;* ATOMINO TUNE * ;* ------------ * ;* Stolen by: MAC SYS DATA of P.O.V. * ;* * ;************************************************************************ moveq #1,d0 ;only one tune jsr tune bsr set_palette bsr save_isr bsr vsync bsr show_pic bsr vsync bsr flush main_loop: bsr vsync ; move.w #$070,$ffff8240.w bsr bobs ; move.w #$770,$ffff8240.w bsr scroll ; move.w #$700,$ffff8240.w bsr clear_spec ; move.w #$007,$ffff8240.w bsr calc_spec ; move.w pic+2,$ffff8240.w move.b key,d0 beq.s main_loop cmp.b #01,d0 ;escape beq exit cmp.b #$b,d0 ;0 key beq zero cmp.b #$70,d0 beq zero no_switch cmp.b #$53,d0 beq.s do_reset lea key_codes,a0 .loop cmp.b #$ff,(a0) beq.s main_loop cmp.b (a0)+,d0 beq.s load move.b (a0)+,d1 bra.s .loop load move.b (a0),-(sp) bsr flush bsr reset_isr bp move.l old_base,a0 ;screen_base bsr set_org_rez lea $ffff8240.w,a1 clr.l (a1)+ clr.l (a1)+ clr.l (a1)+ clr.l (a1)+ clr.l (a1)+ clr.l (a1)+ clr.l (a1)+ clr.l (a1)+ move.b (sp)+,d0 ;key is in D0.L and.l #$ff,d0 lea filenames,a6 mulu #16,d0 add.w d0,a6 lea $200.w,a0 move.l (a6)+,(a0)+ move.l (a6)+,(a0)+ move.l (a6)+,(a0)+ move.l (a6)+,(a0) tst.w hertz_switch beq.s hz50 eor.b #2,$ffff820a.w hz50 bsr user_mode clr.w -(sp) trap #1 do_reset move.l 4.w,a0 jmp (a0) zero tst.w zero_counter bne no_switch eor.w #$ffff,hertz_switch move.w #10,zero_counter move.w hertz_switch,d0 bne.s .pal1 movem.l font_pal,d0-d7 movem.l d0-d7,present_pal bra main_loop .pal1 movem.l font_pal+32,d0-d7 movem.l d0-d7,present_pal bra main_loop exit bsr reset_isr bsr flush move.l old_base,a0 bsr set_org_rez bsr restore_pal move.b #8,$fffffc02.w move.b old484,$484.w bsr user_mode clr.w -(sp) trap #1 *************** * Subroutines * *************** bobs move.w last_p_pos,d0 bsr return_bob move.w last_o_pos,d0 bsr return_bob move.w last_v_pos,d0 bsr return_bob move.l #bob_v_pos,a6 lea logo+(16*16)+(16*16),a1 bsr.s do_bobs move.l #bob_o_pos,a6 lea logo+(16*16),a1 bsr.s do_bobs move.l #bob_p_pos,a6 lea logo,a1 bsr.s do_bobs rts do_bobs move.l (a6),a0 cmp.l end_of_table,a0 bne.s .no_reset move.l present_table,a0 .no_reset moveq #0,d0 move.l d0,d1 move.l d1,d2 move.w (a0)+,d0 ;x move.w (a0)+,d1 ;y move.w d0,d2 move.l a0,(a6) lsr.w #1,d0 and.w #$1f8,d0 and.w #15,d2 mulu #16*6*16,d2 add.w d1,d0 move.w d0,4(a6) move.l screen_base,a0 add.w d0,a0 add.w #160*29,a0 add.w d2,a1 lea 16*3*16(a1),a2 REPT 16 move.l (a0),d0 move.l (a1)+,d1 move.l (a2)+,d2 and.l d0,d2 or.l d1,d2 move.l d2,(a0) move.l 4(a0),d0 move.l (a1)+,d1 move.l (a2)+,d2 and.l d0,d2 or.l d1,d2 move.l d2,4(a0) move.l 8(a0),d0 move.l (a1)+,d1 move.l (a2)+,d2 and.l d0,d2 or.l d1,d2 move.l d2,8(a0) move.l 12(a0),d0 move.l (a1)+,d1 move.l (a2)+,d2 and.l d0,d2 or.l d1,d2 move.l d2,12(a0) add.w #160,a0 ENDR rts return_bob move.l screen_base,a1 add.w d0,a1 add.w #160*29,a1 lea pic+34,a0 add.w d0,a0 REPT 16 move.l (a0),(a1) move.l 4(a0),4(a1) move.l 8(a0),8(a1) move.l 12(a0),12(a1) lea 160(a0),a0 lea 160(a1),a1 ENDR rts shift_pov move.l screen_base,a1 add.w #160*29,a1 lea pov,a0 move.w #6*16-1,d0 .loop move.l (a0)+,(a1) move.l (a0)+,4(a1) move.l (a0)+,8(a1) move.l (a0)+,12(a1) move.l (a0)+,16(a1) move.l (a0)+,20(a1) lea 160(a1),a1 dbf d0,.loop move.l screen_base,a6 add.w #160*29,a6 lea logo,a1 move.w #16-1,d7 shift move.l a6,a0 addq.w #8,a0 move.w #16*6-1,d3 .loop move.l (a0),(a1)+ move.l 4(a0),(a1)+ move.l 8(a0),(a1)+ move.l 12(a0),(a1)+ add.w #160,a0 dbf d3,.loop move.l a6,a0 move.w #16*6-1,d3 .loop2 roxr.w 6(a0) roxr.w 14(a0) roxr.w 22(a0) add.w #160,a0 sub.w d4,d4 dbf d3,.loop2 sub.w d4,d4 move.l a6,a0 move.w #16*6-1,d3 .loop3 roxr.w 4(a0) roxr.w 12(a0) roxr.w 20(a0) add.w #160,a0 sub.w d4,d4 dbf d3,.loop3 sub.w d4,d4 move.l a6,a0 move.w #16*6-1,d3 .loop4 roxr.w 2(a0) roxr.w 10(a0) roxr.w 18(a0) add.w #160,a0 sub.w d4,d4 dbf d3,.loop4 sub.w d4,d4 move.l a6,a0 move.w #16*6-1,d3 .loop5 roxr.w (a0) roxr.w 8(a0) roxr.w 16(a0) add.w #160,a0 sub.w d4,d4 dbf d3,.loop5 dbf d7,shift rts ****************************** * * * Spectrum Analyser routines * * * ****************************** MAX_BARS equ 80 AFINE equ 0 ACOURSE equ 1 BFINE equ 2 BCOURSE equ 3 CFINE equ 4 CCOURSE equ 5 AAMP equ 8 BAMP equ 9 CAMP equ 10 clear_spec move.l screen_base,a1 lea 160(a1),a1 moveq #0,d0 REPT (20*26) move.w d0,(a1) addq.w #8,a1 ENDR rts calc_spec lea spec_values,a0 moveq #(MAX_BARS-1),d0 .cnt_down tst.w (a0)+ beq.s .next subq.w #1,-2(a0) .next dbf d0,.cnt_down lea $ffff8800.w,a1 lea spec_values,a2 lea spec_data,a3 moveq #12,d2 move.b #AAMP,(a1) move.b (a1),d1 and.b #15,d1 beq.s bchan moveq #0,d0 move.b #ACOURSE,(a1) move.b (a1),d0 lsl.w #8,d0 move.b #AFINE,(a1) move.b (a1),d0 tst.w d0 beq.s bchan add.w d0,d0 move.w (a3,d0),d0 bmi.s bchan add.w d0,d0 move.w d2,(a2,d0) ****************** bchan move.b #BAMP,(a1) move.b (a1),d1 and.b #15,d1 beq.s cchan moveq #0,d0 move.b #BCOURSE,(a1) move.b (a1),d0 lsl.w #8,d0 move.b #BFINE,(a1) move.b (a1),d0 tst.w d0 beq.s cchan add.w d0,d0 move.w (a3,d0),d0 bmi.s cchan add.w d0,d0 move.w d2,(a2,d0) ****************** cchan move.b #CAMP,(a1) move.b (a1),d1 and.b #15,d1 beq.s ps moveq #0,d0 move.b #CCOURSE,(a1) move.b (a1),d0 lsl.w #8,d0 move.b #CFINE,(a1) move.b (a1),d0 tst.w d0 beq.s ps add.w d0,d0 move.w (a3,d0),d0 bmi.s ps add.w d0,d0 move.w d2,(a2,d0) ******************** print speccy ******************* ps move.l screen_base,a0 add.l #(13*160),a0 lea spec_values,a2 moveq #(80/4)-1,d1 .loop move.w (a2)+,d0 beq.s .nib2 move.l a0,a1 lea 160(a0),a3 moveq #%11100000,d2 .loop1 move.b d2,(a1) move.b d2,(a3) lea -160(a1),a1 lea 160(a3),a3 dbf d0,.loop1 .nib2 move.w (a2)+,d0 beq.s .nib3 move.l a0,a1 lea 160(a0),a3 moveq #%00001110,d2 .loop2 or.b d2,(a1) or.b d2,(a3) lea -160(a1),a1 lea 160(a3),a3 dbf d0,.loop2 .nib3 move.w (a2)+,d0 beq.s .nib4 lea 1(a0),a1 lea 161(a0),a3 moveq #%11100000,d2 .loop3 move.b d2,(a1) move.b d2,(a3) lea -160(a1),a1 lea 160(a3),a3 dbf d0,.loop3 .nib4 move.w (a2)+,d0 beq.s .nonib lea 1(a0),a1 lea 161(a0),a3 moveq #%00001110,d2 .loop4 or.b d2,(a1) or.b d2,(a3) lea -160(a1),a1 lea 160(a3),a3 dbf d0,.loop4 .nonib addq.w #8,a0 dbf d1,.loop rts ************************************************** scroll: move.l screen_base,a1 add.l #160*232,a1 lea font_offsets,a2 lea font,a3 move.l scroll_pointer,a4 move.l a4,a5 moveq #0,d4 moveq #40,d5 move.w char_offset,d6 next_char move.b (a5),d7 ;get a letter sub.b #32,d7 ;rid of ASCII ext.w d7 moveq #0,d0 move.l a3,a0 move.b (a2,d7),d0 mulu #31*4*4,d0 ;30 * 4 (4 planes) add.w d0,a0 move.w d6,d0 mulu #31*4,d0 ;character depth * 4 (30*4) add.w d0,a0 .column OFF set 0 REPT 31 move.l (a0)+,d0 movep.l d0,OFF(a1) OFF set OFF+160 ENDR subq.w #1,d5 beq.s .finish addq.w #1,a1 ;lower byte of word tst.w d4 beq.s .skip ;if D4=0 then do next word addq.w #6,a1 ;else goto next word on screen .skip not.w d4 addq.w #1,d6 ;character offset and.w #3,d6 bne .column addq.w #1,a5 ;scroll pointer tst.b (a5) ;is end of text? bpl next_char ;NO! lea scroll_text,a5 ;do reset scrolline bra next_char .finish addq.w #1,char_offset and.w #3,char_offset bne.s .end addq.w #1,a4 tst.b (a4) bpl.s .end lea scroll_text,a4 .end move.l a4,scroll_pointer rts vsync: move.w #$ffff,vsync_flag vs: tst.w vsync_flag bne.s vs 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.w,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.w,a1 movem.l (a0),d0-d7 movem.l d0-d7,(a1) rts get_base move.w #3,-(sp) trap #14 addq.l #2,sp move.l d0,old_base move.w #4,-(sp) trap #14 addq.l #2,sp move.w d0,original_rez rts calc_screen: lea screen,a0 move.l a0,d0 clr.b d0 move.l d0,screen_base rts set_org_rez move.w original_rez,-(sp) bra.s set_rez 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: move.l screen_base,a1 add.w #160*29,a1 lea pic+34,a0 move.w #32000/4-1,d0 .loop move.l (a0)+,(a1)+ dbf d0,.loop rts v_sync: movem.l d0-d3/a0-a3,-(sp) move.w #$25,-(sp) trap #14 addq.l #2,sp movem.l (sp)+,d0-d3/a0-a3 rts clear_below_screen: move.l screen_base,a0 add.w #32000,a0 move.w #30,d0 clr1: move.w #8*40-1,d1 clr2: clr.l (a0)+ dbf d1,clr2 dbf d0,clr1 rts flush btst.b #0,$fffffc00.w ;flush keyboard beq.s flush2 move.b $fffffc02.w,d0 bra.s flush flush2 rts ********* * ISRs * ********* save_isr move.w #$2700,sr move.l $120.w,old120 move.l $118.w,old118 move.l $70.w,old70 move.b $fffffa11.w,save1 move.b $fffffa21.w,save2 move.b $fffffa07.w,save3 move.b $fffffa09.w,save4 move.b $fffffa0f.w,save5 move.b $fffffa13.w,save6 move.b $fffffa1b.w,save7 move.b $fffffa1d.w,save8 clr.b $fffffa1d.w andi.b #$df,$fffffa09.w andi.b #$fe,$fffffa07.w move.l #new120,$120.w move.l #new70,$70.w move.l #new118,$118.w ori.b #1,$fffffa07.w ori.b #1,$fffffa13.w move.b #8,$fffffa1b.w move.w #$2300,sr rts reset_isr move.w #$2700,sr move.l old120,$120.w move.l old118,$118.w move.l old70,$70.w move.b save3,$fffffa07.w move.b save6,$fffffa13.w move.b save4,$fffffa09.w move.b save7,$fffffa1b.w move.b save8,$fffffa1d.w move.b save2,$fffffa21.w move.b save1,$fffffa11.w move.b save5,$fffffa0f.w moveq.l #0,d0 bsr tune lea $ffff8800.w,a0 move.b #7,(a0) move.b (a0),d1 ori.b #$3f,d1 moveq.w #$c,d0 .loop move.b d0,(a0) clr.b 2(a0) dbf d0,.loop move.b #7,(a0) move.b d1,2(a0) move.w #$2300,sr rts new120 clr.b $fffffa1b.w ;lower border routine move.l d0,-(sp) moveq #$26,d0 .aaa dbf d0,.aaa move.b #0,$ffff820a.w moveq #1,d0 .bbb dbf d0,.bbb move.b #2,$ffff820a.w move.w present_pal,$ffff8240.w move.w present_pal+2,$ffff8242.w move.w present_pal+4,$ffff8244.w move.w present_pal+6,$ffff8246.w move.w present_pal+8,$ffff8248.w move.w present_pal+10,$ffff824a.w move.w present_pal+12,$ffff824c.w move.w present_pal+14,$ffff824e.w move.w present_pal+16,$ffff8250.w move.w present_pal+18,$ffff8252.w move.w present_pal+20,$ffff8254.w move.w present_pal+22,$ffff8256.w move.w present_pal+24,$ffff8258.w move.w present_pal+26,$ffff825a.w move.w present_pal+28,$ffff825c.w move.w present_pal+30,$ffff825e.w bclr #0,$fffffa0f.w clr.b $fffffa1b.w move.l (sp)+,d0 rte new70 move.w #$2700,sr movem.l d0-d7/a0,-(sp) movem.l pic+2,d0-d7 movem.l d0-d7,$ffff8240.w movem.l (sp)+,d0-d7 move.w d0,-(sp) move.w #$57e-2,d0 .aaa dbf d0,.aaa clr.b $ffff820a.w moveq #1,d0 .bbb dbf d0,.bbb move.w #27-1,d0 lea colours,a0 move.b #2,$ffff820a.w clr.b $fffffa1b.w move.b #$e4,$fffffa21.w move.b #8,$fffffa1b.w .loop REPT 121 NOP ENDR move.w (a0)+,$ffff8242.w dbf d0,.loop move.w (sp)+,d0 move.l (sp)+,a0 move.w pic+4,$ffff8242.w clr.w vsync_flag movem.l d0-d7/a0-a6,-(sp) jsr tune+8 movem.l (sp)+,d0-d7/a0-a6 tst.w zero_counter bne.s dec rte dec subq.w #1,zero_counter rte new118 move.w #$2500,sr move.b $fffffc02.w,key bclr #6,$fffffa11.w rte ******** * Data * ******** SECTION DATA screen_base dc.l 0 original_rez dc.w 0 old484 dc.w 0 zero_counter dc.w 0 hertz_switch dc.w 0 stack_save dc.l 0 vsync_flag dc.w 0 spec_pos dc.l 0 old70 dc.l 0 old120 dc.l 0 old118 dc.l 0 key dc.w 0 save1 dc.b 0 save2 dc.b 0 save3 dc.b 0 save4 dc.b 0 save5 dc.b 0 save6 dc.b 0 save7 dc.b 0 save8 dc.b 0 even old_base dc.l 0 char_offset dc.w 0 scroll_pointer dc.l init_scroll_text+7 init_scroll_text dc.b " " scroll_text dc.b "MAC SYS DATA PRESENTS - " dc.b "PERSISTENCE OF VISION 101. RELEASE DATE 10TH DECEMBER 1991. " dc.b "CODING AND MUSIC RIPPING BY MAC SYS DATA WITH GRAFIX BY OZ. " dc.b " THE MUSIC IS FROM ATOMINO AND WAS WRITTEN BY THAT MAD HATTER MAX. " dc.b " YO DUDES, YES THIS IS DISC 101 - WE BROKE THE CENTURY WITH STYLE. " DC.B " WE THINK WE ARE THE 5TH CREW TO REACH 100, THE DATE SHOULD PROVE IT. " DC.B " HEY SOURCE - WE BEAT YOU TO REACH 100!!! YEAH! JUST " DC.B "LOOK AT THIS DISC....... 7 DEMOS AND THE COPIER. WHEN P.O.V. " DC.B "DO A COMPILATION THEY DO IT PROPERLY, WE DO NOT PUT MODS OR ANY OTHER CRAP " DC.B "ON THE DISC TO FILL IT UP UNLIKE OTHER CREWS I KNOW. I WAS LOOKING " DC.B "AT ANOTHER CREWS DISCS THE OTHER DAY AND I DECIDED TO RUN A COUPLE " DC.B "OF DEMOS. THE FIRST WAS A SAMPLE DEMO, IT LOADED AND STRAIGHT AWAY " DC.B "I COULD TELL IT WASN'T RIGHT. THE SAMPLE WAS VERY CRACKLY, I QUICKLY " DC.B "PUT THE P.O.V. PACKED DEMO ON AND IT WAS PERFECT. THIS IS A TRICK " DC.B "THAT NEARLY EVERY OTHER DEMO PACKING CREW USES, THAT IS TO ALTER " DC.B "THE SAMPLE SO IT PACKS SMALLER BUT THE RESULT IS A POORER QUALITY " DC.B "SOUND. WHEN WE AT P.O.V. PACK A SAMPLE DEMO IT IS PLAYED WITH " DC.B "THE SAME QUALITY AS IT WAS ORIGINALLY WRITTEN. BACK TO THE " DC.B "OPPOSITIONS DISCS, I LOADED A FEW OTHER BITS AND BOBS AND THEY " DC.B "WERE ALL PACKED WITH THE AUTOMATION CHUNKY PACKER. THE LAMERS " DC.B "HAD NOT EVEN BOTHERED TO DETECT HOW MANY BYTES WERE LOADING TO MAKE " DC.B "A CUSTOM PACK OF THE DEMO. THEY'D SIMPLY PACKED THE DATA " DC.B "IN ONE BIG BLOCK AND HAD USED THE CHUNKY OPTION TO SORT OUT THE LOADING. " DC.B "NOW THE CHUNKY PACKER " DC.B "OFTEN CREATED BIGGER BLOCKS THAN A SINGLE PASS PACK SO THE FILE WAS " DC.B "LARGER THAN IT SHOULD HAVE BEEN --- LAMERS!! " DC.B " I MUST POINT OUT AT THIS POINT THAT BOTH P.O.V. AND RIPPED OFF " DC.B "ACTUALLY LOOK AT WHAT IS LOADING SO WE CAN MAKE THE MOST " DC.B "EFFICIENT PACK OF A DEMO. WE ONLY USE CHUNKY WHEN PACKING " DC.B "SEQUENCE FILES FROM CYBERPAINT AS THESE LOAD LOTS OF BLOCKS " DC.B "OF SIMILAR SIZES AND ARE A PAIN TO PACK MANUALLY. " DC.B " RIGHT SOD THIS, HERE ARE THE GREETINMGS NORTHSIDE, " DC.B "NOW 5, THUNDERFORCE, THE SOURCE, RIPPED OFF, CAPTAIN HACKS, " DC.B "GEORGE THE BART, DEL, NINJA OF THE ENTERPRISE, DR.SYNE, " DC.B "SLAYTANIC CULTS, SEWER SOFTWARE, BBC, PIXEL TWINS, " DC.B "D-BUG AND KGB. " dc.b "ON FUTURE DISCS I WILL TRY TO GET RID OF A LOAD OF OLD DEMOS " DC.B "THAT I HAVE SITTING AROUND. THE DEMOS ARE MAINLY SAMPLES BUT " DC.B "THERE ARE SEVERAL PICTURE SHOWS AND I SHOULD BE DOING A FEW " DC.B "MODULE DISCS. " dc.b "OH WELL, IT'S HERE ----- THE WRAP BYE. " DC.B " " dc.b " " dc.b $ff even ; colours for the spectrum analyzer rasters..... colours dc.w $001,$002,$003,$004,$005,$006,$007,$017 dc.w $027,$036,$046,$057,$067 dc.w $310,$420 dc.w $530,$640,$750,$760,$670,$570,$460,$350 dc.w $240,$130,$020 present_pal dc.w $000,$210,$320,$430,$540,$650,$760,$770 dc.w $774,$775,$070,$006,$203,$314,$435,$777 ; lower border palette font_pal dc.w $000,$210,$320,$430,$540,$650,$760,$770 dc.w $774,$775,$070,$006,$203,$314,$435,$777 dc.w $000,$002,$003,$004,$005,$006,$007,$017 dc.w $027,$037,$070,$006,$440,$550,$660,$777 font dcb.b 31*4*4,0 incbin "4plane.fnt" font_offsets ; ! " # $ % & ' ( ) * + , - . / dc.b 00,34,36,00,00,00,00,35,28,29,00,00,31,32,33,00 ; 0 1 2 3 4 5 6 7 8 9 : ; < = > ? @ dc.b 37,38,39,40,41,42,43,44,45,46,27,25,00,00,00,30,00 ; A B C D E F G H I J K L M N O P Q dc.b 01,02,03,04,05,06,07,08,09,10,11,12,13,14,15,16,17 ; R S T U V W X Y Z [ \ ] ^ _ ` a b c dc.b 18,19,20,21,22,23,24,25,26,40,00,00,00,00,00,00,00,00 ; d e f g h i j k l m n o p q r s t u dc.b 00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00 even tune incbin atom_1.mus even pic incbin fender.PI1 even bob_p_pos dc.l 0 last_p_pos dc.w 0 bob_o_pos dc.l 0 last_o_pos dc.w 0 bob_v_pos dc.l 0 last_v_pos dc.w 0 end_of_table dc.l endbobs present_table dc.l bob1 bob1 incbin bob1.dat incbin bob2.dat incbin bob3.dat incbin bob4.dat incbin bob5.dat incbin bob6.dat incbin bob7.dat endbobs even pov incbin bob.dat even key_codes dc.b 2,0 ;key 1 dc.b 3,1 dc.b 4,2 dc.b 5,3 ;key 4 dc.b 6,4 ;key 5 dc.b 7,5 ;key 6 dc.b 8,6 ;key 7 dc.b 9,7 ;key 8 dc.b $6d,0 ;keypad 1 dc.b $6e,1 dc.b $6f,2 dc.b $6a,3 ;keypad 4 dc.b $6b,4 ;keypad 5 dc.b $6c,5 ;keypad 6 dc.b $67,6 ;keypad 7 dc.b $68,7 ;keypad 8 dc.b $ff even ; filenames are 16 bytes long (an old menu!!!) filenames dc.b "SCC2.PRG",0,0,0,0,0,0,0,0 dc.b "SCC3.PRG",0,0,0,0,0,0,0,0 dc.b "SCC4.PRG",0,0,0,0,0,0,0,0 dc.b "SCC5.PRG",0,0,0,0,0,0,0,0 dc.b "ABC4",0,0,0,0,0,0,0,0,0,0,0,0 dc.b "CONVENTN.PRG",0,0,0,0 dc.b "SYNC.PRG",0,0,0,0,0,0,0,0 dc.b "COPIER.POV",0 even spec_data incbin SPECTRUM.DAT spec_values dcb.w 80,0 SECTION BSS old_pal ds.b 32 logo REPT 16 ds.b 16*8*6 ds.b 16*8*6 ENDR ds.b 256 screen ds.b 48000