home *** CD-ROM | disk | FTP | other *** search
/ Fujiology Archive / fujiology_archive_v1_0.iso / S / SHAPESFT / MSXMENU2.ZIP / MSXMENU2.MSA / CHAMPS / SPACE9.S < prev    next >
Text File  |  1985-11-20  |  19KB  |  752 lines

  1.     bra    start
  2. loaddeg 
  3.     move.w     #$2,-(sp)    Open file 'filename'
  4.     pea     filename
  5.     move.w     #$3d,-(sp)
  6.     trap     #1
  7.     addq.l     #8,sp
  8.     tst.l    d0
  9.     bmi     error
  10.     move     d0,handle
  11.     
  12.     move.l     #34,noread    Read first 34 bytes = palette
  13.     move.l    #degcols,buffer
  14.     jsr    readdat
  15.  
  16.     move.l     #colours,-(sp)  Set palette(+2 cause 1st 2 bytes=screen res)
  17.     move.w    #6,-(sp)
  18.     trap    #14
  19.     addq.l    #6,sp    
  20.  
  21.     clr.l    d5
  22.     clr.l    d6
  23.     move.w    #0,count    Clear counters
  24.     move.w    #0,plane
  25.     move.w    #0,linno
  26.  
  27.     move.l    #data,buffer    Read correct no of bytes for file
  28.     move.l    #50000,noread
  29.     jsr     readdat        Read the data
  30.  
  31.     move.w     handle,-(sp)    Close file
  32.     move.w    #$3E,-(sp)
  33.     trap    #1
  34.     addq.l    #4,sp
  35.  
  36. * For this decompacting bit, a5 holds the screen location throughout,
  37. * a6 holds the location in the data,d6 holds the control byte,
  38. * and d4 holds the data itself.
  39.  
  40.     move.l     #data,a6    A6 points to data
  41. linloop    bsr     screenpoint    Find initial screen mem loc->a5
  42.     move.b    (a6),d6        Move control byte into d6
  43.     cmp.b    #128,d6
  44.     beq    add1        Ignore it if control=128
  45.     bmi    literal        Branch if control<128
  46.     bgt    copy        Branch if control>128
  47.  
  48. add1    addq.b    #1,d6        Add 1 if =128 and continue.
  49.  
  50. return    cmpi.w    #160,count    If Count>160,plane is finished
  51.     blt    notincplane
  52.     move.w    #0,count    Clear count
  53.     addq.w    #2,plane    Move to next plane
  54. notincplane
  55.     cmpi.w    #6,plane    If plane>6,whole line is finished
  56.     ble    pastplane
  57.     move.w    #0,count    Clear count
  58.     move.w    #0,plane    Clear plane
  59.     addq.w    #1,linno    Add 1 to line number
  60. pastplane
  61.     cmp    #200,linno    If line>200, picture is finished
  62.     blt    linloop        If it's not, carry on
  63.     bra     finished
  64.  
  65. *Literal copies the next (d6+1) bytes as they come in the file
  66.  
  67. literal    addq.b    #1,d6    You have to bloody well add 1 to control byte!!!
  68.     move.l    #0,d4    Clear all of d4
  69. litloop    jsr    findscreen    Find current screen address->a5
  70.     move.b    1(a6),d4    Move data into d4(+1 cause (a6) contains control still)
  71.     move.b    d4,(a5)        Move data onto screen
  72.     jsr     inccnt        Increment Count
  73.     addq.l    #1,a6        Add 1 to data pointer
  74.     cmp    #1,d6        If you've reached 1 in loop, finish early
  75.     dbeq     d6,litloop    Do this loop d6 times
  76.     addq.l    #1,a6        Add 1 to a6 for the next control byte
  77.     bra     return        Go home
  78.  
  79. *Copy copies the next byte (256-d6) times
  80.  
  81. copy    sub.w    d6,var256    }Subtract control from
  82.     move.w    var256,d6    }256
  83.     move.w    #256,var256    Put 256 back where it came from
  84.     move.b    1(a6),d4    Move data to be repeated into d4
  85. coploop    jsr    findscreen    Find current screen address->a5
  86.     move.b    d4,(a5)        Move data onto screen
  87.     jsr     inccnt        Increment Count
  88.     dbra    d6,coploop    Do it d6 times
  89.     addq.l    #2,a6        Move a6 to next Control byte
  90.     bra    return        Go home
  91.  
  92. *Findscreen works out memory location for next byte to be poked
  93.  
  94. findscreen
  95.     move.l    screen,a5    Base screen
  96.     add.w    count,a5    Add byte count
  97.     add.w    plane,a5    Add plane number
  98.     move.w    linno,d3        add (160*line number)cause 160 bytes per line
  99.     mulu.w    #160,d3
  100.     add.l    d3,a5
  101.     rts
  102.  
  103. *Increment count like 0,1,7,8,15,16,23,24 etc ad nauseum
  104.  
  105. inccnt    addq.w    #1,count
  106.     move.w    count,d0
  107.     btst    #0,d0
  108.     bne    even
  109.     addq.w    #6,count
  110. even    rts
  111.     
  112. screenpoint
  113.     move.l    screen,a5    A5 points to screen
  114.     add.w    plane,a5    Add plane offset to a5
  115.     add.w    count,a5    Add byte offset to a5
  116.     clr.l    d6
  117.     clr.l    d4
  118.     
  119.     rts
  120.  
  121. readdat    move.l     buffer,-(sp)    Read data
  122.     move.l    noread,-(sp)
  123.     move.w    handle,-(sp)
  124.     move.w    #$3F,-(sp)
  125.     trap    #1
  126.     add.l    #12,sp
  127.     tst.l    d0
  128.     bmi error
  129.     rts
  130.  
  131. error
  132. finished
  133.     rts
  134.  
  135.  
  136. buffer        ds.l    1
  137. noread        ds.l    1
  138. registers    ds.l    16    
  139. filename     dc.b     "a:\champs\title",0  pc1
  140. filelength    ds.l    1
  141. linno        ds.w    1
  142. plane        ds.w    1
  143. count        ds.w    1
  144. var256        dc.w    256
  145.  
  146.     bra    start
  147. font_name     dc.b "a:\champs\fontish",0
  148.         even
  149.  
  150.  
  151. start    clr.l   -(sp)        supervisor mode on
  152.     move.w  #$20,-(sp)
  153.     trap    #1
  154.     move.l  d0,savereg
  155.     
  156.     move.l    $44e,a0        current physbase
  157.     sub.l    #$2000,a0    go back a bit because our 50-60 hz...
  158.     move.l    a0,physbase    ..trick would push us into rom
  159.     move.l    a0,a7        temporary stack
  160.  
  161.     move.l  #moff,-(sp)    mouse off
  162.     clr.w   -(sp)
  163.     move.w  #25,-(sp)
  164.     trap    #14
  165.     addq.l  #8,sp
  166.     dc.w    $a00a
  167.  
  168.     move.w  #4,-(sp)        get resolution        
  169.     trap    #14
  170.     addq.l  #2,sp
  171.     move.w  d0,oldrez        and save it
  172.     cmp.w    #3,d0
  173.     beq    highres
  174.     move.l  $44e,oldscr
  175.     move.l  physbase,screen
  176.  
  177.     movem.l $ffff8240.w,d0-d7    save colors...
  178.     movem.l d0-d7,oldpal        ..quickly
  179.  
  180.     move.l    #scrbuf,d0
  181.     add.l    #256,d0
  182.     and.l    #$ffff00,d0
  183.  
  184.     move.l    d0,a0
  185.     move.l    #8000,d1
  186. cls1    clr.l    (a0)+
  187.     dbra    d1,cls1
  188.  
  189.     move.w  #0,-(sp)        set low res
  190.     move.l  d0,-(sp)    phys    
  191.     move.l  screen(pc),-(sp)    log
  192.     move.w  #5,-(sp)
  193.     trap    #14
  194.     add.l   #12,sp
  195.  
  196.  
  197.     move.l    screen,a0
  198.     move.l    #10000,d0
  199. cls    clr.l    (a0)+
  200.     dbra    d0,cls
  201.  
  202.  
  203.     bsr    music
  204.     bsr    loaddeg
  205.  
  206.     move.w  #-1,-(sp)        set low res
  207.     move.l  screen(pc),-(sp)    phys    
  208.     move.l  screen(pc),-(sp)    log
  209.     move.w  #5,-(sp)
  210.     trap    #14
  211.     add.l   #12,sp
  212.     
  213.  
  214.     lea    colours,a0
  215.     lea    palette,a1    set up palette
  216.     
  217.     move.l    #16-1,d0
  218. paloop    move.w    (a0)+,(a1)+    
  219.     dbra    d0,paloop
  220.     movem.l colours,d0-d7    
  221.     movem.l d0-d7,$ffff8240.w
  222.  
  223.  
  224.     move.l    #font_name,-(A7)    open fontish c/set
  225.     move.w    #$3D,-(A7)
  226.     trap    #1
  227.     move.w    d0,handle
  228.     move.l    #font,-(A7)    load it here (end of this prog)
  229.     move.l    #1953,-(A7)    1953 bytes
  230.     move.w    handle,-(A7)
  231.     move.w    #$3f,-(a7)    read file
  232.     trap    #1
  233.     adda.l    #$c,A7    
  234.     move.w     handle,-(a7)
  235.     move.w     #$3e,-(a7)
  236.     trap     #1        close file
  237.     addq.l     #4,a7    
  238.  
  239.     move.l    #text_1,text_address
  240.     move.l    #scroll,a5    enable scroll interrupt    
  241.     bsr    enable_vbi
  242.  
  243.  
  244. hi    bsr     hblon        enable MFP interrupts
  245.  
  246. *------------------------------------------------
  247. get    
  248.     bsr    getkey
  249.     tst.b    d0
  250.     bne    quit
  251.     bra    get
  252. *-------------------------------------------------
  253. roller
  254.     move.w    pal1,d0
  255.     move.w    #66,d1
  256.     lea    pal1,a0
  257.     lea    pal1+2,a1
  258. rollcj    move.w    (a1)+,(a0)+
  259.     dbra    d1,rollcj
  260.     move.w    d0,pal1+130
  261.     rts
  262. *------------------------------------------------
  263. getkey    
  264.     move.w  #$ff,-(sp)    
  265.     move.w    #6,-(sp)
  266.     trap    #1
  267.     addq.l  #4,sp
  268.     swap    d0
  269.     rts
  270.  
  271. *------------------------------------------------
  272. quit
  273.     move.l    #scroll,a5    cut out message scroll
  274.     move.l    #0,$4de
  275.     lea    $ff8800,a0
  276.     move.b    #7,(a0)
  277.     move.b    #255,2(a0)
  278.     bsr    disable_vbi
  279.  
  280.  
  281.     bsr     hbloff        disable MFP interrupts
  282.  
  283.     movem.l oldpal,d0-d7    old colors back
  284.     movem.l d0-d7,$ffff8240.w
  285.     move.w  oldrez,-(sp)    old resolution back
  286.     move.l  oldscr,-(sp)
  287.     move.l  oldscr,-(sp)
  288.     move.w  #5,-(sp)
  289.     trap    #14
  290.     add.l   #12,sp
  291. highres
  292.     move.l  #mon,-(sp)    mouse on
  293.     clr.w   -(sp)
  294.     move.w  #25,-(sp)
  295.     trap    #14
  296.     addq.l  #8,sp
  297.     dc.w    $a009
  298.  
  299.     move.l  savereg,-(sp)    leave supervisor
  300.     move.w  #$20,-(sp)
  301.     trap    #1
  302.     addq.l  #6,sp
  303.  
  304.     clr.w   -(sp)        quit
  305.     trap    #1
  306.  
  307. oldrez    dc.w    0
  308. oldscr    dc.l    0
  309. savereg    dc.l    0
  310. screen    dc.l    0
  311. oldpal    ds.w    16
  312. mon    dc.b    8
  313. moff    dc.b    18
  314. silence    dc.b    6,0,7,255,8,0,9,0,10,0,255,0
  315.  
  316.                 even
  317.  
  318. *-------------------------------------------------------
  319.  
  320. hblon    move.l  $120,oldtb    save old timer B vector
  321.     move.l  $70,old4    save old vb vector
  322.     move.l  $70,new4b+2    now, new vb routine will jump to
  323. ;                old one afterwards
  324.     move.b  $fffffa07,old07    timer B enable
  325.     move.b  $fffffa09,old09    timer C enable
  326.     move.b  $fffffa0f,old0f    timer B in-service
  327.     move.b  $fffffa11,old11    timer C in-service
  328.     move.b  $fffffa1b,old1b    timer B control
  329.     and.b   #$df,$fffa09    disable timer C
  330.     and.b   #$fe,$fffa07    disable timer B 
  331.     move.l  #killborder,$120    new timer B vector
  332.     move.l  #new4,$70    new vb vector
  333.     or.b    #1,$fffffa07    enable timer B
  334.     or.b    #1,$fffffa13    set timer B mask
  335.     rts
  336.  
  337. hbloff    move.w  sr,-(sp)
  338.     move.w  #$2700,sr    cut out all interrupts
  339.     move.b  old07(pc),$fffffa07 restore all old vectors
  340.     move.b  old09(pc),$fffffa09
  341.     move.b  old0f(pc),$fffffa0f
  342.     move.b  old11(pc),$fffffa11
  343.     move.b  old1b(pc),$fffffa1b
  344.     move.l  oldtb,$120
  345.     move.l  old4,$70
  346.     move.w  (sp)+,sr
  347.     rts
  348.  
  349. old4    dc.l    0
  350. oldtb    dc.l    0
  351. old07    dc.b    0
  352. old09    dc.b    0
  353. old0f    dc.b    0
  354. old11    dc.b    0
  355. old1b    dc.b    0
  356.     even
  357. *------------
  358.  
  359. ; This is the new VBL handler
  360. new4    clr.b   $fffffa1b.w    disable timer B
  361.     move.b  #199,$fffffa21    first raster 199 lines away
  362.     move.b  #8,$fffffa1b    enable timer B
  363.     move.l  #killborder,$120    timer B vector
  364. new4b    jmp     $12345678    pass ontrol to OLD vb vector
  365.  
  366.  
  367. killborder
  368.     clr.b   $fffffa1b.w    timer stop
  369.     movem.l d0-d4/a0-a3,-(sp)
  370.     move.w  #$fa21,a1
  371.     move.b  #140,(a1)    changing this number had little effect
  372.     move.b  #8,$fffffa1b.w    this line is essential
  373.  
  374.     move.b  (a1),d0
  375. wait4    cmp.b   (a1),d0        wait last scanline
  376.     beq     wait4        
  377.     clr.b   $ffff820a.w    60 Hz
  378.     moveq   #3,d0
  379. nopi2    nop            wait a while
  380.     dbf     d0,nopi2
  381.     move.b  #2,$ffff820a.w    50 Hz
  382.  
  383.  
  384.     moveq.w #44-1,d2    number of colors in table
  385.     move.l  #pal1,a2     pal1: color table
  386.     move.l    #pal2,a0
  387.     move.l    #pal3,a3
  388.     move.l    $ff8240,d3
  389. loop
  390.     move.w    (a3)+,d4
  391.     bne    notblack
  392.     move.w    (a2)+,d4
  393.     bra    black
  394. notblack
  395.     add.l    #2,a2
  396. black
  397.  
  398.  
  399.     move.b  (a1),d0        get value of timer B
  400. wait    cmp.b   (a1),d0        wait one scanline !
  401.     beq     wait
  402.     move.w    d4,$ff8240
  403.     move.w  (a0)+,$ff8242     
  404.     dbra    d2,loop
  405.     move.l    d3,$ff8240
  406.  
  407.  
  408.     movem.l (sp)+,d0-d4/a0-a3
  409. bill      
  410.     bclr    #0,$fffffa0f.w    end of interrupt
  411.     rte            final exit 
  412.  
  413. *------------------------------------------
  414.  
  415. pal1    
  416.     dc.w    $000,$002,$004,$005,$006,$007,$007,$006,$005,$004,$002
  417.     dc.w    $000,$020,$040,$050,$060,$070,$070,$060,$050,$040,$020
  418.     dc.w    $000,$200,$400,$500,$600,$700,$700,$600,$500,$400,$200
  419.     dc.w    $000,$022,$044,$055,$066,$077,$077,$066,$055,$044,$022
  420.     dc.w    $000,$220,$440,$550,$660,$770,$770,$660,$550,$440,$220
  421.     dc.w    $000,$202,$404,$505,$606,$707,$707,$606,$505,$404,$202
  422.  
  423. pal2
  424.     dc.w    $000,$000,$000,$000,$000,$000,$000,$000,$000,$000,$111
  425.     dc.w    $111,$222,$222,$333,$444,$555,$666,$777,$666,$555,$444
  426.     dc.w    $333,$222,$222,$111,$111,$000,$000,$000,$000,$000,$000
  427.     dc.w    $000,$000,$000,$000,$000,$000,$000,$000,$000,$000,$000
  428.     dc.w    $000,$000,$000,$000,$000,$000,$000,$000,$000,$000,$000
  429.     dc.w    $000,$000,$000,$000,$000,$000,$000,$000,$000,$000,$000
  430.  
  431.  
  432.  
  433. pal3    
  434.     dc.w    $000,$000,$000,$000,$000,$000,$000,$000,$000,$002,$002
  435.     dc.w    $003,$003,$004,$004,$005,$005,$006,$007,$006,$005,$005
  436.     dc.w    $004,$004,$003,$003,$002,$002,$000,$000,$000,$000,$000
  437.     dc.w    $000,$000,$000,$000,$000,$000,$000,$000,$000,$000,$000
  438.     dc.w    $000,$000,$000,$000,$000,$000,$000,$000,$000,$000,$000
  439.     dc.w    $000,$000,$000,$000,$000,$000,$000,$000,$000,$000,$000
  440.  
  441. degcols    dc.w    0
  442. colours
  443.     dc.w    $000
  444.     dc.w    $700
  445.     dc.w    $600
  446.     dc.w    $400
  447.     dc.w    $200
  448.     dc.w    $007
  449.     dc.w    $006
  450.     dc.w    $004
  451.     dc.w    $002
  452.     dc.w    $740
  453.     dc.w    $766
  454.     dc.w    $557
  455.     dc.w    $446
  456.     dc.w    $335
  457.     dc.w    $224
  458.     dc.w    $777
  459.  
  460.      
  461. palette        ds.w    32
  462.         ds.w    10
  463.  
  464. physbase    dc.l    0
  465. screen_0    dc.l    0
  466. handle        dc.w    0
  467.  
  468.         ds.w    48
  469.  
  470.     even
  471.  
  472.  
  473. *----------------
  474. *    SET a Sequence of VBI routines  [ C.Maertens ] 20/9/87
  475. * Each routine has to be enabled or disabled separately
  476. * Address of routine expected in A5
  477. * first available slot is usually the second one, first being gem
  478. * move.l #myroutine,$4d2 also does the same job
  479. * see example of TWO vbi's at once in Operation Angelica
  480. enable_vbi
  481.     movem.l    a0-a5,-(sp)
  482.     move.l    $456,a0
  483. enab1    tst.l    (a0)        is is nought? (free)
  484.     beq    enab2
  485.     adda.l    #4,a0
  486.     bra    enab1
  487. enab2    move.l    a5,(a0)        slot in this routine
  488.     movem.l    (sp)+,a0-a5
  489.     rts
  490. *------------
  491. disable_vbi
  492.     movem.l    d0/a0-a5,-(sp)    a5 holds address of routine
  493.     move.l    $456,a0
  494. disab1    cmp.l    (a0),a5        contents of $456 same as routine?
  495.     beq    disab2
  496. disab3    adda.w    #4,a0        try next one
  497.     bra    disab1
  498. disab2    move.l    #0,(a0)        switch it off
  499.     movem.l    (sp)+,d0/a0-a5
  500.     rts
  501. *---------------------------
  502. * message scroller
  503. scroll
  504.     tst.w    vvar1
  505.     bne    tscr18
  506.     cmpi.w    #16,vvar2
  507.     bls.s    tscr6
  508.     clr.w    vvar2
  509. tscr3    movea.l    text_address,a0    scroll variable (holds address of text)
  510.     moveq    #0,d0
  511.     move.b    (a0)+,d0
  512.     cmpi.b    #$ff,d0        end of main message?
  513.     beq    tscr11
  514.     cmpi.b    #$fe,d0        end of reset message?
  515.     beq    tscr11a
  516. tscr4    move.l    a0,text_address
  517.     cmp.b    #$20,d0
  518.     ble    tscr12
  519. tscr5    subi.b    #$20,d0
  520.     lea    font,a1        where font is loaded
  521.     lsl.l    #5,d0
  522.     adda.l    d0,a1
  523.     lea    workspace,a2
  524.     move.l    (a1)+,(a2)+
  525.     move.l    (a1)+,(a2)+
  526.     move.l    (a1)+,(a2)+
  527.     move.l    (a1)+,(a2)+
  528.     move.l    (a1)+,(a2)+
  529.     move.l    (a1)+,(a2)+
  530.     move.l    (a1)+,(a2)+
  531.     move.l    (a1)+,(a2)+
  532. tscr6    move.w    speed,d0
  533. tscr7    
  534.     move.l    screen,d7
  535.     add.l    #212*160,d7        line of scroll number 2
  536.     move.l    d7,old_screen_pos
  537.     move.l    d7,a2  
  538.     lea    workspace,a1
  539.     moveq    #15,d1
  540. tscr8    lsl    (a1)+
  541.     roxl    $98(a2)
  542.     roxl    $90(a2)
  543.     roxl    $88(a2)
  544.     roxl    $80(a2)
  545.     roxl    $78(a2)
  546.     roxl    $70(a2)
  547.     roxl    $68(a2)
  548.     roxl    $60(a2)
  549.     roxl    $58(a2)
  550.     roxl    $50(a2)
  551.     roxl    $48(a2)
  552.     roxl    $40(a2)
  553.     roxl    $38(a2)
  554.     roxl    $30(a2)
  555.     roxl    $28(a2)
  556.     roxl    $20(a2)
  557.     roxl    $18(a2)
  558.     roxl    $10(a2)
  559.     roxl    8(a2)
  560.     roxl    (a2)
  561.     adda.l    #$a0,a2
  562.     dbf    d1,tscr8
  563.     addq.w    #1,vvar2
  564.     dbf    d0,tscr7
  565. tscr9    
  566.     bsr    roller
  567.     rts
  568. tscr11    lea    text_1,a0    at end of main message, we come..
  569.     move.b    #32,d0        ..here again
  570.     bra    tscr4
  571. tscr11a    lea    text_1,a0    at end of reset message, we come..
  572.     move.b    #32,d0        ..here
  573.     bra    tscr4
  574. tscr12    cmp.b    #1,d0        speeds 1 slow  4 fast  5 stop
  575.     beq    tscr13
  576.     cmp.b    #2,d0
  577.     beq    tscr14
  578.     cmp.b    #3,d0
  579.     beq    tscr15
  580.     cmp.b    #4,d0
  581.     beq    tscr16
  582.     cmp.b    #5,d0
  583.     beq    tscr17
  584.     bra    tscr5
  585. tscr13    move.w    #0,speed
  586.     bra    tscr3
  587. tscr14    move.w    #1,speed
  588.     bra    tscr3
  589. tscr15    move.w    #2,speed
  590.     bra    tscr3
  591. tscr16    move.w    #5,speed
  592.     bra    tscr3
  593. tscr17    move.w    #50,vvar1
  594.     move.w    #16,vvar2
  595.     bra    tscr18
  596. tscr18    subi.w    #1,vvar1
  597.     bra    tscr9
  598.  
  599. * call and execute next program
  600.  
  601. music
  602.     move.l    #environment,-(sp)    call program one
  603.     move.l    #environment,-(sp)
  604.     pea    name1        
  605.     move.w    #0,-(sp)    chain this routine
  606.     move.w    #$4b,-(sp)    execute it
  607.     trap    #1        
  608.     adda.l    #$10,sp
  609.     rts
  610.  
  611.  
  612. environment
  613.     dc.b    0,0,0,0,0,0 
  614. name1    dc.b    "a:\champs\music",0
  615.     even
  616.  
  617.  
  618. * TEXT FOR MESSAGE *
  619. * speed: 1 to 4 (slow-fast)  5 is stop    255 is end
  620. text_1    
  621.     dc.b    4,"    WELCOME..    ",5
  622.     dc.b    4,"                 "
  623.     DC.B    3,"THIS IS CJ OF THE ETERNAL CHAMPIONS HERE WITH THE "
  624.     dc.b      "INTRO FOR "
  625.     DC.B      "                 "
  626.     DC.B    4,"    SPACE DUEL   ",5
  627.     DC.B    4,"                 "
  628.     DC.B      "       AND       ",5
  629.     DC.B    4,"                 "
  630.     DC.B      "  MANDELBOT SET  ",5
  631.     DC.B    4,"                 "
  632.     DC.B    3,"THESE PROGRAMS ARE DISTRIBUTED AS PART OF THE FABULOUS BUDGIE UK "
  633.     DC.B      "LICENCEWARE SCEME, THE GROUP THAT BRINGS ACTION AND "
  634.     DC.B      "ADVENTURE TO YOUR ST FOR LITTLE MORE THAN THE PRICE "
  635.     DC.B      "OF A BLANK DISK."
  636.     DC.B      "                 "
  637.     DC.B    4,"      WOW !!     ",5
  638.     DC.B    4,"                 "
  639.     DC.B    3,"BOTH OF THESE PROGRAMS WERE WRITTEN IN FAST BASIC (WITH 68000 SUBROUTINES, "
  640.     DC.B      "WHERE NECESSARY).  I WILL TRY TO FIT THE SOURCE CODE FOR BOTH OF THEM ON TO THIS DISK "
  641.     DC.B      "AFTER I HAVE FINISHED TYPING THIS SCROLL TEXT."
  642.     DC.B      "                 "
  643.     DC.B      "THEY WERE WRITTEN BEFORE WE WROTE EXODUS (THE FABULOUS 8 DIRECTIONAL "
  644.     DC.B      "FAST ACTION 68000 ARCADE GAME BY THE ETERNAL CHAMPIONS !!!! (GO AND BUY IT NOW FROM "
  645.     DC.B      "YOUR FRIENDLY BUDGIE UK STOCKIST)).  THEY WHERE WRITTEN BY DAVE AND MYSELF WHILST WE "
  646.     DC.B      "WERE SUPPOSED TO BE GOING TO LECTURES AT NEWCASTLE UNIVERSITY,  BUT CODING WAS MUCH "
  647.     DC.B      "MORE FUN. "
  648.     DC.B      "                 "
  649.     DC.B    4,"SPACE DUEL:      ",5
  650.     DC.B    4,"                 "
  651.     DC.B    3,"SPACE DUEL IS BASED ON A GAME THAT I USED TO PLAY WHEN I WAS YOUNGER ( I THINK IT WAS CALLED "
  652.     DC.B      "SPACE WAR BUT I AM NOT 100 PERCENT SURE).  SPACE DUEL RUNS IN HIGH OR MEDIUM RESOLUTION BUT "
  653.     DC.B      "IS MUCH BETTER IN HIGH RES SO IF YOU ARE THE LUCKY OWNER OF AN SM125, SM124 OR SOME MEGA "
  654.     DC.B      "EXPENSIVE MULTI-SYNC THEN PLUG IT IN AND GET BLASTING.  SPACE DUEL IS A TWO PLAYER GAME AND "
  655.     DC.B      "REQUIRES TWO JOYSTICKS TO PLAY.  EACH PLAY SELECTS THEIR RESPECTIVE SHIPS BEFORE BEING "
  656.     DC.B      "TRANSPORTED TO THE COMBAT ARENA WHERE THEY MUST BATTLE TO THE DEATH.  THE SUNS GRAVITATIONAL "
  657.     DC.B      "FIELD MAY HELP YOU ESCAPE YOUR ENEMY BUT BE CAREFUL FOR MANY A BRAVE PIOLT HAS LOST HIS LIFE "
  658.     DC.B      "IN THE SCORCHING FLAMES."
  659.     DC.B      "                 "
  660.     DC.B    4,"MANDELBROT SET:  ",5
  661.     DC.B    4,"                 "
  662.     DC.B    3,"*** THIS PROGRAM MUST BE RUN IN LOW RES *** "
  663.     DC.B      "                 "
  664.     DC.B      "THERE IS A READ.ME FILE (MANDEL.DOC) ON THIS DISK THAT EXPLAINS ABOUT MANDELBROT SETS.  "
  665.     DC.B      "I WILL NOT ATTEMPT TO EXPLAIN THEM HERE BUT WILL GIVE YOU A SUMMARY."
  666.     DC.B      "                 "
  667.     DC.B    4,"SUMMARY:         ",5
  668.     DC.B    4,  "                 "
  669.     DC.B    3,"MANDELBROT SETS ARE VERY COMPLEX BUT ARE VERY PRETTY, ALSO IF YOU TELL YOUR MATHS TEACHER "
  670.     DC.B      "ABOUT THEM HE/SHE WILL EITHER BE VERY IMPRESSED AND PUT YOU TO THE TOP OF THE CLASS OR "
  671.     DC.B      "WILL THINK THAT YOU ARE A RIGHT CREEPY LITTLE SWAT AND GIVE YOU EXTRA HOMEWORK."
  672.     DC.B      "                 "
  673.     DC.B    4,"END OF SUMMARY   ",5
  674.     DC.B    4,"                 "
  675.     DC.B     3,"NOW FOR THE GREETINGS:"
  676.     DC.B      "                 "
  677.     DC.B    4,"HI TO:           ",5
  678.     DC.B    4,"                 "
  679.     DC.B      "      GOTH       ",5
  680.     DC.B    4,"                 "
  681.     DC.B    4,"OF THE SHAPSHIFTERS"
  682.     DC.B      "                 "
  683.     DC.B    3,"THANKS FOR THE GREAT MUSIC"
  684.     DC.B      "                 "
  685.     DC.B    4,"      CAMY       ",5
  686.     DC.B    4,"                 "
  687.     DC.B    3,"THE MAIN MAN AT BUDGIE UK WITHOUT WHOSE TIME AND EFFORT THESE GAMES WOULD NOT REACH YOU. "
  688.     DC.B    3,"                 "
  689.     DC.B    4,"   THANKS CAMY!  ",5
  690.     DC.B    4,"                 "
  691.     DC.B    4,"  THE LOST BOYS  ",5
  692.     DC.B    4,"                 "
  693.     DC.B    3,"GREAT DEMOS, WHEN IS MAGGIE3 COMING OUT?"
  694.     DC.B      "                 "
  695.     DC.B    4,"     STUART      ",5
  696.     DC.B    4,"                 "
  697.     DC.B    3,"WHEN ARE YOU GOING TO START CODING AGAIN? "
  698.     DC.B      "                 "
  699.     DC.B    4,"     STEVE       ",5
  700.     DC.B    4,"                 "
  701.     DC.B    3,"PLEASE WRITE TO ME AND LET ME KNOW WHAT YOU ARE DOING THESE DAYS."
  702.     DC.B      "                 "
  703.     DC.B    4,"     E.O.G.      ",5
  704.     DC.B    4,"                 "
  705.     DC.B    4,"END OF GREETINGS!",5
  706.     DC.B      "                 "
  707.     DC.B    3,"AS ALWAYS I WILL INCLUDE MY ADDRESS JUST IN CASE YOU WANT TO WRITE "
  708.     DC.B      "TO ME OR SEND ME SOME MONEY OR SOME BLANK DISKS."
  709.     DC.B      "                 "
  710.     DC.B    4,"ADDRESS:         ",5
  711.     DC.B    4,"                 "
  712.     DC.B    4,"58 CHESTNUT AVE  ",5
  713.     DC.B    4,"                 "
  714.     DC.B      "BILLERICAY       ",5
  715.     DC.B    4,"                 ",3
  716.     DC.B      "ESSEX            ",5
  717.     DC.B    4,"                 "
  718.     DC.B      "CM12 9JG         ",5
  719.     DC.B    4,"                 "
  720.     DC.B    3,"THANK YOU, WELL THAT ABOUT WRAPS IT UP SO ......"
  721.     DC.B      "                 "
  722.     DC.B    4,"    LET'S WRAP   ",5
  723.     DC.B      ".............................................."
  724.     DC.B      ".............................................."
  725.     DC.B    4,"                  "
  726.     dc.b    255            end
  727.     even
  728.  
  729. vvar1        ds.w    1
  730. vvar2        ds.w    1
  731. text_address    ds.l    6
  732. workspace    ds.l    8    temp storage for character
  733. speed        ds.w    1
  734.  
  735. bounce        dc.b    1
  736. direction    dc.b    1
  737. line_one    ds.l    1
  738. old_screen_pos  dc.l     0
  739.         ds.w    8
  740.  
  741.  
  742.  
  743. scrbuf
  744. font        ds.b    2192      c/set is physically loaded HERE
  745.         ds.b    32768-2192
  746. data        ds.b    32000
  747.  
  748.  
  749.  
  750.  
  751.  
  752.