home *** CD-ROM | disk | FTP | other *** search
/ Club Amiga de Montreal - CAM / CAM_CD_1.iso / files / 393a.lha / pipeline / Pipeline.asm < prev    next >
Assembly Source File  |  1990-07-01  |  52KB  |  2,659 lines

  1. *
  2. *   PIPELINE
  3. *
  4. *   Written by André Wichmann of CLUSTER in Mar-Apr 1990
  5. *
  6. *   Concept: EMPIRE       (Pipe Mania/Pipe Dream)
  7. *            MASTERTRONIC (Locomotive or something like that)
  8. *
  9. *   This program is FREEWARE ! For further information read the doc-file !
  10. *
  11. *   Please do not examine this source-code if you want to learn from it,
  12. *   because it is a very LAZY and BAD way of programming (I just did it
  13. *   because I had the idea to create a game; without planning etc...)
  14. *   This is what we in Germany call a 'Spaghetti-code'...
  15. *
  16.  
  17.         incdir    "RAM:include/"
  18.         include    "exec/exec_lib.i"
  19.         include    "Libraries/dos_lib.i"
  20.         include    "intuition/intuition_lib.i"
  21.         include    "graphics/graphics_lib.i"
  22.  
  23. *** Equates
  24.  
  25. DMACONR        equ    $DFF002
  26. JOY0DAT        equ    $DFF00A
  27. JOY1DAT        equ    $DFF00C
  28. BLTCON0        equ    $DFF040
  29. BLTCON1        equ    $DFF042
  30. BLTAFWM        equ    $DFF044
  31. BLTALWM        equ    $DFF046
  32. BLTCPTH        equ    $DFF048
  33. BLTBPTH        equ    $DFF04C
  34. BLTAPTH        equ    $DFF050
  35. BLTDPTH        equ    $DFF054
  36. BLTSIZE        equ    $DFF058
  37. BLTCMOD        equ    $DFF060
  38. BLTBMOD        equ    $DFF062
  39. BLTAMOD        equ    $DFF064
  40. BLTDMOD        equ    $DFF066
  41. DIWSTRT        equ    $DFF08E
  42. DIWSTOP        equ    $DFF090
  43. DDFSTRT        equ    $DFF092
  44. DDFSTOP        equ    $DFF094
  45. BPL1PTH        equ    $DFF0E0
  46. BPL1PTL        equ    $DFF0E2
  47. BPL2PTH        equ    $DFF0E4
  48. BPL2PTL        equ    $DFF0E6
  49. BPL3PTH        equ    $DFF0E8
  50. BPL3PTL        equ    $DFF0EA
  51. BPL4PTH        equ    $DFF0EC
  52. BPL4PTL        equ    $DFF0EE
  53. BPL5PTH        equ    $DFF0F0
  54. BPL5PTL        equ    $DFF0F2
  55. BPL6PTH        equ    $DFF0F4
  56. BPL6PTL        equ    $DFF0F6
  57. BPL1MOD        equ    $DFF108
  58. BPL2MOD        equ    $DFF10A
  59. BPLCON0        equ    $DFF100
  60. BPLCON1        equ    $DFF102
  61. BPLCON2        equ    $DFF104
  62. DMACONW        equ    $DFF096
  63. DMACON        equ    $DFF096
  64. COLOR00        equ    $DFF180
  65. VHPOSR        equ    $DFF006
  66. CIAAPRA        equ    $BFE001
  67. STARTLIST    equ    38
  68. COP1LC        equ    $DFF080
  69. COPJMP1        equ    $DFF088
  70. SPR0DAT        equ    $DFF144
  71.  
  72. *** Macros
  73.  
  74.  
  75. ALLOC        MACRO
  76.         move.l    #\1,d0
  77.         move.l    #\2,d1
  78.         CALLEXEC AllocMem
  79.         ENDM
  80. FREE        MACRO
  81.         move.l    \1,a1
  82.         move.l    #\2,d0
  83.         CALLEXEC FreeMem
  84.         ENDM
  85.  
  86. MPRINT        MACRO
  87.         move.l    #1,Text_Flag
  88.         move.l    #3,Text_Delay
  89.         move.l    Plane0,a1
  90.         add.l    #\1*Planesize,a1
  91.         add.l    #\2+\3*40,a1
  92.         lea    \4,a0
  93.         bsr    Print_Text
  94.         ENDM
  95.  
  96. PRINT        MACRO
  97.         move.l    Plane0,a1
  98.         add.l    #\1*Planesize,a1
  99.         add.l    #\2+\3*40,a1
  100.         lea    \4,a0
  101.         bsr    Print_Text
  102.         ENDM
  103.  
  104. BPRINT        MACRO
  105.         move.l    Plane0,a1
  106.         add.l    #\1*Planesize,a1
  107.         add.l    #\2+\3*40,a1
  108.         lea    \4,a0
  109.         bsr    BPrint_Text
  110.         ENDM
  111.  
  112. CHIP        equ    $10002
  113. Planesize    equ    256*40
  114. Planes        equ    5
  115. CLsize        equ    1000*4
  116.  
  117. ***** Main *****
  118.  
  119.         include "Libraries/Dosextens.i"
  120.     
  121.         movem.l    d0/a0,-(sp)
  122.         clr.l    _WBenchMsg
  123.         sub.l    a1,a1
  124.         CALLEXEC FindTask
  125.         move.l    d0,a4
  126.         tst.l    pr_CLI(a4)
  127.         beq    _WB
  128.         movem.l    (sp)+,d0/a0
  129.         bra    _run
  130. _WB        lea    pr_MsgPort(a4),a0
  131.         CALLEXEC WaitPort
  132.         lea    pr_MsgPort(a4),a0
  133.         CALLEXEC GetMsg
  134.         move.l    d0,_WBenchMsg
  135.         movem.l    (sp)+,d0/a0
  136. _run        bsr    _main
  137.         move.l    d0,-(sp)
  138.         tst.l    _WBenchMsg
  139.         beq    _Exit
  140.         CALLEXEC Forbid
  141.         move.l    _WBenchMsg(pc),a1
  142.         CALLEXEC ReplyMsg
  143. _Exit        move.l    (sp)+,d0
  144.         rts
  145.  
  146. _WBenchMsg    ds.l    1
  147.  
  148. _Main        bsr    OpenLibs
  149.         CALLINT OpenWorkbench
  150.         add.l    #44,d0
  151.         move.l    d0,a0
  152.         lea    Black,a1
  153.         move.l    #4,d0
  154.         CALLGRAF LoadRGB4
  155.         ALLOC    Planesize*4,CHIP
  156.         move.l    d0,PlayPic
  157.         ALLOC    18*4*2*16,CHIP
  158.         move.l    d0,PlayObj
  159.         ALLOC    48*2*16,CHIP
  160.         move.l    d0,PlayFloat
  161.         ALLOC    512,CHIP
  162.         move.l    d0,PlayFont
  163.         ALLOC    3*130*40,CHIP
  164.         move.l    d0,PipeCluster
  165.         ALLOC    4*232*40,CHIP
  166.         move.l    d0,PipeLogo
  167.         move.l    #Filen_0,d1
  168.         move.l    #1005,d2
  169.         CALLDOS Open
  170.         move.l    d0,d7
  171.         move.l    d7,d1
  172.         move.l    PlayPic,d2
  173.         move.l    #Planesize*4,d3
  174.         CALLDOS Read
  175.         move.l    d7,d1
  176.         CALLDOS Close
  177.         move.l    #Filen_1,d1
  178.         move.l    #1005,d2
  179.         CALLDOS Open
  180.         move.l    d0,d7
  181.         move.l    d7,d1
  182.         move.l    PlayObj,d2
  183.         move.l    #18*4*2*16,d3
  184.         CALLDOS Read
  185.         move.l    d7,d1
  186.         CALLDOS Close
  187.         move.l    #Filen_2,d1
  188.         move.l    #1005,d2
  189.         CALLDOS Open
  190.         move.l    d0,d7
  191.         move.l    d7,d1
  192.         move.l    PlayFloat,d2
  193.         move.l    #48*2*16,d3
  194.         CALLDOS Read
  195.         move.l    d7,d1
  196.         CALLDOS Close
  197.         move.l    #Filen_3,d1
  198.         move.l    #1005,d2
  199.         CALLDOS Open
  200.         move.l    d0,d7
  201.         move.l    d7,d1
  202.         move.l    PlayFont,d2
  203.         move.l    #512,d3
  204.         CALLDOS Read
  205.         move.l    d7,d1
  206.         CALLDOS Close
  207.         move.l    #Filen_4,d1
  208.         move.l    #1005,d2
  209.         CALLDOS Open
  210.         move.l    d0,d7
  211.         move.l    d7,d1
  212.         move.l    PipeCluster,d2
  213.         move.l    #3*130*40,d3
  214.         CALLDOS Read
  215.         move.l    d7,d1
  216.         CALLDOS Close
  217.         move.l    #Filen_5,d1
  218.         move.l    #1005,d2
  219.         CALLDOS Open
  220.         move.l    d0,d7
  221.         move.l    d7,d1
  222.         move.l    PipeLogo,d2
  223.         move.l    #4*232*40,d3
  224.         CALLDOS Read
  225.         move.l    d7,d1
  226.         CALLDOS Close
  227.         move.l    #Filen_6,d1
  228.         move.l    #1005,d2
  229.         CALLDOS Open
  230.         tst.l    d0
  231.         beq    No_Highscores
  232.         move.l    d0,d7
  233.         move.l    d7,d1
  234.         move.l    #HOF,d2
  235.         move.l    #240,d3
  236.         CALLDOS Read
  237.         move.l    d7,d1
  238.         CALLDOS Close
  239. No_Highscores    move.l    #200,d1
  240.         CALLDOS Delay
  241.         jsr    Start_Muzak
  242.  
  243. Title        ALLOC    Planesize*Planes,CHIP
  244.         move.l     d0,Plane0
  245.         ALLOC    CLSize,CHIP
  246.         move.l    d0,CLadr
  247.         move.l    d0,a0
  248.         move.l    Plane0,d1
  249.         move.w    #BPL1PTH-$DFF000,d3
  250.         move.w    #Planes-1,d4
  251. Make_CL        move.w     d3,(a0)+
  252.         addq.w    #2,d3
  253.         swap    d1
  254.         move.w    d1,(a0)+
  255.         move.w    d3,(a0)+
  256.         addq.w    #2,d3
  257.         swap     d1
  258.         move.w    d1,(a0)+
  259.         add.l    #Planesize,d1
  260.         dbra    d4,Make_CL
  261.         move.w    #$180,(a0)+
  262.         move.w    #0,(a0)+
  263.         move.l    a0,Target
  264.         move.l    #$fffffffe,(a0)
  265.         
  266.         CALLEXEC Forbid
  267.         move.w    #$03e0,DMACONW
  268.         clr.l    SPR0DAT
  269.         move.l    CLAdr,COP1LC
  270.         clr.w    COPJMP1
  271.         move.w    #$3081,DIWSTRT
  272.         move.w     #$30c1,DIWSTOP
  273.         move.w  #$0038,DDFSTRT
  274.         move.w  #$00d0,DDFSTOP
  275.         move.w  #%0101000000000000,BPLCON0
  276.         clr.w    BPLCON1
  277.         clr.w    BPLCON2
  278.         clr.w    BPL1MOD
  279.         clr.w    BPL2MOD
  280.         move.w    #%1000011111011111,DMACONW
  281.  
  282. Title_Loop    bsr    Clear_Colors
  283.         move.l    Target,a0
  284.         move.l    #$fffffffe,(a0)
  285.         move.l    PipeLogo,a0
  286.         move.l    Plane0,a1
  287.         move.l    #3,d7
  288. Show_Logo_1    move.l    a1,a2
  289.         move.l    #232*40-1,d6
  290. Show_Logo_2    move.b    (a0)+,(a2)+
  291.         dbra    d6,Show_Logo_2
  292.         add.l    #Planesize,a1
  293.         dbra    d7,Show_Logo_1
  294.  
  295.         PRINT    4,0,10,HOFText
  296.         lea    HOFBuffer,a0
  297.         move.l    #39,d0
  298. Clear_HOFB    move.b    #" ",(a0)+
  299.         dbra    d0,Clear_HOFB
  300.  
  301.         lea    HOF,a5
  302.         move.l    #42*40,d6
  303.         move.l    #9,d7
  304. Show_High    move.l    (a5)+,d2
  305.         movem.l    d6/d7/a5,-(sp)
  306.         bsr    BinDec
  307.         movem.l    (sp)+,d6/d7/a5
  308.         lea    HOFBuffer+4,a1
  309.         lea    Dec_Buffer+1,a0
  310.         move.l    #6,d0
  311. Copy_Score    move.b    (a0)+,(a1)+
  312.         dbra    d0,Copy_Score
  313.         move.b    #" ",(a1)+
  314.         move.b    #" ",(a1)+
  315.         move.b    #" ",(a1)+
  316.         move.l    #19,d0
  317. Copy_Name    move.b    (a5)+,(a1)+
  318.         dbra    d0,Copy_Name
  319.         move.b    #0,(a1)+
  320.         movem.l    d6/d7/a5,-(sp)
  321.         move.l    Plane0,a1
  322.         add.l    #4*Planesize,a1
  323.         add.l    d6,a1
  324.         lea    HOFBuffer,a0
  325.         bsr    Print_Text
  326.         movem.l    (sp)+,d6/d7/a5
  327.         add.l    #16*40,d6
  328.         dbra    d7,Show_High
  329.  
  330.         lea    TitleCols_1,a5
  331.         bsr    Fade_In
  332.  
  333.         move.l    #10,d6
  334. TWait1_2    move.l    #$ffff,d7
  335. TWait_1        btst    #7,$BFE001
  336.         beq    StartGame1
  337.         dbra    d7,TWait_1
  338.         dbra    d6,TWait1_2
  339.  
  340.         lea    TitleCols_1,a5
  341.         bsr    Fade_Out
  342.  
  343.         bsr    Clear_Colors
  344.         move.l    Plane0,a1
  345.         move.l    #5*Planesize-1,d0
  346. ClearTPlanes    move.b    #0,(a1)+
  347.         dbra    d0,ClearTPlanes
  348.  
  349.         move.l    Target,a0
  350.         move.w    #$400f,d1
  351.         move.w    #$0000,d2
  352.         move.l    #15,d0
  353. Spreadloop_1    move.w    d1,(a0)+
  354.         move.w    #$fffe,(a0)+
  355.         move.w    #$1a0,(a0)+
  356.         move.w    d2,(a0)+
  357.         add.w    #$0110,d2
  358.         add.w    #$0200,d1
  359.         dbra    d0,Spreadloop_1
  360.         move.w    #$d00f,d1
  361.         move.w    #$0ff0,d2
  362.         move.l    #15,d0
  363. Spreadloop_2    move.w    d1,(a0)+
  364.         move.w    #$fffe,(a0)+
  365.         move.w    #$1a0,(a0)+
  366.         move.w    d2,(a0)+
  367.         sub.w    #$0110,d2
  368.         add.w    #$0200,d1
  369.         dbra    d0,Spreadloop_2
  370.  
  371.         move.l    #$fffffffe,(a0)
  372.  
  373.         move.l    PipeCluster,a0
  374.         move.l    Plane0,a1
  375.         add.l    #40*40,a1
  376.         move.l    #2,d7
  377. Show_Logo_3    move.l    a1,a2
  378.         move.l    #130*40-1,d6
  379. Show_Logo_4    move.b    (a0)+,(a2)+
  380.         dbra    d6,Show_Logo_4
  381.         add.l    #Planesize,a1
  382.         dbra    d7,Show_Logo_3
  383.         lea    TitleCols_2,a5
  384.         bsr    Fade_In
  385.  
  386.         move.l    #Scroll,Scrollptr
  387.         move.l    #1,Scrflag
  388.         bsr    Wait_Blt
  389.         move.w    #$ffff,BLTAFWM
  390.         move.w    #$ffff,BLTALWM
  391.         clr.w    BLTCON1
  392.         move.w    #%0000100111110000,BLTCON0
  393.  
  394. TwoLoop_1    move.l    #2,d1
  395.         move.b    #$ff,d2
  396. TwoLoop_2    move.w    VHPOSR,d0
  397.         lsr.w    #8,d0
  398.         cmp.b    d2,d0
  399.         bne    TwoLoop_2
  400.         subq.l    #1,d2
  401.         dbra    d1,TwoLoop_2
  402.  
  403.         move.l    Plane0,a0
  404.         add.l    #4*Planesize,a0
  405.         add.l    #20*40,a0
  406.         move.l    a0,BLTDPTH
  407.         add.l    #1*40,a0
  408.         move.l    a0,BLTAPTH
  409.         clr.w    BLTAMOD
  410.         clr.w    BLTDMOD
  411.         move.w    #180*64+20,BLTSIZE
  412.         bsr    Wait_Blt
  413.         btst    #7,$BFE001
  414.         beq    StartGame2
  415.         subq.l    #1,Scrflag
  416.         tst.l    Scrflag
  417.         bne    TwoLoop_1
  418.         move.l    #8,Scrflag
  419.         move.l    Scrollptr,a0
  420.         lea    HOFBuffer,a1
  421.         move.l    #39,d0
  422. CopyLine    move.b    (a0)+,(a1)+
  423.         dbra    d0,CopyLine
  424.         move.b    #0,(a1)
  425.         move.l    Plane0,a1
  426.         add.l    #4*Planesize,a1
  427.         add.l    #190*40,a1
  428.         lea    HOFBuffer,a0
  429.         bsr    Print_text
  430.         add.l    #40,Scrollptr
  431.         move.l    Scrollptr,a0
  432.         cmp.b    #0,(a0)
  433.         bne    TwoLoop_1
  434.  
  435.         lea    TitleCols_2,a5
  436.         bsr    Fade_Out
  437.         bra    Title_Loop
  438.  
  439. Wait_Blt    btst    #14,DMACONR
  440.         bne    Wait_Blt
  441.         rts
  442.  
  443. StartGame1    lea    TitleCols_1,a5
  444.         bsr    Fade_Out
  445.         bra    StartGame
  446.  
  447. StartGame2    move.l    Target,a0
  448.         move.l    #$fffffffe,(a0)
  449.         lea    TitleCols_2,a5
  450.         bsr    Fade_Out
  451.         bra    StartGame
  452.  
  453. StartGame    move.l    _GfxBase,a4
  454.         move.l    STARTLIST(a4),COP1LC
  455.         clr.w    COPJMP1
  456.         move.w    #$8060,DMACONW
  457.         CALLEXEC Permit
  458.         FREE    CLAdr,CLSize
  459.         FREE    Plane0,Planesize*Planes
  460.  
  461.         clr.l    Play_Level
  462.         clr.l    Score
  463. Play_Loop    addq.l    #1,Play_Level
  464.         bsr    Play
  465.         cmp.l    #1,Status
  466.         beq    Over
  467.         bsr    Good
  468.         bra    Play_Loop
  469.  
  470. Clear_Colors    lea    $DFF180,a0
  471.         move.l    #31,d0
  472. SetColos_1    move.w    #0,(a0)+
  473.         dbra    d0,SetColos_1
  474.         rts
  475.  
  476. *** Fade in with Colortable in ^a5 ***
  477.  
  478. Fade_In        lea    Hilftab,a0
  479.         move.l    #31,d0
  480. Clear_Tab    clr.w    (a0)+
  481.         dbra    d0,Clear_Tab
  482.         move.l    #15,d7
  483. Fade_Loop_1    lea    Hilftab,a4
  484.         move.l    a5,a3
  485.         lea    Color00,a0
  486.         move.l    #31,d0
  487. Fade_Loop_2    move.w    (a4),(a0)+
  488.         move.w    (a4),d1
  489.         and.l    #15,d1
  490.         move.w    (a3),d2
  491.         and.l    #15,d2
  492.         cmp.l    d1,d2
  493.         beq    No_Increase_1
  494.         addq.w    #1,(a4)
  495. No_Increase_1    move.w    (a4),d1
  496.         and.l    #%11110000,d1
  497.         move.w    (a3),d2
  498.         and.l    #%11110000,d2
  499.         cmp.l    d1,d2
  500.         beq    No_Increase_2
  501.         add.w    #16,(a4)
  502. No_Increase_2    move.w    (a4),d1
  503.         and.l    #%111100000000,d1
  504.         move.w    (a3),d2
  505.         and.l    #%111100000000,d2
  506.         cmp.l    d1,d2
  507.         beq    No_Increase_3
  508.         add.w    #256,(a4)
  509. No_Increase_3    addq.l    #2,a4
  510.         addq.l    #2,a3
  511.         dbra    d0,Fade_Loop_2
  512.         move.l    #$2fff,d0
  513. Fade_Delay    dbra    d0,Fade_Delay
  514.         dbra    d7,Fade_Loop_1
  515.         rts
  516.  
  517. *** Fade out with Colortable in ^a5 ***
  518.  
  519. Fade_Out    lea    Hilftab,a0
  520.         move.l    #31,d0
  521. Copy_Tab    move.w    (a5)+,(a0)+
  522.         dbra    d0,Copy_Tab
  523.         move.l    #15,d7
  524. FadeOut_Loop_1    lea    HilfTab,a0
  525.         move.l    #31,d0
  526. FadeOut_Loop_2    move.w    (a0),d1
  527.         and.l    #15,d1
  528.         tst.l    d1
  529.         beq    No_Decrease_1
  530.         sub.w    #1,(a0)
  531. No_Decrease_1    move.w    (a0),d1
  532.         lsr.w    #4,d1
  533.         and.l    #15,d1
  534.         tst.l    d1
  535.         beq    No_Decrease_2
  536.         sub.w    #16,(a0)
  537. No_Decrease_2    move.w    (a0),d1
  538.         lsr.w    #8,d1
  539.         and.l    #15,d1
  540.         tst.l    d1
  541.         beq    No_Decrease_3
  542.         sub.w    #256,(a0)
  543. No_Decrease_3    addq.l    #2,a0
  544.         dbra    d0,FadeOut_Loop_2
  545.         lea    HilfTab,a0
  546.         lea    $DFF180,a1
  547.         move.l    #31,d0
  548. FadeOut_Loop_3    move.w    (a0)+,(a1)+
  549.         dbra    d0,FadeOut_Loop_3
  550.         move.l    #$2fff,d0
  551. FadeOut_Delay    dbra    d0,FadeOut_Delay
  552.         dbra    d7,FadeOut_Loop_1
  553.         rts
  554.  
  555. HilfTab        ds.w    32
  556.  
  557. ***** Play a Level *****
  558.  
  559. Play    
  560.         bsr    Get_Ready
  561.         ALLOC    Planesize*Planes,CHIP
  562.         move.l     d0,Plane0
  563.         move.l    PlayPic,a0
  564.         move.l    Plane0,a1
  565.         move.l    #Planesize*4-1,d0
  566. Copy_PlayPic    move.b    (a0)+,(a1)+
  567.         dbra    d0,Copy_PlayPic
  568.         ALLOC    CLSize,CHIP
  569.         move.l    d0,CLadr
  570.         move.l    d0,a0
  571.         move.l    Plane0,d1
  572.         move.w    #BPL1PTH-$DFF000,d3
  573.         move.w    #Planes-1,d4
  574. MakeCL        move.w     d3,(a0)+
  575.         addq.w    #2,d3
  576.         swap    d1
  577.         move.w    d1,(a0)+
  578.         move.w    d3,(a0)+
  579.         addq.w    #2,d3
  580.         swap     d1
  581.         move.w    d1,(a0)+
  582.         add.l    #Planesize,d1
  583.         dbra    d4,MakeCL
  584.         move.l    #$fffffffe,(a0)
  585.         move.l    a0,Target
  586.  
  587.         CALLEXEC Forbid
  588.         
  589.         move.w    #$03e0,DMACONW
  590.         clr.l    SPR0DAT
  591.         move.l    CLAdr,COP1LC
  592.         clr.w    COPJMP1
  593.         move.w    #$3081,DIWSTRT
  594.         move.w     #$30c1,DIWSTOP
  595.         move.w  #$0038,DDFSTRT
  596.         move.w  #$00d0,DDFSTOP
  597.         move.w  #%0101000000000000,BPLCON0
  598.         clr.w    BPLCON1
  599.         clr.w    BPLCON2
  600.         clr.w    BPL1MOD
  601.         clr.w    BPL2MOD
  602.         move.w    #%1000011111011111,DMACONW
  603.  
  604.         bsr    Clear_Colors
  605.  
  606. *** Init
  607.  
  608.         move.l    Plane0,a0
  609.         add.l    #4*Planesize,a0
  610.         add.l    #7*16*40+120,a0
  611.         move.l    #64,d0
  612. Create_Time    move.w    #%0000001111111111,(a0)
  613.         move.w    #%1111111111000000,2(a0)
  614.         add.l    #40,a0
  615.         dbra    d0,Create_Time
  616.         clr.l    Time
  617.         move.l    #8,Time_Split
  618.         clr.l    Float_Flag
  619.         clr.l    Status
  620.         move.l    #4,Splitter
  621.         clr.l    FinishFlag
  622.         clr.l    EscFlag
  623.  
  624.         lea    Level,a0
  625.         lea    Special,a1
  626.         lea    Floats,a2
  627.         move.l    #16*10-1,d0
  628. Clear_Level    clr.b    (a0)+
  629.         clr.b    (a1)+
  630.         clr.b    (a2)+
  631.         dbra    d0,Clear_Level
  632.  
  633.         move.l    Play_Level,d7
  634.         mulu    #2,d7
  635.         subq.l    #1,d7
  636. Set_Walls    bsr    RND
  637.         and.l    #15,d0
  638.         move.l    d0,d6
  639. Get_Wall_Y    bsr    RND
  640.         and.l    #15,d0
  641.         cmp.l    #9,d0
  642.         bhi    Get_Wall_Y
  643.         move.l    d0,d1
  644.         move.l    d6,d0
  645.         lea    Level,a0
  646.         add.l    d0,a0
  647.         mulu    #16,d1
  648.         add.l    d1,a0
  649.         move.b    #16,(a0)
  650.         dbra    d7,Set_Walls
  651.  
  652.         move.l    Play_Level,d7
  653.         subq.l    #1,d7
  654. Set_Specials    bsr    RND
  655.         and.l    #15,d0
  656.         move.l    d0,d6
  657. Get_Special_Y    bsr    RND
  658.         and.l    #15,d0
  659.         cmp.l    #9,d0
  660.         bhi    Get_Special_Y
  661.         move.l    d0,d1
  662.         move.l    d6,d0
  663.         lea    Special,a0
  664.         lea    Level,a1
  665.         add.l    d0,a0
  666.         mulu    #16,d1
  667.         add.l    d1,a0
  668.         add.l    d0,a1
  669.         add.l    d1,a1
  670.         tst.b    (a1)
  671.         bne    Set_Specials
  672.         bsr    RND
  673.         and.l    #3,d0
  674.         bset    #6,d0
  675.         move.b    d0,(a0)
  676.         dbra    d7,Set_Specials
  677.  
  678. Get_Start_X    bsr    RND
  679.         and.l    #15,d0
  680.         beq    Get_Start_X
  681.         cmp.l    #15,d0
  682.         beq    Get_Start_X
  683.         move.l    d0,Start_X
  684.         move.l    d0,Crsr_X
  685. Get_Start_Y    bsr    RND
  686.         and.l    #15,d0
  687.         beq    Get_Start_Y
  688.         cmp.l    #8,d0
  689.         bhi    Get_Start_Y
  690.         move.l    d0,Start_Y
  691.         move.l    d0,Crsr_Y
  692. Get_Start_Dir    bsr    RND
  693.         and.l    #3,d0
  694.         move.l    d0,Float_Dir
  695.         move.l    d0,d1
  696.         lea    Level,a0
  697.         add.l    Start_X,a0
  698.         move.l    Start_Y,d0
  699.         mulu    #16,d0
  700.         add.l    d0,a0
  701.         move.b    #17,(a0)
  702.         clr.b    -17(a0)
  703.         clr.b    -16(a0)
  704.         clr.b    -15(a0)
  705.         clr.b    -1(a0)
  706.         clr.b    1(a0)
  707.         clr.b    15(a0)
  708.         clr.b    16(a0)
  709.         clr.b    17(a0)
  710.         lea    Special,a0
  711.         add.l    Start_X,a0
  712.         move.l    Start_Y,d0
  713.         mulu    #16,d0
  714.         add.l    d0,a0
  715.         move.b    d1,(a0)
  716.         move.l    Start_X,Float_X
  717.         move.l    Start_Y,Float_Y
  718.         clr.l    Float_Count
  719.         clr.l    Float_Pointer
  720.         clr.l    Float_Math
  721.         clr.l    Joy_Revers
  722.  
  723.         lea    Level,a0
  724.         lea    Special,a1
  725.         move.l    #0,d1
  726. Show_Lines    move.l    #0,d0
  727. Show_Field    tst.b    (a0)
  728.         bne    Show_Wall
  729.         tst.b    (a1)
  730.         bne    Show_Special
  731. Next_Show    addq.l    #1,a0
  732.         addq.l    #1,a1
  733.         addq.l    #1,d0
  734.         cmp.l    #16,d0
  735.         bne    Show_Field
  736.         addq.l    #1,d1
  737.         cmp.l    #10,d1
  738.         bne    Show_Lines
  739.         bra    Continue
  740. Show_Wall    movem.l    d0-d7/a0-a6,-(sp)
  741.         move.l    #13,d2
  742.         bsr    Show_Obj
  743.         movem.l    (sp)+,d0-d7/a0-a6
  744.         bra    Next_Show
  745. Show_Special    movem.l    d0-d7/a0-a6,-(sp)
  746.         move.l    #14,d2
  747.         add.b    (a1),d2
  748.         bclr    #6,d2
  749.         bsr    Show_Obj
  750.         movem.l    (sp)+,d0-d7/a0-a6
  751.         bra    Next_Show
  752.  
  753. Continue    move.l    #9,d2
  754.         add.l    Float_Dir,d2
  755.         move.l    Start_X,d0
  756.         move.l    Start_Y,d1
  757.         bsr    Show_Obj
  758.         bsr    Set_Crsr
  759.  
  760.         lea    Next,a0
  761.         move.l    #4,d7
  762. Get_Next    bsr    RND
  763.         and.l    #7,d0
  764.         beq    Get_Next
  765.         move.b    d0,(a0)+
  766.         dbra    d7,Get_Next
  767.         bsr    Display_Next
  768.  
  769.         PRINT    4,1,195,Status_text
  770.         move.l    Play_Level,d2
  771.         bsr    BinDec
  772.         PRINT    4,36,195,Dec_Buffer+6
  773.         clr.l    Num_Specials
  774.         move.l    HOF,d2
  775.         bsr    BinDec
  776.         PRINT    4,21,195,Dec_Buffer+1
  777.  
  778.         move.l    Target,a0
  779.         move.w    #$ffdd,(a0)+
  780.         move.w    #$fffe,(a0)+
  781.         lea    BonusColors,a1
  782.         move.l    #7,d0
  783.         move.l    #$000f,d1
  784. Set_Bonuscolors    move.w    d1,(a0)+
  785.         move.w    #$fffe,(a0)+
  786.         move.w    #$184,(a0)+
  787.         move.w    (a1)+,(a0)+
  788.         add.w    #$0100,d1
  789.         dbra    d0,Set_Bonuscolors
  790.         move.l    #$fffffffe,(a0)
  791.  
  792.         lea    Colors,a5
  793.         bsr    Fade_In
  794.  
  795. Wait        bsr    Show_Score
  796.         bsr    Check_Joy
  797.         bsr    Sub_Time
  798.         bsr    Float
  799.         bsr    Delay
  800.         tst.l    Status
  801.         bne    LevelFinished
  802.         cmp.l    #65,Time
  803.         beq    Level_Ready
  804.         move.b    $BFEC01,d0
  805.         cmp.b    #$cd,d0        ; P
  806.         beq    Pausemode
  807.         cmp.b    #$75,d0
  808.         beq    FastFlowOn
  809.         bra    Wait
  810.  
  811. FastFlowOn    move.l    #1,EscFlag
  812.         bra    Wait
  813.  
  814. Game_Fail
  815. Level_Ready
  816.         move.l    #1,FinishFlag
  817.         bra    Wait
  818. LevelFinished    move.l    Target,a0
  819.         move.l    #$fffffffe,(a0)
  820.         lea    Colors,a5
  821.         bsr    Fade_Out
  822.         move.l    _Gfxbase,a4
  823.         move.l    STARTLIST(a4),COP1LC
  824.         clr.w    COPJMP1
  825.         move.w    #$8060,DMACONW
  826.         CALLEXEC Permit
  827.         FREE    CLAdr,CLSize
  828.         FREE    Plane0,Planesize*Planes
  829.         rts
  830.     
  831. ***** Subs *****
  832.  
  833. OpenLibs    lea    Intuitionname,a1
  834.         clr.l    d0
  835.         CALLEXEC OpenLibrary
  836.         move.l    d0,_IntuitionBase
  837.         lea    Graphicsname,a1
  838.         clr.l    d0
  839.         CALLEXEC OpenLibrary
  840.         move.l    d0,_GfxBase
  841.         lea    Dosname,a1
  842.         clr.l    d0
  843.         CALLEXEC OpenLibrary
  844.         move.l    d0,_DosBase
  845.         rts
  846. CloseLibs    move.l    _IntuitionBase,a1
  847.         CALLEXEC CloseLibrary
  848.         move.l    _GfxBase,a1
  849.         CALLEXEC CloseLibrary
  850.         move.l    _DosBase,a1
  851.         CALLEXEC CloseLibrary
  852.         rts
  853.  
  854. Intuitionname    dc.b    "intuition.library",0
  855.         EVEN
  856. Graphicsname    dc.b    "graphics.library",0
  857.         EVEN
  858. Dosname        dc.b    "dos.library",0
  859.         EVEN
  860. _IntuitionBase    ds.l    1
  861. _GfxBase    ds.l    1
  862. _DosBase    ds.l    1
  863.  
  864. Pausemode    move.b    $BFEC01,d0
  865.         cmp.b    #$99,d0        ; C
  866.         bne    Pausemode
  867.         bra    Wait
  868.  
  869. Over        bsr    Clear_Colors
  870.         bsr    Create_Playfield
  871.         move.l    Target,a0
  872.         move.l    #$3a0f,d1
  873.         move.l    #$0011,d2
  874.         move.l    #13,d0
  875. ColsUp        move.w    d1,(a0)+
  876.         move.w    #$fffe,(a0)+
  877.         move.w    #$182,(a0)+
  878.         move.w    d2,(a0)+
  879.         add.w    #$0200,d1
  880.         add.w    #$0011,d2
  881.         dbra    d0,ColsUp
  882.         move.l    #13,d0
  883. ColsDown    move.w    d1,(a0)+
  884.         move.w    #$fffe,(a0)+
  885.         move.w    #$182,(a0)+
  886.         move.w    d2,(a0)+
  887.         add.w    #$0200,d1
  888.         sub.w    #$0011,d2
  889.         dbra    d0,ColsDown
  890.         move.l    #$800f,d1
  891.         move.l    #$008,d2
  892.         move.l    #$002,d3
  893.         bsr    Rohr
  894.         move.l    #$900f,d1
  895.         move.l    #$888,d2
  896.         move.l    #$222,d3
  897.         bsr    Rohr
  898.         move.l    #$a00f,d1
  899.         move.l    #$080,d2
  900.         move.l    #$020,d3
  901.         bsr    Rohr
  902.         move.l    #$b00f,d1
  903.         move.l    #$800,d2
  904.         move.l    #$200,d3
  905.         bsr    Rohr
  906.         move.l    #$c00f,d1
  907.         move.l    #$880,d2
  908.         move.l    #$220,d3
  909.         bsr    Rohr
  910.         move.l    #$d00f,d1
  911.         move.l    #$880,d2
  912.         move.l    #$220,d3
  913.         bsr    Rohr
  914.         move.l    #$e00f,d1
  915.         move.l    #$880,d2
  916.         move.l    #$220,d3
  917.         bsr    Rohr
  918.         move.l    #$fffffffe,(a0)
  919.  
  920.         BPRINT    0,1,10,Overtext_1
  921.         PRINT    0,0,80,Overtext_2
  922.         move.l    Score,d2
  923.         bsr    BinDec
  924.         lea    Dec_Buffer+1,a0
  925.         lea    Overtext_9+22,a1
  926.         move.l    #6,d0
  927. Overscore    move.b    (a0)+,(a1)+
  928.         dbra    d0,Overscore
  929.         PRINT    0,0,96,Overtext_9
  930.         move.l    Score,d1
  931.         lea    HOF,a0
  932.         move.l    #0,d0
  933. Compare_Scores    move.l    (a0)+,d2
  934.         add.l    #20,a0
  935.         cmp.l    d1,d2
  936.         blt    Highscore
  937.         addq.l    #1,d0
  938.         cmp.l    #10,d0
  939.         bne    Compare_Scores
  940.         PRINT    0,0,112,Overtext_4
  941.         bra    Overwait
  942. Highscore    sub.l    #24,a0
  943.         cmp.l    #9,d0
  944.         beq    No_Trans
  945.         lea    HOF+9*24,a1
  946.         move.l    #9,d1
  947. Transfer    move.l    -24(a1),(a1)
  948.         move.l    -20(a1),4(a1)
  949.         move.l    -16(a1),8(a1)
  950.         move.l    -12(a1),12(a1)
  951.         move.l    -8(a1),16(a1)
  952.         move.l    -4(a1),20(a1)
  953.         sub.l    #24,a1
  954.         subq.l    #1,d1
  955.         cmp.l    d0,d1
  956.         bne    Transfer
  957. No_Trans    move.l    Score,(a0)+
  958.         move.l    a0,Hiptr
  959.         PRINT    0,0,112,Overtext_3
  960.         PRINT    0,0,128,Overtext_5
  961.         PRINT    0,0,144,Overtext_6
  962.         PRINT    0,0,160,Overtext_7
  963.         PRINT    0,0,176,Overtext_8
  964.         move.l    #0,Crsr_X
  965.         move.l    #0,Crsr_Y
  966.         bsr    Set_Highcrsr
  967.         lea    Hiname,a0
  968.         move.l    #19,d0
  969. Clear_Hiname    move.b    #"-",(a0)+
  970.         dbra    d0,Clear_Hiname
  971.         clr.b    (a0)
  972.         move.l    #0,Hipos
  973. Overloop    move.l    #$ff,d1
  974.         move.l    #4,d2
  975. Overloop_2    move.w    VHPOSR,d0
  976.         lsr.w    #8,d0
  977.         cmp.b    d1,d0
  978.         bne    Overloop_2
  979.         subq.l    #1,d1
  980.         dbra    d2,Overloop_2
  981.  
  982.         bsr    Set_Highcrsr
  983.         move.w    JOY1DAT,d0
  984.         btst    #1,d0
  985.         beq    OverNR
  986.         addq.l    #1,Crsr_X
  987.         btst    #0,d0
  988.         bne    OverY
  989.         addq.l    #1,Crsr_Y
  990. OverNR        btst    #0,d0
  991.         beq    OverY
  992.         addq.l    #1,Crsr_Y
  993. OverY        btst    #9,d0
  994.         beq    OverNL
  995.         subq.l    #1,Crsr_X
  996.         btst    #8,d0
  997.         bne    OverTX
  998.         subq.l    #1,Crsr_Y
  999. OverNL        btst    #8,d0
  1000.         beq    OverTX
  1001.         subq.l    #1,Crsr_Y
  1002. OverTX        move.l    Crsr_X,d0
  1003.         bpl    OverNNX1
  1004.         clr.l    Crsr_X
  1005. OverNNX1    cmp.l    #10,d0
  1006.         bne    OverNNX2
  1007.         move.l    #9,Crsr_X
  1008. OverNNX2    move.l    Crsr_Y,d0
  1009.         bpl    OverNNY1
  1010.         clr.l    Crsr_Y
  1011. OverNNY1    cmp.l    #3,d0
  1012.         bne    OverNNY2
  1013.         move.l    #2,Crsr_Y
  1014. OverNNY2    bsr    Set_Highcrsr
  1015.         btst    #7,$bfe001
  1016.         bne    Overloop
  1017.         move.l    Crsr_Y,d0
  1018.         mulu    #10,d0
  1019.         add.l    Crsr_X,d0
  1020.         cmp.l    #29,d0
  1021.         beq    HiEnd
  1022.         cmp.l    #28,d0
  1023.         beq    HiDel
  1024.         cmp.l    #27,d0
  1025.         beq    HiBlank
  1026.         cmp.l    #26,d0
  1027.         beq    HiPoint
  1028.         add.l    #"A",d0
  1029. Push_Char    cmp.l    #20,HiPos
  1030.         beq    OverLoop
  1031.         move.l    HiPos,d1
  1032.         lea    HiName,a0
  1033.         move.b    d0,(a0,d1)
  1034.         addq.l    #1,HiPos
  1035.         PRINT    0,10,128,HiName
  1036.         bra    OverLoop
  1037. HiDel        cmp.l    #0,HiPos
  1038.         beq    OverLoop
  1039.         subq.l    #1,HiPos
  1040.         move.l    HiPos,d1
  1041.         lea    HiName,a0
  1042.         move.b    #"-",(a0,d1)
  1043.         PRINT    0,10,128,HiName
  1044.         bra    OverLoop
  1045. HiBlank        move.b    #" ",d0
  1046.         bra    Push_Char
  1047. HiPoint        move.b    #".",d0
  1048.         bra    Push_Char
  1049.  
  1050. HiEnd        move.b    #"-",HiName+20
  1051.         move.l    Hiptr,a1
  1052.         move.l    #19,d0
  1053. Clear_OldHi    move.b    #" ",(a1)+
  1054.         dbra    d0,Clear_OldHi
  1055.         cmp.b    #"-",HiName
  1056.         bne    Not_EmptyHi
  1057.         move.l    #"UNKN",HiName
  1058.         move.l    #"OWN-",HiName+4
  1059. Not_EmptyHi    lea    HiName,a0
  1060. Search_End    cmp.b    #"-",(a0)+
  1061.         bne    Search_End
  1062.         subq.l    #1,a0
  1063. Copy_HiName    move.b    -(a0),-(a1)
  1064.         cmp.b    #"!",-1(a0)
  1065.         bne    Copy_HiName
  1066. Real_HiEnd    bsr    Remove_Playfield
  1067.         move.l    #Filen_6,d1
  1068.         move.l    #1006,d2
  1069.         CALLDOS Open
  1070.         tst.l    d0
  1071.         beq    No_SaveHigh
  1072.         move.l    d0,d7
  1073.         move.l    d7,d1
  1074.         move.l    #HOF,d2
  1075.         move.l    #240,d3
  1076.         CALLDOS Write
  1077.         move.l    d7,d1
  1078.         CALLDOS Close
  1079.         move.l    #250,d1
  1080.         CALLDOS Delay
  1081. No_SaveHigh    bra    Title
  1082.  
  1083. Overwait    btst    #7,$bfe001
  1084.         bne    Overwait
  1085.         lea    Goodcols,a5
  1086.         bsr    Fade_out
  1087.         bsr    Remove_Playfield
  1088.         bra    Title
  1089. Set_Highcrsr    move.l    Plane0,a0
  1090.         add.l    #144*40+10,a0
  1091.         move.l    Crsr_x,d0
  1092.         mulu    #2,d0
  1093.         add.l    d0,a0
  1094.         move.l    Crsr_Y,d0
  1095.         mulu    #8*80,d0
  1096.         add.l    d0,a0
  1097.         move.l    #6,d0
  1098. SetFrame    eor.b    #%11111110,(a0)
  1099.         add.l    #40,a0
  1100.         dbra    d0,SetFrame
  1101.         rts
  1102.  
  1103. Rohr        move.l    #3,d0
  1104. Rup        move.w    d1,(a0)+
  1105.         move.w    #$fffe,(a0)+
  1106.         move.w    #$182,(a0)+
  1107.         move.w    d2,(a0)+
  1108.         add.w    #$0100,d1
  1109.         add.w    d3,d2
  1110.         dbra    d0,Rup
  1111.         sub.w    d3,d2
  1112.         move.l    #3,d0
  1113. Rdown        move.w    d1,(a0)+
  1114.         move.w    #$fffe,(a0)+
  1115.         move.w    #$182,(a0)+
  1116.         move.w    d2,(a0)+
  1117.         sub.w    d3,d2
  1118.         add.w    #$0100,d1
  1119.         dbra    d0,Rdown
  1120.         rts
  1121.  
  1122. Good        bsr    Clear_Colors
  1123.         bsr    Create_Playfield
  1124.         BPRINT    0,1,30,Good_text
  1125.         PRINT    0,0,110,Goodtext_2
  1126.         tst.l    Num_Specials
  1127.         beq    No_SBonus
  1128.         move.l    Num_Specials,d2
  1129.         bsr    BinDec
  1130.         move.b    Dec_Buffer+5,Goodtext_4+15
  1131.         move.b    Dec_Buffer+6,Goodtext_4+16
  1132.         move.b    Dec_Buffer+7,Goodtext_4+17
  1133.         move.l    Play_Level,d0
  1134.         mulu    #50,d0
  1135.         move.l    Num_Specials,d1
  1136.         mulu    d1,d0
  1137.         move.l    d0,d2
  1138.         add.l    d0,Score
  1139.         bsr    BinDec
  1140.         lea    Dec_Buffer+1,a0
  1141.         lea    Goodtext_4+31,a1
  1142.         move.l    #6,d0
  1143. Copy_Bonus    move.b    (a0)+,(a1)+
  1144.         dbra    d0,Copy_Bonus
  1145.  
  1146.         PRINT    0,0,126,Goodtext_3
  1147.         PRINT    0,0,142,Goodtext_4
  1148. No_SBonus    move.w    #-$101,Flashdir
  1149.         move.w    #$f0f,Flashcol
  1150.         lea    Goodcols,a5
  1151.         bsr    Fade_in
  1152. Good_Wait    move.b    #$ff,d2
  1153.         move.l    #3,d1
  1154. Good_Wait2    move.w    VHPOSR,d0
  1155.         lsr.w    #8,d0
  1156.         cmp.b    d2,d0
  1157.         bne    Good_Wait2
  1158.         subq.w    #1,d2
  1159.         dbra    d1,Good_Wait2
  1160.  
  1161.         move.w    Flashcol,d0
  1162.         add.w    Flashdir,d0
  1163.         move.w    d0,Flashcol
  1164.         move.w    d0,COLOR00+2
  1165.         cmp.w    #$f0f,d0
  1166.         beq    Neg_Flashdir
  1167.         cmp.w    #$505,d0
  1168.         beq    Neg_FlashDir
  1169. NoNeg_Flashdir    btst    #7,$BFE001
  1170.         bne    Good_Wait
  1171.         bsr    Remove_Playfield
  1172.         rts
  1173. Neg_Flashdir    move.w    Flashdir,d0
  1174.         neg.w    d0
  1175.         move.w    d0,Flashdir
  1176.         bra    NoNeg_Flashdir
  1177.  
  1178. Get_Ready    clr.l    Inter_Offset
  1179.         bsr    Create_Playfield
  1180.         move.l    Play_Level,d2
  1181.         bsr    BinDec
  1182.         cmp.b    #" ",Dec_Buffer+6
  1183.         bne    No_Space
  1184.         move.b    #"0",Dec_Buffer+6
  1185. No_Space    move.l    #"LEVE",Dec_Buffer
  1186.         move.w    #"L ",Dec_Buffer+4
  1187.         BPRINT    0,1,40,Level_Text
  1188.         BPRINT    0,14,104,Dec_Buffer+6
  1189.         bsr    Wait_Fire
  1190.         bsr    Remove_Playfield
  1191.         rts
  1192.  
  1193. Create_Playfield
  1194.         move.l  #Planesize,d0
  1195.         move.l  #CHIP,d1
  1196.          CALLEXEC AllocMem
  1197.         move.l     d0,Plane0
  1198.         move.l    #CLsize,d0
  1199.         move.l    #Chip,d1
  1200.         CALLEXEC AllocMem
  1201.         move.l    d0,CLadr
  1202.         move.l    d0,a0
  1203.         move.l    Plane0,d1
  1204.         move.w    #BPL1PTH-$DFF000,d3
  1205.         move.w    #1-1,d4
  1206. MakeCL_X    move.w     d3,(a0)+
  1207.         addq.w    #2,d3
  1208.         swap    d1
  1209.         move.w    d1,(a0)+
  1210.         move.w    d3,(a0)+
  1211.         addq.w    #2,d3
  1212.         swap     d1
  1213.         move.w    d1,(a0)+
  1214.         add.l    #Planesize,d1
  1215.         dbra    d4,MakeCL_X
  1216.         move.l    a0,Target
  1217.         move.l    #$fffffffe,(a0)
  1218.         
  1219.         CALLEXEC Forbid
  1220.         
  1221.         move.w    #$03e0,DMACON
  1222.         clr.l    SPR0DAT
  1223.         move.l    CLadr,COP1LC
  1224.         clr.w    COPJMP1
  1225.         move.w    #$3081,DIWSTRT
  1226.         move.w     #$30c1,DIWSTOP
  1227.         move.w  #$0038,DDFSTRT
  1228.         move.w  #$00d0,DDFSTOP
  1229.         move.w  #%0001000000000000,BPLCON0
  1230.         clr.w    BPLCON1
  1231.         clr.w    BPLCON2
  1232.         clr.w    BPL1MOD
  1233.         clr.w    BPL2MOD
  1234.         move.w    #$8380,DMACON
  1235.         clr.w    $DFF180
  1236.         clr.w    $DFF182
  1237.         rts
  1238.  
  1239. Remove_Playfield
  1240.         move.l    _GfxBase,a4
  1241.         move.l    STARTLIST(a4),COP1LC
  1242.         clr.w    COPJMP1
  1243.         move.w    #$8060,DMACON
  1244.         CALLEXEC Permit
  1245.         move.l    CLadr,a1
  1246.         move.l    #CLsize,d0
  1247.         CALLEXEC FreeMem
  1248.         move.l  Plane0,a1
  1249.         move.l    #Planesize,d0
  1250.         CALLEXEC FreeMem
  1251.         rts
  1252.  
  1253. Wait_Fire    lea    Inter_Cols+256+64,a1
  1254.         sub.l    Inter_Offset,a1
  1255.         addq.l    #2,Inter_Offset
  1256.         and.l    #255,Inter_Offset
  1257.         move.l    #9,d3
  1258.         move.l    #$38,d0
  1259. Display_ICols    move.l    a1,a0
  1260.         addq.l    #4,a1
  1261.         move.l    #15,d2
  1262. Display_Inter    move.w    VHPOSR,d1
  1263.         lsr.w    #8,d1
  1264.         cmp.b    d0,d1
  1265.         bne    Display_Inter
  1266.         move.w    (a0)+,$DFF182
  1267.         addq.b    #1,d0
  1268.         dbra    d2,Display_Inter
  1269.         dbra    d3,Display_ICols
  1270.         btst    #7,CIAAPRA
  1271.         bne    Wait_Fire
  1272.         rts
  1273.  
  1274. Float        tst.l    Flow_Flag
  1275.         beq    Flow
  1276.         subq.l    #1,Flow_Delay
  1277.         beq    End_Flow_Delay
  1278.         rts
  1279. End_Flow_Delay    clr.l    Flow_Flag
  1280.         MPRINT    1,1,208,Clear_line
  1281.         rts
  1282. Flow        subq.l    #1,Splitter
  1283.         beq    Real_Float
  1284.         rts
  1285. Real_Float    move.l    #3,Splitter
  1286.         tst.l    Float_Flag
  1287.         bne    Lets_float
  1288.         rts
  1289. Lets_float    tst.l    Float_Count
  1290.         beq    New_Float
  1291.         subq.l    #1,Float_Count
  1292.         move.l    Plane0,a1
  1293.         add.l    #16*40+6,a1
  1294.         move.l    Float_X,d0
  1295.         mulu    #2,d0
  1296.         add.l    d0,a1
  1297.         move.l    Float_Y,d1
  1298.         mulu    #16*40,d1
  1299.         add.l    d1,a1
  1300.         move.l    #15,d1
  1301.         move.l    Float_Pointer,a0
  1302. Mark_Float    move.w    (a0)+,d0
  1303.         eor.w    #$ffff,d0
  1304.         and.w    d0,(a1)
  1305.         add.l    #Planesize,a1
  1306.         and.w    d0,(a1)
  1307.         add.l    #Planesize,a1
  1308.         and.w    d0,(a1)
  1309.         add.l    #Planesize,a1
  1310.         eor.w    #$ffff,d0
  1311.         or.w    d0,(a1)
  1312.         add.l    #40,a1
  1313.         sub.l    #3*Planesize,a1
  1314.         dbra    d1,Mark_Float
  1315.         tst.l    Float_Math
  1316.         bne    False_Dir_2
  1317.         add.l    #32,Float_Pointer
  1318.         rts
  1319. False_Dir_2    sub.l    #32,Float_Pointer
  1320.         rts
  1321.  
  1322. New_Float    tst.l    Text_Flag
  1323.         beq    No_Text
  1324.         subq.l    #1,Text_Delay
  1325.         bne    No_Text
  1326.         MPRINT    1,1,208,Clear_Line
  1327.         clr.l    Text_Flag
  1328. No_Text        move.l    #1,Delay_Flag
  1329.         move.l    Float_Dir,d4
  1330.         move.l    #8,Float_Count
  1331.         move.l    Float_Dir,d1
  1332.         mulu    #4,d1
  1333.         lea    Float_Add_X1,a0
  1334.         move.l    Float_X,d0
  1335.         add.l    (a0,d1),d0
  1336.         move.l    d0,Float_X
  1337.         lea    Float_Add_Y1,a0
  1338.         move.l    Float_Y,d0
  1339.         add.l    (a0,d1),d0
  1340.         move.l    d0,Float_Y
  1341.         cmp.l    #-1,Float_X
  1342.         beq    Game_Over
  1343.         cmp.l    #-1,Float_Y
  1344.         beq    Game_Over
  1345.         cmp.l    #16,Float_X
  1346.         beq    Game_Over
  1347.         cmp.l    #10,Float_Y
  1348.         beq    Game_Over
  1349.         lea    Level,a0
  1350.         add.l    Float_X,a0
  1351.         move.l    Float_Y,d0
  1352.         mulu    #16,d0
  1353.         add.l    d0,a0
  1354.         lea    Eingang_1,a1
  1355.         lea    Eingang_2,a2
  1356.         clr.l    d0
  1357.         move.b    (a0),d0
  1358.         move.l    d0,d7
  1359.         cmp.b    #7,d0
  1360.         bhi    Game_Over
  1361.         cmp.l    #3,d0
  1362.         beq    Eingang_Ok
  1363.         mulu    #4,d0
  1364.         add.l    d0,a1
  1365.         add.l    d0,a2
  1366.         move.l    Float_Dir,d0
  1367.         move.l    (a1),d1
  1368.         cmp.l    d0,d1
  1369.         beq    Eingang_Ok
  1370.         move.l    (a2),d1
  1371.         cmp.l    d0,d1
  1372.         beq    Eingang_Ok
  1373.         bra    Game_Over
  1374. Eingang_Ok    add.l    #15,Score
  1375.         lea    Floats,a0
  1376.         add.l    Float_X,a0
  1377.         move.l    Float_Y,d0
  1378.         mulu    #16,d0
  1379.         add.l    d0,a0
  1380.         tst.b    (a0)
  1381.         beq    No_Crossbonus
  1382.         MPRINT    1,1,208,Cross_Line
  1383.         add.l    #100,Score
  1384. No_Crossbonus    move.b    #1,(a0)
  1385.         lea    Special,a0
  1386.         add.l    Float_X,a0
  1387.         move.l    Float_Y,d0
  1388.         mulu    #16,d0
  1389.         add.l    d0,a0
  1390.         clr.l    d0
  1391.         move.b    (a0),d0
  1392.         tst.b    d0
  1393.         beq    No_Special
  1394.         addq.l    #1,Num_Specials
  1395.         bclr    #6,d0
  1396.         mulu    #4,d0
  1397.         lea    Special_Jmps_1,a0
  1398.         move.l    (a0,d0),a0
  1399.         movem.l    d0-d7/a0-a6,-(sp)
  1400.         jsr    (a0)
  1401.         movem.l    (sp)+,d0-d7/a0-a6
  1402. No_Special    lea    Ausgang_1,a0
  1403.         lea    Ausgang_2,a1
  1404.         move.l    d7,d6
  1405.         cmp.l    #3,d7
  1406.         beq    Cross
  1407.         mulu    #4,d7
  1408.         add.l    d7,a0
  1409.         add.l    d7,a1
  1410.         lea    Dir_Negations,a2
  1411.         move.l    Float_Dir,d0
  1412.         mulu    #4,d0
  1413.         add.l    d0,a2
  1414.         move.l    (a2),d0
  1415.         move.l    (a0),d1
  1416.         cmp.l    d0,d1
  1417.         bne    New_Dir
  1418.         move.l    (a1),d1
  1419. New_Dir        move.l    d1,Float_Dir
  1420.         cmp.l    #3,d6
  1421.         beq    Cross_2
  1422.         move.l    d1,d0
  1423.         mulu    #4,d0
  1424.         lea    Kind,a0
  1425.         move.l    d6,d5
  1426.         mulu    #4,d5
  1427.         add.l    d5,a0
  1428.         move.l    (a0),d5
  1429.         mulu    #16,d5
  1430.         lea    Zero,a0
  1431.         add.l    d5,a0
  1432.         mulu    #4,d4
  1433.         add.l    d4,a0
  1434.         move.l    (a0),Float_Math
  1435.         cmp.l    #-1,Float_Math
  1436.         beq    Game_Over
  1437.         lea    Float_Ptrs,a0
  1438.         mulu    #4,d6
  1439.         add.l    d6,a0
  1440.         move.l    (a0),Float_Pointer
  1441.         tst.l    Float_Math
  1442.         beq    Ptr_Ok
  1443.         add.l    #7*2*16,Float_Pointer
  1444. Ptr_OK        move.l    PlayFloat,d3
  1445.         add.l    d3,Float_Pointer
  1446.         bra    Float
  1447. Cross        move.l    Float_Dir,d1
  1448.         bra    New_Dir
  1449. Cross_2        lea    Crosskind,a0
  1450.         move.l    Float_Dir,d0
  1451.         mulu    #4,d0
  1452.         add.l    d0,a0
  1453.         lea    Crossptr,a1
  1454.         lea    Crossmath,a2
  1455.         add.l    (a0),a1
  1456.         add.l    (a0),a2
  1457.         move.l    (a1),Float_Pointer
  1458.         move.l    (a2),Float_Math
  1459.         bra    Ptr_OK
  1460. False_Dir    add.l    #8*2*16,Float_Pointer
  1461.         bra    Float
  1462. Game_Over    move.l    FinishFlag,Status
  1463.         addq.l    #1,Status
  1464.         rts
  1465.  
  1466. Special_0    MPRINT    1,1,208,Spec0_Line
  1467.         move.l    #1,Flow_Flag
  1468.         move.l    #60,Flow_Delay
  1469.         rts
  1470.  
  1471. Special_1    MPRINT    1,1,208,Spec1_Line
  1472.         add.l    #500,Score
  1473.         rts
  1474.  
  1475. Special_2    bsr    RND
  1476.         and.l    #15,d0
  1477.         cmp.l    #12,d0
  1478.         bhi    Special_2
  1479.         lea    RND_Jmps,a0
  1480.         mulu    #4,d0
  1481.         move.l    (a0,d0),a0
  1482.         jsr    (a0)
  1483.         rts
  1484.  
  1485. Special_3    MPRINT    1,1,208,Spec3_Line
  1486.         move.l    #1,Time_Flag
  1487.         move.l    #60,Time_Delay
  1488.         rts
  1489.  
  1490. Sub_Time    tst.l    FinishFlag
  1491.         bne    BackAtOnce
  1492.         tst.l    Time_Flag
  1493.         beq    Do_Sub_Time
  1494.         subq.l    #1,Time_Delay
  1495.         beq    End_Time_Delay
  1496.         rts
  1497. End_Time_Delay    clr.l    Time_Flag
  1498.         rts
  1499. Do_Sub_Time    subq.l    #1,Time_Split
  1500.         beq    New_Time
  1501.         rts
  1502. New_Time    move.l    #20,Time_Split
  1503.         addq.l    #1,Time
  1504.         bsr    Show_Time
  1505.         move.l    #20,d0
  1506.         move.l    Play_Level,d1
  1507.         cmp.l    #38,d1
  1508.         bls    No_High
  1509.         move.l    #38,d1
  1510. No_High        divu    #2,d1
  1511.         and.l    #$ffff,d1
  1512.         sub.l    d1,d0
  1513.         cmp.l    Time,d0
  1514.         beq    Start_Floating
  1515.         rts
  1516. Start_Floating    move.l    #1,Float_Flag
  1517.  
  1518. Show_Time    move.l    Plane0,a0
  1519.         add.l    #4*Planesize,a0
  1520.         add.l    #7*16*40+80,a0
  1521.         move.l    Time,d0
  1522.         mulu    #40,d0
  1523.         add.l    d0,a0
  1524.         clr.l    (a0)
  1525.         rts
  1526.  
  1527. Check_Joy    tst.l    FinishFlag
  1528.         bne    BackAtOnce
  1529.         tst.l    Joy_Flag
  1530.         beq    Do_Joy
  1531.         subq.l    #1,Joy_Delay
  1532.         beq    End_Joy_Delay
  1533.         rts
  1534. End_Joy_Delay    clr.l    Joy_Flag
  1535.         rts
  1536. Do_Joy        bsr    Del_Crsr
  1537.         bsr    Test_Joy
  1538.         bsr    Set_Crsr
  1539.         btst    #7,CIAAPRA
  1540.         beq    Fire
  1541.         rts
  1542. Fire        lea    Level,a0
  1543.         add.l    Crsr_X,a0
  1544.         move.l    Crsr_Y,d0
  1545.         mulu    #16,d0
  1546.         add.l    d0,a0
  1547.         cmp.b    #32,(a0)
  1548.         beq    Scroll_Next
  1549.         tst.b    (a0)
  1550.         bne    End_Fire
  1551.         move.b    Next+4,(a0)
  1552.         move.l    Crsr_X,d0
  1553.         move.l    Crsr_Y,d1
  1554.         clr.l    d2
  1555.         move.b    Next+4,d2
  1556.         bsr    Show_Obj
  1557. Scroll_Next    move.b    Next+3,Next+4
  1558.         move.b    Next+2,Next+3
  1559.         move.b    Next+1,Next+2
  1560.         move.b    Next+0,Next+1
  1561. Get_Next_obj    bsr    RND
  1562.         and.l    #7,d0
  1563.         beq    Get_Next_obj
  1564.         move.b    d0,Next
  1565.         bsr    Display_Next
  1566. End_Fire    rts
  1567.  
  1568. Set_Crsr    move.l    Plane0,a0
  1569.         add.l    #4*Planesize,a0
  1570.         add.l    #16*40+6,a0
  1571.         move.l    Crsr_X,d0
  1572.         mulu    #2,d0
  1573.         add.l    d0,a0
  1574.         move.l    Crsr_Y,d0
  1575.         mulu    #16*40,d0
  1576.         add.l    d0,a0
  1577.         move.w    #$ffff,(a0)
  1578.         move.w    #$ffff,40(a0)
  1579.         move.w    #$ffff,14*40(a0)
  1580.         move.w    #$ffff,15*40(a0)
  1581.         add.l    #2*40,a0
  1582.         move.l    #11,d0
  1583. Set_Cursor    move.w    #%1100000000000011,(a0)
  1584.         add.l    #40,a0
  1585.         dbra    d0,Set_Cursor
  1586.         rts
  1587.  
  1588. Del_Crsr    move.l    Plane0,a0
  1589.         add.l    #4*Planesize,a0
  1590.         add.l    #16*40+6,a0
  1591.         move.l    Crsr_X,d0
  1592.         mulu    #2,d0
  1593.         add.l    d0,a0
  1594.         move.l    Crsr_Y,d0
  1595.         mulu    #16*40,d0
  1596.         add.l    d0,a0
  1597.         move.l    #15,d0
  1598. Del_Cursor    clr.w    (a0)
  1599.         add.l    #40,a0
  1600.         dbra    d0,Del_Cursor
  1601.         rts
  1602.  
  1603. Test_Joy    clr.l    Change_X
  1604.         clr.l    Change_Y
  1605.         move.w    JOY1DAT,d0
  1606.         btst    #1,d0
  1607.         beq    Not_Right
  1608.         addq.l    #1,Crsr_X
  1609.         move.l    #-2,Change_X
  1610.         btst    #0,d0
  1611.         bne    Joy_Y
  1612.         addq.l    #1,Crsr_Y
  1613.         move.l    #-2,Change_Y
  1614. Not_Right    btst    #0,d0
  1615.         beq    Joy_Y
  1616.         addq.l    #1,Crsr_Y
  1617.         move.l    #-2,Change_Y
  1618. Joy_Y        btst    #9,d0
  1619.         beq    Not_Left
  1620.         subq.l    #1,Crsr_X
  1621.         move.l    #2,Change_X
  1622.         btst    #8,d0
  1623.         bne    Tst_X
  1624.         subq.l    #1,Crsr_Y
  1625.         move.l    #2,Change_Y
  1626. Not_Left    btst    #8,d0
  1627.         beq    Tst_X
  1628.         subq.l    #1,Crsr_Y
  1629.         move.l    #2,Change_Y
  1630. Tst_X        tst.l    Joy_Revers
  1631.         beq    No_Revers
  1632.         move.l    Change_X,d0
  1633.         add.l    d0,Crsr_X
  1634.         move.l    Change_Y,d0
  1635.         add.l    d0,Crsr_Y
  1636. No_Revers    move.l    Crsr_X,d0
  1637.         bpl    Not_NegX
  1638.         clr.l    Crsr_X
  1639. Not_NegX    cmp.l    #15,d0
  1640.         ble    Tst_Y
  1641.         move.l    #15,Crsr_X
  1642. Tst_Y        move.l    Crsr_Y,d0
  1643.         bpl    Not_NegY
  1644.         clr.l    Crsr_Y
  1645. Not_NegY    cmp.l    #9,d0
  1646.         ble    End_Joy
  1647.         move.l    #9,Crsr_Y
  1648. End_Joy        rts
  1649.  
  1650. Delay        tst.l    FinishFlag
  1651.         bne    FastFlow
  1652.         tst.l    EscFlag
  1653.         bne    FastFlow
  1654.         tst.l    Delay_Flag
  1655.         bne    Short_One
  1656.         move.l    #9,d0
  1657.         bra    Delay_Loop_1
  1658. Short_One    clr.l    Delay_Flag
  1659.         move.l    #5,d0
  1660.         bra    Delay_Loop_1
  1661. FastFlow    move.l    #1,d0
  1662.         bra    Delay_Loop_1
  1663. Delay_Loop_1    move.l    #$fff,d1
  1664. Delay_Loop_2    dbra    d1,Delay_Loop_2
  1665.         dbra    d0,Delay_Loop_1
  1666. BackAtOnce    rts
  1667.  
  1668. Show_Obj    move.l    Plane0,a0
  1669.         add.l    #16*40+6,a0
  1670.         mulu    #2,d0
  1671.         add.l    d0,a0
  1672.         mulu    #16*40,d1
  1673.         add.l    d1,a0
  1674.         move.l    PlayObj,a1
  1675.         mulu    #4*2*16,d2
  1676.         add.l    d2,a1
  1677.         move.l    #3,d7
  1678. Display_Obj    move.l    a0,a2
  1679.         move.l    #15,d6
  1680. Show_Obj_Plane    move.w    (a1)+,(a2)
  1681.         add.l    #40,a2
  1682.         dbra    d6,Show_Obj_Plane
  1683.         add.l    #Planesize,a0
  1684.         dbra    d7,Display_Obj
  1685.         rts
  1686.  
  1687. Display_Next    lea    Next,a5
  1688.         move.l    Plane0,a4
  1689.         add.l    #14*40+1,a4
  1690.         move.l    #4,d7
  1691. Show_Next    clr.l    d0
  1692.         move.b    (a5)+,d0
  1693.         mulu    #4*2*16,d0
  1694.         move.l    PlayObj,a0
  1695.         add.l    d0,a0
  1696.         move.l    a4,a3
  1697.         move.l    #3,d6
  1698. Copy_Next    move.l    a3,a2
  1699.         move.l    #15,d5
  1700. Copy_Next_Plane    move.b    (a0)+,(a2)
  1701.         move.b    (a0)+,1(a2)
  1702.         add.l    #40,a2
  1703.         dbra    d5,Copy_Next_Plane
  1704.         add.l    #Planesize,a3
  1705.         dbra    d6,Copy_Next
  1706.         add.l    #16*40,a4
  1707.         dbra    d7,Show_Next
  1708.         rts
  1709.  
  1710. RND        move.w    $dff006,d0
  1711.         lsr.w    #8,d0
  1712.         move.w    $dff006,d1
  1713.         lsr.w    #1,d1
  1714.         eor.l    d1,d0
  1715.         move.w    $dff006,d1
  1716.         lsr.w    #5,d1
  1717.         eor.l    d1,d0
  1718.         move.w    $dff006,d1
  1719.         lsr.w    #3,d1
  1720.         eor.l    d1,d0
  1721.         rts
  1722.  
  1723. Show_Score    move.l    Score,d2
  1724.         bsr    BinDec
  1725.         PRINT    4,7,195,Dec_Buffer+1
  1726.         rts
  1727.  
  1728. BinDec        move.l    #7,d0
  1729.         lea    Dec_Buffer,a0
  1730.         lea    pwrof10,a1
  1731. BD_Next        move.l    #"0",d1
  1732. Dec        add.l    #1,d1
  1733.         sub.l    (a1),d2
  1734.         bcc    Dec
  1735.         subq.l    #1,d1
  1736.         add.l    (a1),d2
  1737.         move.b    d1,(a0)+
  1738.         lea    4(a1),a1
  1739.         dbra    d0,BD_Next
  1740.         lea    Dec_Buffer,a0
  1741.         move.l    #6,d0
  1742. Del_Zeros    cmp.b    #"0",(a0)
  1743.         bne    End_Del_Zeros
  1744.         move.b    #" ",(a0)+
  1745.         dbra    d0,Del_Zeros
  1746. End_Del_Zeros    rts
  1747.  
  1748. Print_Text    clr.l    d0
  1749.         move.b    (a0)+,d0
  1750.         tst.l    d0
  1751.         beq    EOT
  1752.         sub.b    #$20,d0
  1753.         mulu    #8,d0
  1754.         move.l    PlayFont,a2
  1755.         add.l    d0,a2
  1756.         move.l    a1,a3
  1757.         move.l    #7,d1
  1758. Copy_Char    move.b    (a2)+,(a3)
  1759.         add.l    #40,a3
  1760.         dbra    d1,Copy_Char
  1761.         addq.l    #1,a1
  1762.         bra    Print_Text
  1763. EOT        rts
  1764.  
  1765. BPrint_Text    clr.l    d0
  1766.         move.b    (a0)+,d0
  1767.         tst.l    d0
  1768.         beq    EOT_2
  1769.         sub.b    #$20,d0
  1770.         mulu    #8,d0
  1771.         move.l    PlayFont,a2
  1772.         add.l    d0,a2
  1773.         move.l    a1,a3
  1774.         move.l    #7,d1
  1775. Create_Lines    move.l    a3,a4
  1776.         move.l    #7,d2
  1777. Create_Line    btst    d2,(a2)
  1778.         beq    No_Bit
  1779.         move.b    #$ff,(a4)
  1780.         move.b    #$ff,40(a4)
  1781.         move.b    #$ff,80(a4)
  1782.         move.b    #$ff,120(a4)
  1783.         move.b    #$ff,160(a4)
  1784.         move.b    #$ff,200(a4)
  1785.         move.b    #$ff,240(a4)
  1786.         move.b    #$ff,280(a4)
  1787. No_Bit        addq.l    #1,a4
  1788.         dbra    d2,Create_Line
  1789.         bne    Create_Line
  1790.         add.l    #8*40,a3
  1791.         add.l    #1,a2
  1792.         dbra    d1,Create_Lines
  1793.         add.l    #8,a1
  1794.         bra    BPrint_Text
  1795. EOT_2        rts
  1796.  
  1797. S0        bsr    Check_Room
  1798.         tst.l    d0
  1799.         beq    Ok_2
  1800.         bra    S1
  1801. Ok_2        MPRINT    1,1,208,S0_Text
  1802. Set        bsr    RND
  1803.         and.l    #15,d0
  1804.         move.l    d0,d6
  1805. SGet_Wall_Y    bsr    RND
  1806.         and.l    #15,d0
  1807.         cmp.l    #9,d0
  1808.         bhi    SGet_Wall_Y
  1809.         move.l    d0,d1
  1810.         move.l    d6,d0
  1811.         lea    Level,a0
  1812.         add.l    d0,a0
  1813.         mulu    #16,d1
  1814.         add.l    d1,a0
  1815.         tst.b    (a0)
  1816.         bne    Set
  1817.         move.b    #16,(a0)
  1818.         divu    #16,d1
  1819.         move.l    #13,d2
  1820.         bsr    Show_Obj
  1821.         rts
  1822.  
  1823. Check_Room    lea    Level,a0
  1824.         move.l    #16*10-1,d0
  1825.         clr.l    d1
  1826. Count_Free    cmp.b    #0,(a0)
  1827.         bne    No_Blank
  1828.         addq.l    #1,d1
  1829. No_Blank    addq.l    #1,a0
  1830.         dbra    d0,Count_Free
  1831.         cmp.l    #50,d1
  1832.         bls    No_Room
  1833.         clr.l    d0
  1834.         rts
  1835. No_Room        move.l    #1,d0
  1836.         rts
  1837.  
  1838. S1        MPRINT    1,1,208,S1_Text
  1839.         add.l    #600,Score
  1840.         rts
  1841.  
  1842. S2        bsr    Check_Room
  1843.         tst.l    d0
  1844.         beq    Ok_1
  1845.         bra    S1
  1846. Ok_1        MPRINT    1,1,208,S2_Text
  1847. Set_2        bsr    RND
  1848.         and.l    #15,d0
  1849.         move.l    d0,d6
  1850. Get_Hole_Y    bsr    RND
  1851.         and.l    #15,d0
  1852.         cmp.l    #9,d0
  1853.         bhi    Get_Hole_Y
  1854.         move.l    d0,d1
  1855.         move.l    d6,d0
  1856.         lea    Level,a0
  1857.         add.l    d0,a0
  1858.         mulu    #16,d1
  1859.         add.l    d1,a0
  1860.         tst.b    (a0)
  1861.         bne    Set_2
  1862.         move.b    #32,(a0)
  1863.         divu    #16,d1
  1864.         move.l    Plane0,a0
  1865.         add.l    #16*40+6,a0
  1866.         mulu    #2,d0
  1867.         add.l    d0,a0
  1868.         mulu    #16*40,d1
  1869.         add.l    d1,a0
  1870.         move.l    #15,d0
  1871. Set_Black_Hole    clr.w    (a0)
  1872.         add.l    #Planesize,a0
  1873.         clr.w    (a0)
  1874.         add.l    #Planesize,a0
  1875.         clr.w    (a0)
  1876.         add.l    #Planesize,a0
  1877.         clr.w    (a0)
  1878.         sub.l    #3*Planesize,a0
  1879.         add.l    #40,a0
  1880.         dbra    d0,Set_Black_Hole
  1881.         rts
  1882.  
  1883. S3        MPRINT    1,1,208,S3_Text
  1884.         rts
  1885.  
  1886. S4        MPRINT    1,1,208,S4_Text
  1887.         move.l    #1,Time_Flag
  1888.         move.l    #60,Time_Delay
  1889.         rts
  1890.  
  1891. S5        MPRINT    1,1,208,S5_Text
  1892.         move.l    #1,Flow_Flag
  1893.         move.l    #60,Flow_Delay
  1894.         rts
  1895.  
  1896. S6        MPRINT    1,1,208,S6_Text
  1897.         cmp.l    #200,Score
  1898.         bls    Gets_Zero
  1899.         sub.l    #200,Score
  1900.         rts
  1901. Gets_Zero    clr.l    Score
  1902.         rts
  1903.  
  1904. S7        MPRINT    1,1,208,S7_Text
  1905.         rts
  1906.  
  1907. S8        MPRINT    1,1,208,S8_Text
  1908.         move.l    #1,Joy_Flag
  1909.         move.l    #60,Joy_Delay
  1910.         rts
  1911.  
  1912. S9        MPRINT    1,1,208,S9_Text
  1913.         move.l    #1,Joy_Revers
  1914.         rts
  1915.  
  1916. S10        MPRINT    1,1,208,S10_Text
  1917.         move.l    #0,d1
  1918.         lea    Level,a0
  1919. Delete_Loop    move.l    #0,d0
  1920. Delete_L2    cmp.b    #16,(a0)
  1921.         bne    No_Wall
  1922.         clr.b    (a0)
  1923.         movem.l    d0-d7/a0-a6,-(sp)
  1924.         move.l    #0,d2
  1925.         bsr    Show_Obj
  1926.         movem.l    (sp)+,d0-d7/a0-a6
  1927. No_Wall        addq.l    #1,a0
  1928.         addq.l    #1,d0
  1929.         cmp.l    #16,d0
  1930.         bne    Delete_L2
  1931.         addq.l    #1,d1
  1932.         cmp.l    #10,d1
  1933.         bne    Delete_Loop
  1934.         rts
  1935.  
  1936. S11        MPRINT    1,1,208,S11_Text
  1937.         move.l    #0,d1
  1938.         lea    Level,a0
  1939.         lea    Special,a1
  1940. Change_Loop    move.l    #0,d0
  1941. Change_L2    cmp.b    #16,(a0)
  1942.         bne    No_Wall_2
  1943.         movem.l    d0-d7/a0-a6,-(sp)
  1944.         bsr    RND
  1945.         and.l    #3,d0
  1946.         cmp.l    #1,d0
  1947.         bne    No_Change
  1948.         movem.l    (sp)+,d0-d7/a0-a6
  1949.         movem.l    d0-d7/a0-a6,-(sp)
  1950.         clr.b    (a0)
  1951.         move.b    #64+1,(a1)
  1952.         move.l    #15,d2
  1953.         bsr    Show_Obj
  1954. No_Change    movem.l    (sp)+,d0-d7/a0-a6
  1955. No_Wall_2    addq.l    #1,a0
  1956.         addq.l    #1,a1
  1957.         addq.l    #1,d0
  1958.         cmp.l    #16,d0
  1959.         bne    Change_L2
  1960.         addq.l    #1,d1
  1961.         cmp.l    #10,d1
  1962.         bne    Change_Loop
  1963.         rts
  1964.  
  1965. S12        MPRINT    1,1,208,S12_Text
  1966.         move.w    #$700,$DFF180+16
  1967.         rts
  1968.  
  1969. *** Replay-routine taken from SOUNDTRACKER and converted to DevPac ***
  1970.  
  1971.         SECTION    "Replay",CODE_C
  1972.  
  1973. start:    bsr.s    start_muzak
  1974.     rts
  1975.  
  1976. start_muzak:
  1977.     move.l    #data,muzakoffset
  1978.  
  1979. init0:    move.l    muzakoffset,a0
  1980.     add.l    #472,a0
  1981.     move.l    #$80,d0
  1982.     clr.l    d1
  1983. init1:    move.l    d1,d2
  1984.     subq.w    #1,d0
  1985. init2:    move.b    (a0)+,d1
  1986.     cmp.b    d2,d1
  1987.     bgt.s    init1
  1988.     dbf    d0,init2
  1989.     addq.b    #1,d2
  1990.  
  1991. init3:    move.l    muzakoffset,a0
  1992.     lea    pointers(pc),a1
  1993.     lsl.l    #8,d2
  1994.     lsl.l    #2,d2
  1995.     add.l    #600,d2
  1996.     add.l    a0,d2
  1997.     moveq    #14,d0
  1998. init4:    move.l    d2,(a1)+
  1999.     clr.l    d1
  2000.     move.w    42(a0),d1
  2001.     lsl.l    #1,d1
  2002.     add.l    d1,d2
  2003.     add.l    #30,a0
  2004.     dbf    d0,init4
  2005.  
  2006. init5:    clr.w    $dff0a8
  2007.     clr.w    $dff0b8
  2008.     clr.w    $dff0c8
  2009.     clr.w    $dff0d8
  2010.     clr.w    timpos
  2011.     clr.l    trkpos
  2012.     clr.l    patpos
  2013.  
  2014. init6:    move.l    muzakoffset,a0
  2015.     move.b    470(a0),numpat+1
  2016.     move.l    $6c.w,lev3save+2
  2017.     move.l    #lev3interrupt,$6c.w
  2018.     rts
  2019.  
  2020. stop_muzak:
  2021.     move.l    lev3save+2,$6c.w
  2022.     clr.w    $dff0a8
  2023.     clr.w    $dff0b8
  2024.     clr.w    $dff0c8
  2025.     clr.w    $dff0d8
  2026.     move.w    #$f,$dff096
  2027.     rts
  2028.  
  2029. lev3interrupt:
  2030.     bsr.s    replay_muzak
  2031. lev3save:
  2032.     jmp    $0
  2033.  
  2034. replay_muzak:
  2035.     movem.l    d0-d7/a0-a6,-(a7)
  2036.     addq.w    #1,timpos
  2037. speed:    cmp.w    #6,timpos
  2038.     beq.w    replaystep
  2039.  
  2040. chaneleffects:
  2041.     lea    datach0(pc),a6
  2042.     tst.b    3(a6)
  2043.     beq.s    ceff1
  2044.     lea    $dff0a0,a5
  2045.     bsr.s    ceff5
  2046. ceff1:    lea    datach1(pc),a6
  2047.     tst.b    3(a6)
  2048.     beq.s    ceff2
  2049.     lea    $dff0b0,a5
  2050.     bsr.s    ceff5
  2051. ceff2:    lea    datach2(pc),a6
  2052.     tst.b    3(a6)
  2053.     beq.s    ceff3
  2054.     lea    $dff0c0,a5
  2055.     bsr.s    ceff5
  2056. ceff3:    lea    datach3(pc),a6
  2057.     tst.b    3(a6)
  2058.     beq.s    ceff4
  2059.     lea    $dff0d0,a5
  2060.     bsr.s    ceff5
  2061. ceff4:    movem.l    (a7)+,d0-d7/a0-a6
  2062.     rts
  2063.  
  2064. ceff5:    move.b    2(a6),d0
  2065.     and.b    #$f,d0
  2066.     tst.b    d0
  2067.     beq.s    arpreggiato
  2068.     cmp.b    #1,d0
  2069.     beq.w    pitchup
  2070.     cmp.b    #2,d0
  2071.     beq.w    pitchdown
  2072.     cmp.b    #12,d0
  2073.     beq.w    setvol
  2074.     cmp.b    #14,d0
  2075.     beq.w    setfilt
  2076.     cmp.b    #15,d0
  2077.     beq.w    setspeed
  2078.     rts
  2079.  
  2080. arpreggiato:
  2081.     cmp.w    #1,timpos
  2082.     beq.s    arp1
  2083.     cmp.w    #2,timpos
  2084.     beq.s    arp2
  2085.     cmp.w    #3,timpos
  2086.     beq.s    arp3
  2087.     cmp.w    #4,timpos
  2088.     beq.s    arp1
  2089.     cmp.w    #5,timpos
  2090.     beq.s    arp2
  2091.     rts
  2092.  
  2093. arp1:    clr.l    d0
  2094.     move.b    3(a6),d0
  2095.     lsr.b    #4,d0
  2096.     bra.s    arp4
  2097. arp2:    clr.l    d0
  2098.     move.b    3(a6),d0
  2099.     and.b    #$f,d0
  2100.     bra.s    arp4
  2101. arp3:    move.w    16(a6),d2
  2102.     bra.s    arp6
  2103. arp4:    lsl.w    #1,d0
  2104.     clr.l    d1
  2105.     move.w    16(a6),d1
  2106.     lea    notetable,a0
  2107. arp5:    move.w    (a0,d0.w),d2
  2108.     cmp.w    (a0),d1
  2109.     beq.s    arp6
  2110.     addq.l    #2,a0
  2111.     bra.s    arp5
  2112. arp6:    move.w    d2,6(a5)
  2113.     rts
  2114.  
  2115. pitchdown:
  2116.     bsr.s    newrou
  2117.     clr.l    d0
  2118.     move.b    3(a6),d0
  2119.     and.b    #$f,d0
  2120.     add.w    d0,(a4)
  2121.     cmp.w    #$358,(a4)
  2122.     bmi.s    ok1
  2123.     move.w    #$358,(a4)
  2124. ok1:    move.w    (a4),6(a5)
  2125.     rts
  2126.  
  2127. pitchup:bsr.s    newrou
  2128.     clr.l    d0
  2129.     move.b    3(a6),d0
  2130.     and.b    #$f,d0
  2131.     sub.w    d0,(a4)
  2132.     cmp.w    #$71,(a4)
  2133.     bpl.s    ok2
  2134.     move.w    #$71,(a4)
  2135. ok2:    move.w    (a4),6(a5)
  2136.     rts
  2137.  
  2138. setvol:    move.b    3(a6),8(a5)
  2139.     rts
  2140.  
  2141. setfilt:move.b    3(a6),d0
  2142.     and.b    #1,d0
  2143.     lsl.b    #1,d0
  2144.     and.b    #$fd,$bfe001
  2145.     or.b    d0,$bfe001
  2146.     rts
  2147.  
  2148. setspeed:
  2149.     clr.l    d0
  2150.     move.b    3(a6),d0
  2151.     and.b    #$f,d0
  2152.     move.w    d0,speed+2
  2153.     rts
  2154.  
  2155. newrou:    cmp.l    #datach0,a6
  2156.     bne.s    next1
  2157.     lea    voi1(pc),a4
  2158.     rts
  2159. next1:    cmp.l    #datach1,a6
  2160.     bne.s    next2
  2161.     lea    voi2(pc),a4
  2162.     rts
  2163. next2:    cmp.l    #datach2,a6
  2164.     bne.s    next3
  2165.     lea    voi3(pc),a4
  2166.     rts
  2167. next3:    lea    voi4(pc),a4
  2168.     rts
  2169.  
  2170. replaystep:
  2171.     clr.w    timpos
  2172.     move.l    muzakoffset,a0
  2173.     move.l    a0,a3
  2174.     add.l    #12,a3
  2175.     move.l    a0,a2
  2176.     add.l    #472,a2
  2177.     add.l    #600,a0
  2178.     clr.l    d1
  2179.     move.l    trkpos,d0
  2180.     move.b    (a2,d0),d1
  2181.     lsl.l    #8,d1
  2182.     lsl.l    #2,d1
  2183.     add.l    patpos,d1
  2184.     clr.w    enbits
  2185.     lea    $dff0a0,a5
  2186.     lea    datach0(pc),a6
  2187.     bsr.w    chanelhandler
  2188.     lea    $dff0b0,a5
  2189.     lea    datach1(pc),a6
  2190.     bsr.w    chanelhandler
  2191.     lea    $dff0c0,a5
  2192.     lea    datach2(pc),a6
  2193.     bsr.w    chanelhandler
  2194.     lea    $dff0d0,a5
  2195.     lea    datach3(pc),a6
  2196.     bsr.w    chanelhandler
  2197.     move.w    #400,d0
  2198. rep1:    dbf    d0,rep1
  2199.     move.w    #$8000,d0
  2200.     or.w    enbits,d0
  2201.     move.w    d0,$dff096
  2202.     cmp.w    #1,datach0+14
  2203.     bne.s    rep2
  2204.     clr.w    datach0+14
  2205.     move.w    #1,$dff0a4
  2206. rep2:    cmp.w    #1,datach1+14
  2207.     bne.s    rep3
  2208.     clr.w    datach1+14
  2209.     move.w    #1,$dff0b4
  2210. rep3:    cmp.w    #1,datach2+14
  2211.     bne.s    rep4
  2212.     clr.w    datach2+14
  2213.     move.w    #1,$dff0c4
  2214. rep4:    cmp.w    #1,datach3+14
  2215.     bne.s    rep5
  2216.     clr.w    datach3+14
  2217.     move.w    #1,$dff0d4
  2218.  
  2219. rep5:    add.l    #16,patpos
  2220.     cmp.l    #64*16,patpos
  2221.     bne.s    rep6
  2222.     clr.l    patpos
  2223.     addq.l    #1,trkpos
  2224.     clr.l    d0
  2225.     move.w    numpat,d0
  2226.     cmp.l    trkpos,d0
  2227.     bne.s    rep6
  2228.     clr.l    trkpos
  2229. rep6:    movem.l    (a7)+,d0-d7/a0-a6
  2230.     rts
  2231.  
  2232. chanelhandler:
  2233.     move.l    (a0,d1.l),(a6)
  2234.     addq.l    #4,d1
  2235.     clr.l    d2
  2236.     move.b    2(a6),d2
  2237.     lsr.b    #4,d2
  2238.     beq.s    chan2
  2239.     move.l    d2,d4
  2240.     lsl.l    #2,d2
  2241.     mulu    #30,d4
  2242.     lea    pointers-4(pc),a1
  2243.     move.l    (a1,d2.l),4(a6)
  2244.     move.w    (a3,d4.l),8(a6)
  2245.     move.w    2(a3,d4.l),18(a6)
  2246.  
  2247.     move.l    d0,-(a7)
  2248.     move.b    2(a6),d0
  2249.     and.b    #$f,d0
  2250.     cmp.b    #$c,d0
  2251.     bne.s    ok3
  2252.     move.b    3(a6),8(a5)
  2253.     bra.s    ok4
  2254. ok3:    move.w    2(a3,d4.l),8(a5)
  2255. ok4:    move.l    (a7)+,d0
  2256.  
  2257.     clr.l    d3
  2258.     move.w    4(a3,d4),d3
  2259.     add.l    4(a6),d3
  2260.     move.l    d3,10(a6)
  2261.     move.w    6(a3,d4),14(a6)
  2262.     cmp.w    #1,14(a6)
  2263.     beq.s    chan2
  2264.     move.l    10(a6),4(a6)
  2265.     move.w    6(a3,d4),8(a6)
  2266. chan2:    tst.w    (a6)
  2267.     beq.s    chan4
  2268.     move.w    22(a6),$dff096
  2269.     tst.w    14(a6)
  2270.     bne.s    chan3
  2271.     move.w    #1,14(a6)
  2272. chan3:    bsr.w    newrou
  2273.     move.w    (a6),(a4)
  2274.     move.w    (a6),16(a6)
  2275.     move.l    4(a6),0(a5)
  2276.     move.w    8(a6),4(a5)
  2277.     move.w    (a6),6(a5)
  2278.     move.w    22(a6),d0
  2279.     or.w    d0,enbits
  2280.     move.w    18(a6),20(a6)
  2281. chan4:    rts
  2282.  
  2283. datach0:    ds.w    11
  2284.         dc.w    1
  2285. datach1:    ds.w    11
  2286.         dc.w    2
  2287. datach2:    ds.w    11
  2288.         dc.w    4
  2289. datach3:    ds.w    11
  2290.         dc.w    8
  2291. voi1:        dc.w    0
  2292. voi2:        dc.w    0
  2293. voi3:        dc.w    0
  2294. voi4:        dc.w    0
  2295. pointers:    ds.l    15
  2296. notetable:    dc.w    856,808,762,720,678,640,604,570
  2297.         dc.w    538,508,480,453,428,404,381,360
  2298.         dc.w    339,320,302,285,269,254,240,226  
  2299.         dc.w    214,202,190,180,170,160,151,143
  2300.         dc.w    135,127,120,113,000
  2301. muzakoffset:    dc.l    0
  2302. trkpos:        dc.l    0
  2303. patpos:        dc.l    0
  2304. numpat:        dc.w    0
  2305. enbits:        dc.w    0
  2306. timpos:        dc.w    0
  2307. data:        INCBIN    "PIPELINE:Pipeline/data/Pipesong.MUS"
  2308.  
  2309. ***** Vars *****
  2310.  
  2311. Plane0        ds.l    1
  2312. CLadr        ds.l    1        
  2313. Colors        dc.w    $000,$ddd,$555,$888,$aaa,$f12,$a00,$700
  2314.         dc.w    $dd0,$050,$080,$0f0,$00e,$55f,$99f,$c08
  2315.         dc.w    $fff,$fff,$fff,$fff,$fff,$fff,$fff,$fff
  2316.         dc.w    $fff,$fff,$fff,$fff,$fff,$fff,$fff,$fff
  2317. Crsr_X        dc.l    0
  2318. Crsr_Y        dc.l    0
  2319. Start_X        dc.l    0
  2320. Start_Y        dc.l    0
  2321. PlayPic        dc.l    0
  2322. PlayObj        dc.l    0
  2323. PlayFloat    dc.l    0
  2324. PlayFont    dc.l    0
  2325. PipeLogo    dc.l    0
  2326. PipeCluster    dc.l    0
  2327. Time        dc.l    0
  2328. Time_Split    dc.l    0
  2329. Float_Flag    dc.l    0
  2330. Float_X        dc.l    0
  2331. Float_Y        dc.l    0
  2332. Float_Dir    dc.l    0
  2333. Float_Count    dc.l    0
  2334. Float_Math    dc.l    0
  2335. Float_Pointer    dc.l    0
  2336. Float_Add_X1    dc.l    0,1,0,-1
  2337. Float_Add_Y1    dc.l    -1,0,1,0
  2338. Status        dc.l    0
  2339. Eingang_1    dc.l    -1,0,3,-1,2,3,3,1
  2340. Eingang_2    dc.l    -1,2,1,-1,1,2,0,0
  2341. Ausgang_1    dc.l    -1,0,1,-1,0,0,1,3
  2342. Ausgang_2    dc.l    -1,2,3,-1,3,1,2,2
  2343. Dir_Negations    dc.l    2,3,0,1
  2344. Kind        dc.l    -1,5,4,-1,0,3,2,1
  2345. Zero        dc.l    -1,0,1,-1
  2346. One        dc.l    1,0,-1,-1
  2347. Two        dc.l    0,-1,-1,1
  2348. Three        dc.l    -1,-1,0,1
  2349. Four        dc.l    -1,0,-1,1
  2350. Five        dc.l    1,-1,0,-1
  2351. Float_Ptrs    dc.l    -1,5*256,4*256,-1,0*256,3*256,2*256,1*256
  2352. Splitter    dc.l    0
  2353. RND_Counter    ds.l    1
  2354. Crosskind    dc.l    0,4,8,12
  2355. Crossptr    dc.l    5*256+7*32,4*256,5*256,4*256+7*32
  2356. Crossmath    dc.l    1,0,0,1
  2357. Play_Level    ds.l    1
  2358. pwrof10        dc.l    10000000
  2359.         dc.l    1000000
  2360.         dc.l    100000
  2361.         dc.l    10000
  2362.         dc.l    1000
  2363.         dc.l    100
  2364.         dc.l    10
  2365.         dc.l    1
  2366. Score        ds.l    1
  2367. BonusColors    dc.w    $990,$bb0,$dd0,$ff0,$dd0,$bb0,$990,$555
  2368. Special_Jmps_1    dc.l    Special_0,Special_1,Special_2,Special_3
  2369. Target        ds.l    1
  2370. Scrollptr    ds.l    1
  2371. Scrflag        ds.l    1
  2372. Flashdir    ds.w    1
  2373. Flashcol    ds.w    1
  2374. Hiptr        ds.l    1
  2375. Hipos        ds.l    1
  2376. FinishFlag    ds.l    1
  2377. EscFlag        ds.l    1
  2378.  
  2379. *** Buffers
  2380.  
  2381. Level        ds.b    20*20
  2382. Special        ds.b    20*20
  2383. Floats        ds.b    20*20
  2384. Next        ds.b    8
  2385. Dec_Buffer    ds.b    16
  2386. Delay_Flag    ds.l    1
  2387. Flow_Flag    ds.l    1
  2388. Flow_Delay    ds.l    1
  2389. Time_Flag    ds.l    1
  2390. Time_Delay    ds.l    1
  2391. Num_Specials    ds.l    1
  2392. Inter_Cols    ds.w    64
  2393.         dc.w    $00,$10,$20,$30,$40,$50,$60,$70
  2394.         dc.w    $80,$90,$a0,$b0,$c0,$d0,$e0,$f0
  2395.         dc.w    $f0,$e0,$d0,$c0,$b0,$a0,$90,$80
  2396.         dc.w    $70,$60,$50,$40,$30,$20,$10,$00
  2397.         dc.w    $000,$100,$200,$300,$400,$500,$600,$700
  2398.         dc.w    $800,$900,$a00,$b00,$c00,$d00,$e00,$f00
  2399.         dc.w    $f00,$e00,$d00,$c00,$b00,$a00,$900,$800
  2400.         dc.w    $700,$600,$500,$400,$300,$200,$100,$000
  2401.         dc.w    $0,$1,$2,$3,$4,$5,$6,$7
  2402.         dc.w    $8,$9,$a,$b,$c,$d,$e,$f
  2403.         dc.w    $f,$e,$d,$c,$b,$a,$9,$8
  2404.         dc.w    $7,$6,$5,$4,$3,$2,$1,$0
  2405.         ds.w    64
  2406. Inter_Offset    dc.l    0
  2407. RND_Jmps    dc.l    s0,s1,s2,s3,s4,s5,s6,s7,s8,s9,s10,s11,s12
  2408. Joy_Flag    ds.l    1
  2409. Joy_Delay    ds.l    1
  2410. Joy_Revers    ds.l    1
  2411. Change_X    ds.l    1
  2412. Change_Y    ds.l    1
  2413. Text_Flag    ds.l    1
  2414. Text_Delay    ds.l    1
  2415. TitleCols_1    dc.w    $000,$f44,$e44,$e33,$d33,$d33,$c22,$c22
  2416.         dc.w    $b22,$b11,$a11,$a11,$911,$900,$800,$700
  2417.         dc.w    $ff0,$ff0,$ff0,$ff0,$ff0,$ff0,$ff0,$ff0
  2418.         dc.w    $ff0,$ff0,$ff0,$ff0,$ff0,$ff0,$ff0,$ff0
  2419. TitleCols_2    dc.w    $000,$72f,$71d,$61c,$51a,$508,$407,$305
  2420.         dc.w    $ff0,$ff0,$ff0,$ff0,$ff0,$ff0,$ff0,$ff0
  2421.         dc.w    $ff0,$ff0,$ff0,$ff0,$ff0,$ff0,$ff0,$ff0
  2422.         dc.w    $ff0,$ff0,$ff0,$ff0,$ff0,$ff0,$ff0,$ff0
  2423. Goodcols    dc.w    $000,$f0f
  2424.         ds.w    30
  2425.         dc.b    "!!"
  2426. Hiname        ds.b    20
  2427.         dc.b    0
  2428.         EVEN
  2429. Black        dc.w    $000,$000,$000,$000
  2430.  
  2431. **** Strings ****
  2432.  
  2433. Filen_0        dc.b    "Pipeline:Pipeline/data/Pipeline.GFX",0
  2434.         EVEN
  2435. Filen_1        dc.b    "Pipeline:Pipeline/data/PipeObj.GFX",0
  2436.         EVEN
  2437. Filen_2        dc.b    "Pipeline:Pipeline/data/PipeFloat.GFX",0
  2438.         EVEN
  2439. Filen_3        dc.b    "Pipeline:Pipeline/data/PipeFont.GFX",0
  2440.         EVEN
  2441. Filen_4        dc.b    "Pipeline:Pipeline/data/PipeCluster.GFX",0
  2442.         EVEN
  2443. Filen_5        dc.b    "Pipeline:Pipeline/data/PipeLogo.GFX",0
  2444.         EVEN
  2445. Filen_6        dc.b    "Pipeline:Pipeline/data/Pipeline.SCO",0
  2446.         EVEN
  2447. Status_text    dc.b    "SCORE:         HIGH:         LEVEL:  ",0
  2448.         EVEN
  2449. Clear_Line    dc.b    "                                     ",0
  2450.         EVEN
  2451. Cross_Line    dc.b    "CROSS BONUS 100 !!!                  ",0
  2452.         EVEN
  2453. Spec0_Line    dc.b    " FLOWING INTERRUPTED FOR A WHILE...  ",0
  2454.         EVEN
  2455. Spec1_Line    dc.b    "SCORE BONUS 500 !!!                  ",0
  2456.         EVEN
  2457. Spec3_Line    dc.b    "TIME STOPS SOME SECONDS...           ",0
  2458.         EVEN
  2459. Level_Text    dc.b    "LEVEL",0
  2460.         EVEN
  2461. S0_Text        dc.b    "SUDDENLY A WALL APPEARS...           ",0
  2462.         EVEN
  2463. S1_Text        dc.b    "YOUR SCORE WENT UP BY 600 !!!        ",0
  2464.         EVEN
  2465. S2_Text        dc.b    "A BLACK HOLE ARRIVED FROM DEEP SPACE!",0
  2466.         EVEN
  2467. S3_Text        dc.b    "GURU MEDITATION - SOFTWARE FAILURE !!",0
  2468.         EVEN
  2469. S4_Text        dc.b    "WHAT IS THAT ? THE CLOCK STOPS !!!   ",0
  2470.         EVEN
  2471. S5_Text        dc.b    "HUM ! THE OIL STOPS FLOWING !        ",0
  2472.         EVEN
  2473. S6_Text        dc.b    "AARGH ! YOUR SCORE WENT DOWN BY 200 !",0
  2474.         EVEN
  2475. S7_Text        dc.b    "HU ?!? NOTHING HAPPENS ! (NO IDEAS!) ",0
  2476.         EVEN
  2477. S8_Text        dc.b    "YOUR JOYSTICK-PORT HAS CRASHED !!!   ",0
  2478.         EVEN
  2479. S9_Text        dc.b    "TS, TS - YOUR JOYSTICK REVERSES...   ",0
  2480.         EVEN
  2481. S10_Text    dc.b    "UFF !!! WHERE ARE THE WALLS ???      ",0
  2482.         EVEN
  2483. S11_Text    dc.b    "SOME WALLS HAVE CHANGED !            ",0
  2484.         EVEN
  2485. S12_Text    dc.b    "BLOB !!! I CANNOT SEE ANY OIL ?!?    ",0
  2486.         EVEN
  2487. HOF        dc.l    100
  2488.         dc.b    "             CLUSTER"
  2489.         dc.l    90
  2490.         dc.b    "             CLUSTER"
  2491.         dc.l    80
  2492.         dc.b    "             CLUSTER"
  2493.         dc.l    70
  2494.         dc.b    "             CLUSTER"
  2495.         dc.l    60
  2496.         dc.b    "             CLUSTER"
  2497.         dc.l    50
  2498.         dc.b    "             CLUSTER"
  2499.         dc.l    40
  2500.         dc.b    "             CLUSTER"
  2501.         dc.l    30
  2502.         dc.b    "             CLUSTER"
  2503.         dc.l    20
  2504.         dc.b    "             CLUSTER"
  2505.         dc.l    10
  2506.         dc.b    "             CLUSTER"
  2507.         EVEN
  2508. HOFText        dc.b    "       THE PIPELINE HALL OF FAME:",0
  2509.         EVEN
  2510. HOFBuffer    ds.b    42
  2511.         EVEN
  2512. Scroll        dc.b    "                                        "
  2513.         dc.b    "                                        "
  2514.         dc.b    "                PIPELINE                "
  2515.         dc.b    "              ------------              "
  2516.         dc.b    "                                        "
  2517.         dc.b    "                                        "
  2518.         dc.b    "     (C) BY CLUSTER IN MAR/APR 1990     "
  2519.         dc.b    "                                        "
  2520.         dc.b    "                                        "
  2521.         dc.b    "                                        "
  2522.         dc.b    "                                        "
  2523.         dc.b    "           CONCEPT  EMPIRE (PIPEMANIA)  "
  2524.         dc.b    "                                        "
  2525.         dc.b    "  ADDITIONAL IDEAS  ANDRE WICHMANN      "
  2526.         dc.b    "                    MARTIN ROSENKRANZ   "
  2527.         dc.b    "                    GUIDO WEGENER       "
  2528.         dc.b    "                                        "
  2529.         dc.b    "       PROGRAMMING  ANDRE WICHMANN      "
  2530.         dc.b    "                                        "
  2531.         dc.b    "     GAME GRAPHICS  ANDRE WICHMANN      "
  2532.         dc.b    "                                        "
  2533.         dc.b    "             LOGOS  MARTIN ROSENKRANZ   "
  2534.         dc.b    "                                        "
  2535.         dc.b    "    CHARSET DESIGN  COMMODORE (C64)     "
  2536.         dc.b    "                                        "
  2537.         dc.b    "CHARSET CONVERSION  MARTIN ROSENKRANZ   "
  2538.         dc.b    "                                        "
  2539.         dc.b    "             MUSIC  ANDRE WICHMANN      "
  2540.         dc.b    "                                        "
  2541.         dc.b    "         ASSEMBLER  DEVPAC V2 (HISOFT)  "
  2542.         dc.b    "                                        "
  2543.         dc.b    "      SOUND EDITOR  EAS SOUNDTRACKER    "
  2544.         dc.b    "                                        "
  2545.         dc.b    "                                        "
  2546.         dc.b    "                                        "
  2547.         dc.b    "                                        "
  2548.         dc.b    "  THIS PROGRAM IS FREEWARE AND MAY BE   "
  2549.         dc.b    " COPIED AS LONG AS THE DOC-FILE IS IN-  "
  2550.         dc.b    " CLUDED, NO CHANGES ARE SPREAD AND -NO- "
  2551.         dc.b    "  PROFIT IS MADE WITH DISTRIBUTION !!!  "
  2552.         dc.b    "                                        "
  2553.         dc.b    "                                        "
  2554.         dc.b    "                                        "
  2555.         dc.b    "                                        "
  2556.         dc.b    "    MESSAGES TO THE FOLLOWING PEOPLE    "
  2557.         dc.b    "                                        "
  2558.         dc.b    "                                        "
  2559.         dc.b    "     PHILIPP - SORRY THAT I COULD NOT   "
  2560.         dc.b    "               INCLUDE THE SFX, BUT     "
  2561.         dc.b    "               THERE WAS NOT ENOUGH     "
  2562.         dc.b    "               MEMORY FOR THAT !        "
  2563.         dc.b    "                                        "
  2564.         dc.b    "        LUTZ - PLAYER !                 "
  2565.         dc.b    "                                        "
  2566.         dc.b    "         HCF - PLAYER !                 "
  2567.         dc.b    "                                        "
  2568.         dc.b    "   MARTIN M. - EPSON DRIVE !?!          "
  2569.         dc.b    "                                        "
  2570.         dc.b    "       GATOR - STILL SWAPPING AS HELL ? "
  2571.         dc.b    "                                        "
  2572.         dc.b    "                                        "
  2573.         dc.b    "                                        "
  2574.         dc.b    "                                        "
  2575.         dc.b    "SORRY TO ALL NTSC-USERS, BUT I HOPE THAT"
  2576.         dc.b    "  THIS GAME WILL STILL BE PLAYABLE, MY  "
  2577.         dc.b    "NEXT PROGRAM WILL NOT USE THE WHOLE PAL-"
  2578.         dc.b    "          SCREEN ! (I HOPE...)          "
  2579.         dc.b    "                                        "
  2580.         dc.b    "                                        "
  2581.         dc.b    "                                        "
  2582.         dc.b    "                                        "
  2583.         dc.b    " THE SCORES WILL BE SAVED (I HATE GAMES "
  2584.         dc.b    " WHERE THE SCORES ARE NOT SAVED !!), SO "
  2585.         dc.b    "      TRY TO BEAT THE HIGH-SCORE !      "
  2586.         dc.b    "                                        "
  2587.         dc.b    "                                        "
  2588.         dc.b    "                                        "
  2589.         dc.b    "                                        "
  2590.         dc.b    " SEND BUG REPORTS, IMPROVEMENTS, IDEAS, "
  2591.         dc.b    "  MONEY OR JUST A FRIENDLY LETTER TO:   "
  2592.         dc.b    "                                        "
  2593.         dc.b    "            ANDRE WICHMANN              "
  2594.         dc.b    "            POSENER WEG 4               "
  2595.         dc.b    "            5300 BONN 1                 "
  2596.         dc.b    "            WEST GERMANY                "
  2597.         dc.b    "                                        "
  2598.         dc.b    "                                        "
  2599.         dc.b    "                                        "
  2600.         dc.b    "IMPROVED VERSIONS WILL COME.PROJECTS NOT"
  2601.         dc.b    "        FINISHED AT THE MOMENT:         "
  2602.         dc.b    "                                        "
  2603.         dc.b    "  ORIGINAL 64'S BOULDER DASH, DCAT V2,  "
  2604.         dc.b    "     BITETRIS AND SOME OTHER STUFF.     "
  2605.         dc.b    "                                        "
  2606.         dc.b    "                                        "
  2607.         dc.b    "                                        "
  2608.         dc.b    "                                        "
  2609.         dc.b    "                                        "
  2610.         dc.b    "                                        "
  2611.         dc.b    "                                        "
  2612.         dc.b    "                                        "
  2613.         dc.b    "                                        "
  2614.         dc.b    "                                        "
  2615.         dc.b    "                                        "
  2616.         dc.b    "                                        "
  2617.         dc.b    "                                        "
  2618.         dc.b    "                                        "
  2619.         dc.b    "                                        "
  2620.         dc.b    "                                        "
  2621.         dc.b    "                                        "
  2622.         dc.b    "                                        "
  2623.         dc.b    "                                        "
  2624.         dc.b    "                                        "
  2625.         dc.b    "                                        "
  2626.         dc.b    "                                        "
  2627.         dc.b    "                                        "
  2628.         dc.b    "                                        "
  2629.         dc.b    "                                        "
  2630.         dc.b    0
  2631.         EVEN
  2632. Good_text    dc.b    "GOOD!",0
  2633.         EVEN
  2634. Goodtext_2    dc.b    "    YOU HAVE REACHED THE NEXT LEVEL!",0
  2635.         EVEN
  2636. Goodtext_3    dc.b    "    YOU HAVE EARNED A SPECIAL-BONUS!",0
  2637.         EVEN
  2638. Goodtext_4    dc.b    " SPECIALS USED:    BONUS SCORE:       ",0
  2639.         EVEN
  2640. Overtext_1    dc.b    "OH NO",0
  2641.         EVEN
  2642. Overtext_2    dc.b    "      .....YOU LOST THE GAME.....",0
  2643.         EVEN
  2644. Overtext_3    dc.b    "     YOU ENTERED THE HALL OF FAME !",0
  2645.         EVEN
  2646. Overtext_4    dc.b    "NO HIGH-SCORE THIS TIME, BUT NEXT GAME ?",0
  2647.         EVEN
  2648. Overtext_5    dc.b    "YOUR NAME:--------------------",0
  2649.         EVEN
  2650. Overtext_6    dc.b    "          A B C D E F G H I J",0
  2651.         EVEN
  2652. Overtext_7    dc.b    "          K L M N O P Q R S T",0
  2653.         EVEN
  2654. Overtext_8    dc.b    "          U V W X Y Z .   D E",0
  2655.         EVEN
  2656. Overtext_9    dc.b    "           YOUR SCORE:       ",0
  2657.         EVEN
  2658.  
  2659.